集中 DCP 元数据初始化时机,修复投机解码路径下元数据过时或缺失导致的崩溃。
本 PR 是一个高质量的 bugfix 和重构,解决了投机解码与 DCP 结合使用时的关键问题。建议 **精读** 以下关键设计决策: 1. **集中化元数据初始化**: 将 `dcp_local_seq_lens` 的计算统一到 `execute_model` 中一个明确的时间点(在最终 `InputBatch` 构建和分区之后),而不是分散在多个路径中。这是一个清晰且可维护的模式。 2. **调用方拥有缓冲区模式**: `maybe_prepare_dcp_local_seq_lens` 写入调用方提供的缓冲区并返回其视图,确保了 CUDA 图捕获和重放的安全性,并允许微批处理拥有独立缓冲区。 3. **微批处理 DCP 重计算**: 微批处理切片时从自己的截断 `seq_lens` 重新计算 DCP 长度,而不是复制父批处理的值,这是正确性的关键。 对于希望理解 vLLM 内部并行策略(DCP, PCP, DBO)交互的工程师,或参与投机解码功能开发的人员,本 PR 的实现细节尤其值得关注。
参与讨论