已实现

v05_decode_slots

本版本引入什么

本版本加入固定解码槽位。运行中的解码请求会获得稳定的槽位 ID,解码输入可以按最大槽位数构造固定形状。

为什么引入

连续批处理使活跃请求集合持续变化,而 CUDA Graph 和静态解码缓冲区需要稳定形状和可预测的张量地址。

解码槽位连接了这两个方向。

核心原则

槽位是解码批次中的稳定位置。请求进入槽位,经过多个步骤生成词元,并在结束时释放槽位。

引擎可以按 max_decode_slots 构建解码张量,未使用的槽位则通过活跃掩码或占位词元表示。

建议对比的文件

  • scheduler.py:槽位分配和释放。
  • engine.py:固定宽度解码输入构造。
  • forward_params.py:槽位元数据。
  • layer/gqa.py:按槽位/请求映射索引的解码注意力。

保留的权衡

槽位增加了状态管理,也可能携带未激活的通道。这是让解码步骤更静态所付出的代价。