From 9a6f8e599204aa37481f5f37a1b20938aee98d5c Mon Sep 17 00:00:00 2001 From: "Wang, FangYuan" <39615225+At1a8@users.noreply.github.com> Date: Tue, 7 Jul 2026 14:57:57 +0800 Subject: [PATCH] [AMD] Fix DeepSeek V4 MTP accuracy issue (#30333) --- .../srt/mem_cache/deepseek_v4_compress_state.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/sglang/srt/mem_cache/deepseek_v4_compress_state.py b/python/sglang/srt/mem_cache/deepseek_v4_compress_state.py index 735eb0430..dff122578 100644 --- a/python/sglang/srt/mem_cache/deepseek_v4_compress_state.py +++ b/python/sglang/srt/mem_cache/deepseek_v4_compress_state.py @@ -129,7 +129,16 @@ class CompressStatePool: dtype=dtype, device=device, enable_memory_saver=enable_memory_saver ) if not online: - self.kv_score_buffer[-1].clear() + if _is_hip and ratio == 128: + # Request-scoped C128 state is addressed by req_pool_idx (or a + # per-request ring). The pool is allocated with torch.empty(), + # so a cold server can otherwise read uninitialized partial + # states before a request slot has been written for the first + # time. Initialize all C128 rows to the empty-state sentinel; + # C4 keeps the historical last-row sentinel behavior. + self.kv_score_buffer.clear() + else: + self.kv_score_buffer[-1].clear() def _alloc_kv_score_buffer( self, *, dtype: torch.dtype, device: str, enable_memory_saver: bool