Prhub

#49350 [ROCm][CI] skip moe weight padding for eplb

原始 PR 作者 divakar-amd 合并时间 2026-07-22 23:18 文件变更 1 提交数 1 评论 0 代码增减 +4 / -1

执行摘要

ROCm 平台 EPLB 场景跳过 MoE 权重填充

EPLB 需要连续的权重才能进行视图/重排操作,而 ROCm 平台的 MoE padding 会在权重张量末尾填充字节,破坏连续性,导致弹性专家均衡缩放测试 test_elastic_ep_scaling[sync_eplb] 失败。

值得快速合入。变更量小、逻辑明确,是 ROCm EPLB 功能依赖的三个修复中的最后一块。虽然无测试直接验证此修改,但前序修复已有相关测试覆盖。

讨论亮点

本 PR review 评论极少,claude[bot] 自动评论指出来自 fork 的 PR 需要维护者触发一次性 review;AndreasKaratzas 给予了批准。未发现实质性讨论。

实现拆解

  1. vllm/model_executor/layers/fused_moe/unquantized_fused_moe_method.py 文件的 _maybe_pad_weight 方法中,新增 not self.moe.moe_parallel_config.enable_eplb 条件,当 EPLB 启用时跳过 padding。
  2. 更新了相应的注释,说明跳过原因。
  3. 仅修改一个文件,改动量为 4 行增加、1 行删除,逻辑清晰。
文件 模块 状态 重要度
vllm/model_executor/layers/fused_moe/unquantized_fused_moe_method.py MoE 层 modified 5.17

关键符号

_maybe_pad_weight

关键源码片段

vllm/model_executor/layers/fused_moe/unquantized_fused_moe_method.py data-contract

实现跳过 padding 的核心逻辑,在 `_maybe_pad_weight` 中增加 EPLB 检测条件。

def _maybe_pad_weight(self, weight: torch.Tensor) -> torch.Tensor:
    # Pad the weight tensor. This is an optimization on ROCm platform, which
    # can benefit from tensors located far enough from one another in memory.
    # Skip padding when EPLB is enabled because EPLB requires contiguous
    # weights for the view/rearrangement operations.
    if (
        envs.VLLM_ROCM_MOE_PADDING
        and current_platform.is_rocm()
        and not self.moe.moe_parallel_config.enable_eplb # 新增条件:启用 EPLB 时跳过
        and weight.stride(-1) == 1
        and (weight.stride(-2) * weight.element_size()) % 512 == 0
    ):
        num_pad = 256 // weight.element_size()
        weight = F.pad(weight, (0, num_pad), "constant", 0)[..., :-num_pad]
        torch.accelerator.empty_cache()
​
    return weight

评论区精华

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

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

风险与影响

低风险。变更仅新增一个条件判断,不影响原有 padding 逻辑的默认行为。需注意检查 moe_parallel_config 属性在所有使用的上下文中是否正确初始化,但根据已有代码结构,该属性通常在初始化时设置。

影响范围仅限于 ROCm 平台且启用 EPLB 的情形。对于其他平台或未启用 EPLB 的情形,行为无变化。解决了 EPLB 测试的阻塞问题,属于定向修复。

缺少直接测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论