perf: 消除 PagedCache.write 中的 position_ids GPU 同步,解码提速 15%

- CacheView.write 用 total_len - k.size(1) 推导 start_pos,替代 position_ids[0,0].item()

- 移除 GQA/MLA/DecoderBlock 中不再使用的 position_ids 参数

- PagedCache.write 参数 position_ids:Tensor → start_pos:int
This commit is contained in:
2026-05-14 15:37:48 +08:00
parent a8e2a1ba45
commit 6d6ef99e66
4 changed files with 11 additions and 15 deletions
+4 -4
View File
@@ -241,14 +241,13 @@ class PagedCache:
self,
layer_id: int,
page_table: Tensor,
position_ids: Tensor,
start_pos: int,
k: Tensor,
v: Tensor,
) -> None:
seq_len = k.size(1)
if seq_len == 0:
return
start_pos = position_ids[0, 0].item()
page_size = self.page_size
written = 0
first_page = start_pos // page_size
@@ -289,8 +288,9 @@ class CacheView:
self._page_table = page_table
self._total_len = total_len
def write(self, layer_id: int, position_ids: Tensor, k: Tensor, v: Tensor) -> None:
self._cache.write(layer_id, self._page_table, position_ids, k, v)
def write(self, layer_id: int, k: Tensor, v: Tensor) -> None:
start_pos = self._total_len - k.size(1)
self._cache.write(layer_id, self._page_table, start_pos, k, v)
def gather(self, layer_id: int) -> Tuple[Tensor, Tensor]:
return self._cache.gather(layer_id, self._page_table, self._total_len)