执行摘要
修复 ROCm 上 speculative decoding 与 MTP 方法及多推测 tokens 的兼容性问题,支持 DeepSeek v3.2。
根据 PR body,目的是启用 speculative decoding with the MTP method and num_speculative_tokens > 1 for DeepSeek v3.2 and ROCM_AITER_MLA_SPARSE。原检查在 eagle SpecDecodeBaseProposer.propose 中只验证了 attn_metadata 的最后一个值,由于迭代顺序变化导致类型从 ROCMAiterMLASparseMetadata 变为 DeepseekV32IndexerMetadata,从而引发 ValueError。
建议精读此 PR,以学习如何处理注意力元数据类型验证和重构函数接口。关注 build_per_group_and_layer_attn_metadata 的设计决策,它分离了组和层元数据,提高了代码清晰度和健壮性。
review 中,gemini-code-assist[bot] 指出原类型检查逻辑脆弱,可能引发 KeyError,因跨模型数据结构引用。作者 gronsti-amd 反驳并引入 draft_attn_metadata_per_group 变量来简化验证,避免依赖层名,提高了健壮性。MatthewBonanni 建议统一命名如 per_group_attn_metadata 并批准。结论是作者通过重构解决了潜在问题,优化了设计。
参与讨论