Fix Stale Encoder Cache After Weight Update (#45093)

Signed-off-by: littlecircle0730 <littlecircle0730@gmail.com>
This commit is contained in:
littlecircle0730
2026-06-18 09:32:10 +00:00
committed by GitHub
parent 5fd3b276f8
commit 08985351f3
2 changed files with 12 additions and 0 deletions
+6
View File
@@ -898,6 +898,12 @@ class LLM(BeamSearchOfflineMixin, PoolingOfflineMixin, OfflineInferenceMixin):
def finish_weight_update(self) -> None:
"""Finish the current weight update."""
self.llm_engine.collective_rpc("finish_weight_update")
# Invalidate cached state computed with the old weights so it isn't
# reused for subsequent requests:
# - prefix cache: KV blocks computed with the old weights
# - encoder cache: multimodal embeddings keyed only by mm_hash
self.llm_engine.reset_prefix_cache()
self.llm_engine.reset_encoder_cache()
def __repr__(self) -> str:
"""Return a transformers-style hierarchical view of the model."""
+6
View File
@@ -1109,3 +1109,9 @@ class AsyncLLM(EngineClient):
async def finish_weight_update(self) -> None:
"""Finish the current weight update."""
await self.collective_rpc("finish_weight_update")
# Invalidate cached state computed with the old weights so it isn't
# reused for subsequent requests:
# - prefix cache: KV blocks computed with the old weights
# - encoder cache: multimodal embeddings keyed only by mm_hash
await self.reset_prefix_cache()
await self.reset_encoder_cache()