Prhub

#7577 [veomni] feat: DeepSeek V4 QAT bf16 fake quant training

原始 PR 作者 wuxibin89 合并时间 2026-08-28 10:37 文件变更 5 提交数 4 评论 0 代码增减 +13 / -5

执行摘要

DeepSeek V4 支持 QAT bf16 伪量化训练

PR 标题和 body 表明目标是支持 DeepSeek V4 的 QAT bf16 伪量化训练,并关联 VeOmni 侧的 PR#1089。通过引入 qat_implementation 配置项,允许用户选择量化实现(如 fp8_blockwise),同时调整 GSPO 损失聚合方式,使其更灵活。

该 PR 值得关注,因为它引入了新的训练模式(QAT)并增强了 GSPO 损失的灵活性。建议补充单元测试覆盖新配置项和损失聚合逻辑,并确认与 VeOmni 侧 PR 的兼容性。

讨论亮点

该 PR 没有 Review 审核和评论,因此没有公开讨论内容。

实现拆解

  1. 新增 QAT 配置项:在 verl/workers/config/engine.pyVeOmniEngineConfig 中添加 qat_implementation 字段,默认值为 "none",并同步更新 verl/trainer/config/engine/veomni.yamlverl/trainer/config/_generated_ppo_veomni_trainer.yaml,为 VeOmni 引擎提供量化实现选择。
  2. 调整 GSPO 损失聚合方式:修改 verl/trainer/ppo/core_algos.pycompute_policy_loss_gspo 函数,将原本硬编码的 loss_agg_mode="seq-mean-token-mean" 改为使用传入的参数 loss_agg_mode,默认仍为 "seq-mean-token-mean",但支持其他模式。
  3. 更新训练示例脚本:在 examples/grpo_trainer/run_deepseek_v4_veomni.sh 中,将模型路径改为 DeepSeek-V4-Flash-Base,设置 qat_implementation=fp8_blockwise,并添加 max_model_len 配置,调整实验名称和响应长度等参数。
  4. 无测试变更:本次改动没有对应的测试文件更新,但配置和代码的改动较小,风险可控。
文件 模块 状态 重要度
verl/trainer/ppo/core_algos.py 训练算法 modified 5.74
verl/workers/config/engine.py 引擎配置 modified 4.96
verl/trainer/config/_generated_ppo_veomni_trainer.yaml 配置 modified 3.57
verl/trainer/config/engine/veomni.yaml 配置 modified 3.54
examples/grpo_trainer/run_deepseek_v4_veomni.sh 示例脚本 modified 3.49

关键符号

compute_policy_loss_gspo

关键源码片段

verl/trainer/ppo/core_algos.py core-logic

修改 GSPO 策略损失聚合方式,从硬编码改为可配置,影响训练核心逻辑。

# verl/trainer/ppo/core_algos.py
def compute_policy_loss_gspo(...):
    # ...
    # 原实现硬编码为 seq-mean-token-mean,现改为支持传入的 loss_agg_mode
    pg_loss = agg_loss(
        loss_mat=pg_losses,
        loss_mask=response_mask,
        loss_agg_mode=loss_agg_mode, # 默认为 "seq-mean-token-mean"
        **config.global_batch_info
    )
    # ...
verl/workers/config/engine.py configuration

新增 `qat_implementation` 配置项,是 QAT 功能的核心配置入口。

# verl/workers/config/engine.py
@dataclass
class VeOmniEngineConfig(EngineConfig):
    # ...
    qat_implementation: str = "none" # 新增 QAT 实现选择,默认 none(关闭)
    # ...

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 测试缺失:没有为新增的 qat_implementation 配置项和 GSPO 损失聚合方式的改动添加单元测试,存在回归风险。
  2. 配置一致性qat_implementation 是新增字段,若 VeOmni 侧未同步处理,可能导致配置被忽略或报错,但默认值为 none 保证了向后兼容。
  3. GSPO 损失聚合方式变更:修改了 compute_policy_loss_gspo 的默认行为,虽然默认值仍是 seq-mean-token-mean,但调用方必须传入正确的 loss_agg_mode,否则可能改变训练行为,需确认现有调用是否兼容。
  1. 用户影响:支持 DeepSeek V4 的 QAT 训练,用户可通过配置 qat_implementation 启用伪量化,提升训练效率或降低显存占用。
  2. 系统影响:VeOmni 引擎相关的配置结构扩展,需保持与 VeOmni 项目的同步。
  3. 团队影响:为后续 QAT 相关工作提供基础,但需补充测试和文档。
缺少测试覆盖 核心路径变更 配置一致性风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论