执行摘要
为 MoE BF16 EP prefill 阶段添加 Paddle batched_gemm 支持,对齐训练实现。
根据PR body中的描述,动机是“将MoE BF16精度下的EP prefill group_gemm和swiglu对齐训练”。这意味着推理阶段的实现需要与训练保持一致,以确保计算正确性和模型输出的一致性。作者在body中进一步说明:“由于batched_gemm算子第三个输入需要list,会破坏decode进CUDAGraph,暂不适配”,这解释了为什么只针对prefill阶段进行适配。
建议技术管理者和工程师精读此PR,重点关注:
- 设计决策:为何选择batched_gemm而非原有compute_ffn,以及如何权衡CUDAGraph兼容性。
- 风险点:down_proj_bias处理缺失和外部依赖函数可用性,需确认是否在后续提交中修复。
- 测试补充:建议添加FD_MOE_PROB_IN_ADVANCE相关的单元测试,确保新路径正确性。
PR展示了推理与训练对齐的典型模式,值得学习其实现思路。
review讨论中,fastdeploy-bot提出了多个关键问题:
- down_proj_bias缺失处理:新代码使用batched_gemm后,未处理layer.with_bias=True时的down_proj_bias,可能导致计算结果不正确。
- 函数名不一致:使用的paddlefleet_ops.fused_swiglu_scale函数与其他backend(如blackwell和deepgemm)中的paddlefleet_ops.fuse_weighted_swiglu_fp8_quant不一致,且可能不存在,存在运行时AttributeError风险。
- 外部依赖未验证:paddlefleet_ops.fused_swiglu_scale是外部依赖函数,其可用性未在测试中验证。
- 测试覆盖不足:缺少对新代码路径的测试覆盖,特别是FD_MOE_PROB_IN_ADVANCE相关的逻辑。
- 代码一致性:using_weighted_combine参数硬编码为False,与其他backend使用环境变量控制的方式不一致。
讨论中未显示这些问题是否被解决,但PR最终被合并,可能作者在后续提交中进行了修复或确认。
参与讨论