Prhub

#44946 [Test] Fix one-sided MNNVL alltoall test workspace under-reservation

原始 PR 作者 zyongye 合并时间 2026-06-11 00:43 文件变更 1 提交数 1 评论 0 代码增减 +5 / -0

执行摘要

修复 MNNVL one-sided 测试 workspace 不足

test_one_sided_dispatch_combine 测试在初始化 FlashInfer one-sided MoeAlltoAll workspace 时未指定 fp8 block-scale payload(a1q_scale)的字节数,导致 dispatch 区域预留不足,后续 combine 段溢出触发 FlashInfer 内部断言失败:"workspace insufficient for combine payload region"。

此 PR 为一个测试 bugfix,代码简单,对理解 FlashInfer one-sided 机制有一定参考价值,但无需深度精读。

讨论亮点

无 review 讨论。

实现拆解

tests/distributed/test_mnnvl_alltoall.py_one_sided_data_worker 函数中,调用 manager.initialize() 时增加参数 dispatch_scale_bytes_per_token=hidden_size // 16,使 workspace 预留大小与后续 dispatch 的实际 payload 匹配。

文件 模块 状态 重要度
tests/distributed/test_mnnvl_alltoall.py 分布式通信 modified 4.1

关键源码片段

tests/distributed/test_mnnvl_alltoall.py test-coverage

修复测试用例 `_one_sided_data_worker` 中 workspace 初始化参数缺失问题,是唯一变更文件。

# File: tests/distributed/test_mnnvl_alltoall.pydef _one_sided_data_worker(rank, world_size):
    from vllm.distributed.device_communicators.all2all import (
        FlashInferNVLinkOneSidedManager,
    )
    # ... 省略上下文代码 ...
    hidden_size = 256
    tokens_per_rank = 32
    experts_per_token = 2
    num_experts = world_size * 8
​
    # Initialize the one-sided manager
    manager = FlashInferNVLinkOneSidedManager(cpu_group)
    manager.initialize(
        max_num_tokens=tokens_per_rank,
        top_k=experts_per_token,
        num_experts=num_experts,
        hidden_size=hidden_size,
        # 关键修复:声明 fp8 block-scale payload 按每 token 的字节数,
        # 之前缺省为 0 导致 dispatch 区域预留不足,combine 段溢出。
        dispatch_scale_bytes_per_token=hidden_size // 16,
    )
    # ... 后续创建 a1q, a1q_scale, topk_ids 等数据进行 dispatch/combine ...

评论区精华

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

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

风险与影响

低风险:仅改动测试文件逻辑,不涉及生产代码。但如果 dispatch_scale_bytes_per_token 的计算方式(hidden_size // 16)与未来实际 payload 不一致,可能再次出现类似问题。

仅限于 tests/distributed/test_mnnvl_alltoall.py::test_one_sided_dispatch_combine 这一测试用例,修复后该用例可正常通过。不影响其他测试或功能。

测试配套 低影响

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论