Prhub

#6644 [veomni] fix: pass mixed precision config to veomni

原始 PR 作者 Luosuu 合并时间 2026-06-08 10:08 文件变更 1 提交数 2 评论 0 代码增减 +5 / -3

执行摘要

修复 VeOmni 混合精度配置传递

VeOmni 的 API 从旧版 enable_mixed_precision 布尔值升级为 MixedPrecisionConfig 对象,原有代码仅在做模型并行化时临时转换,但基础模型加载的 dtype 选择仍直接使用原始布尔值,导致两者不一致。PR body 明确说明根因在于 'VeOmni API expects mixed_precision instead of the old enable_mixed_precision boolean'。

作为一个接口对齐的小型 bugfix,变更清晰、自包含,已获 Committer 批准,可以直接合并,无需额外 review。

讨论亮点

没有实质性 review 讨论。仅 Gemini Code Assist 机器人发表了无内容的评论(告知其功能将于 2026 年停止)。

实现拆解

  1. 引入 MixedPrecisionConfig 导入:在文件头导入新增 from veomni.arguments import MixedPrecisionConfig, OpsImplementationConfig,确保可实例化配置对象。
  2. 创建统一配置对象:在 _build_model_optimizer 方法中,将 self.engine_config.mixed_precision 布尔值包装为 veomni_mixed_precision_config = MixedPrecisionConfig(enable=self.engine_config.mixed_precision),作为后续所有混合精度判断的唯一来源。
  3. 对齐模型加载 dtype:将 build_foundation_model 的 torch_dtype 参数判断从 self.engine_config.mixed_precision 改为 veomni_mixed_precision_config.enable,保证逻辑等价且数据源一致。
  4. 修正并行化 API 参数:将 build_parallelize_model 调用中的 enable_mixed_precision=... 替换为 mixed_precision=veomni_mixed_precision_config,符合 VeOmni 新 API 签名。
文件 模块 状态 重要度
verl/workers/engine/veomni/transformer_impl.py 引擎 modified 6.32

关键符号

_build_model_optimizer

关键源码片段

verl/workers/engine/veomni/transformer_impl.py dependency-wiring

唯一变更文件,集中修复 VeOmni 引擎的混合精度配置传递,涉及导入、配置对象创建和两处参数调用。

# 文件:verl/workers/engine/veomni/transformer_impl.py
# 关键变更集中在 _build_model_optimizer 方法内
​
from veomni.arguments import MixedPrecisionConfig, OpsImplementationConfig # 新增导入
​
class VeOmniEngine:
    def _build_model_optimizer(self):
        # 现有 ops_implementation 构建 ...
​
        # 新增:将 engine_config.mixed_precision 布尔值包装为 VeOmni 期望的 MixedPrecisionConfig 对象
        # 这样 build_parallelize_model 就能收到正确的配置类型
        veomni_mixed_precision_config = MixedPrecisionConfig(
            enable=self.engine_config.mixed_precision
        )
​
        # 修改前:直接使用 self.engine_config.mixed_precision 判断 dtype
        # 修改后:使用 veomni_mixed_precision_config.enable,保证与并行化参数同源
        module = build_foundation_model(
            config_path=self._get_model_config_path(),
            weights_path=self.model_config.local_path,
            torch_dtype="float32" if veomni_mixed_precision_config.enable else "bfloat16",
            # ... 其他参数不变 ...
        )
​
        # 修改前:传递布尔值给 enable_mixed_precision 参数
        # 修改后:传递 MixedPrecisionConfig 对象给 mixed_precision 参数,对齐 VeOmni 新版 API
        module = build_parallelize_model(
            module,
            init_device=self.engine_config.init_device,
            weights_path=self.model_config.local_path,
            enable_full_shard=self.engine_config.enable_full_shard,
            mixed_precision=veomni_mixed_precision_config, # 原为 enable_mixed_precision=self.engine_config.mixed_precision
            # ... 其他参数不变 ...
        )

评论区精华

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

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

风险与影响

本次变更仅涉及一个文件内的三处修改,且逻辑等价(布尔值到 MixedPrecisionConfig 的包装),回归风险极低。主要风险在于若 VeOmni 的 MixedPrecisionConfig 构造函数签名未来变动,可能需同步更新。但未引入新的测试覆盖,若 VeOmni 环境安装有滞后,CI 可能无法验证。

仅影响 VeOmni 后端引擎的混合精度配置流程,对使用其他引擎(FSDP、Megatron、vLLM)的训练不受影响。用户无需调整配置,无外部 API 变更。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论