Prhub

#6929 [fully_async] feat: Adapt vLLM >=0.18 and vLLM < 0.19 for Ascend NPU

原始 PR 作者 zhouhengan1211 合并时间 2026-07-06 09:44 文件变更 1 提交数 1 评论 0 代码增减 +2 / -2

执行摘要

降低 vLLM NPU 补丁版本下限至 0.18

PR body 说明:在 vLLM 0.18.0 版本上遇到了与 0.19.0 相同的 NPU 兼容性问题,因此需要将补丁范围向下扩展。参考了相关 PR #6886。

该 PR 改动极小且逻辑清晰,无需精读。对于 NPU + vLLM 0.18.x 的用户,建议关注后续是否会有针对该版本的进一步修复。

讨论亮点

无人工 review 讨论,仅 Gemini Code Assist 自动生成了代码审查总结,但未提出具体评论。wuxibin89 直接批准了 PR。

实现拆解

  1. 修改版本阈值:在 verl/utils/vllm/npu_vllm_patch.py 文件中,将 elif _VLLM_VERSION >= version.parse("0.19.0") 修改为 elif _VLLM_VERSION >= version.parse("0.18.0"),同时更新注释以反映新的版本范围。
  2. 保持补丁内容不变:分支内的 patch_vllm013_rotary_emb() 调用和 FusedMoE.weight_loader 包装逻辑保持不变,与 0.19.0 版本的处理方式相同。
  3. 无测试和配置变更:仅涉及源码修改,未添加新的测试用例或配置文件。
文件 模块 状态 重要度
verl/utils/vllm/npu_vllm_patch.py 补丁工具 modified 5.07

关键源码片段

verl/utils/vllm/npu_vllm_patch.py core-logic

唯一变更文件,修改了 vLLM 版本补丁触发的版本下限。

# verl/utils/vllm/npu_vllm_patch.py ( 关键版本判断逻辑 )from packaging import version
import vllm_VLLM_VERSION = version.parse(vllm.__version__)# 已有处理 0.13.0 - 0.14.0 的分支 ( 未改动 )
if _VLLM_VERSION >= version.parse("0.13.0") and _VLLM_VERSION <= version.parse("0.14.0"):
    from vllm.model_executor.layers.fused_moe import FusedMoE
    patch_vllm013_rotary_emb()
    FusedMoE.weight_loader = vllm_v013_weight_loader_method_wrapper(FusedMoE.weight_loader)# [ 本次修改 ] 将原 0.19.0 阈值降低至 0.18.0,使其覆盖 vLLM 0.18.x 版本
elif _VLLM_VERSION >= version.parse("0.18.0"): # 原为 0.19.0
    # 禁用 flash_attn (NPU 不兼容 ) 并适配 MoE 权重加载
    from vllm.model_executor.layers.fused_moe import FusedMoE
    patch_vllm013_rotary_emb()
    FusedMoE.weight_loader = vllm_v013_weight_loader_method_wrapper(FusedMoE.weight_loader)

评论区精华

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

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

风险与影响

回归风险:低。由于只是将已验证的补丁逻辑应用到更早的版本号分支上,且补丁本身在 0.19.0 上已运行稳定,风险很小。若 vLLM 0.18.0 与 0.19.0 在相关代码路径上存在差异(如 rotary embedding 或 FusedMoE 接口),可能仍需二次适配。建议在 vLLM 0.18.0 + NPU 环境下进行端到端验证。

影响范围:特化场景。仅影响使用 Ascend NPU 且 vLLM 版本为 0.18.x 的用户,该用户群体现在可以直接使用最新 main 分支而无需手动修改代码。对 vLLM 0.13-0.14、0.19+ 及 CUDA 用户无影响。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论