Prhub

#40175 Remove outdated tests test_mixtral_moe and test_duplicated_ignored_sequence_group

vllm-project/vllm · 作者 mgoin · 合并时间 2026-04-18 07:49

分析状态 已生成
文件变更 2提交数 1 · 评论 0
代码增减 +0 / -146
cleanup test v1 moe

执行摘要

删除两个过时测试函数以清理测试套件。

移除过时测试以减少维护成本,test_duplicated_ignored_sequence_group被skip的原因为'In V1, we reject tokens > max_seq_len',表明在v1架构下该测试已失效;test_mixtral_moe可能因实现变更而过时,具体动机在PR body中未详细说明,但标题指向清理目的。

该PR值得简单审查以确认测试确实过时;建议关注是否有替代测试或相关功能仍需验证,避免回归风险。

讨论亮点

review中无实质讨论,只有bot评论(如Claude Code Review和gemini-code-assist[bot]),无争议点或设计权衡。

实现拆解

  1. 识别过时测试:基于代码上下文,确定test_mixtral_moe和test_duplicated_ignored_sequence_group不再适用。
  2. 删除test_mixtral_moe及相关导入:在文件tests/kernels/moe/test_moe.py中,移除函数test_mixtral_moe,并删除不必要的导入(如transformers.MixtralConfiginit_distributed_environment等),以简化依赖关系。
  3. 删除test_duplicated_ignored_sequence_group:在文件tests/test_regression.py中,移除函数test_duplicated_ignored_sequence_group,该函数原本被skip且已无效。
  4. 影响分析:减少测试套件大小,避免无效测试执行,可能加快CI运行时间;但需确保其他测试覆盖相关逻辑以避免回归。
    无测试、配置、schema或部署配套改动,仅测试文件删除。
文件 模块 状态 重要度
tests/kernels/moe/test_moe.py MOE 测试 modified 5.84
tests/test_regression.py 回归测试 modified 4.42
tests/kernels/moe/test_moe.py test-coverage

包含被删除的 test_mixtral_moe 测试函数,该函数验证 Mixtral MOE 实现与 HuggingFace 的兼容性,移除后可能影响 MOE 相关测试覆盖。

# 被移除的 test_mixtral_moe 函数(原内容)
@pytest.mark.parametrize("dtype", [torch.bfloat16])
@pytest.mark.parametrize("padding", [True, False])
@pytest.mark.parametrize(
    "use_rocm_aiter", [True, False] if current_platform.is_rocm() else [False]
)
@torch.inference_mode()
def test_mixtral_moe(
    default_vllm_config,
    dist_init,
    dtype: torch.dtype,
    padding: bool,
    use_rocm_aiter: bool,
    monkeypatch,
):
    """确保vLLM的Mixtral MOE实现与HuggingFace一致。"""
    # 设置环境变量以确保测试行为一致
    monkeypatch.setenv("VLLM_ROCM_USE_AITER", "1" if use_rocm_aiter else "0")
    rocm_aiter_ops.refresh_env_variables()
    if use_rocm_aiter and dtype == torch.float32:
        pytest.skip("AITER ROCm测试跳过float32")
    # 初始化分布式环境和工作空间管理器
    monkeypatch.setenv("RANK", "0")
    monkeypatch.setenv("LOCAL_RANK", "0")
    monkeypatch.setenv("WORLD_SIZE", "1")
    monkeypatch.setenv("MASTER_ADDR", "localhost")
    monkeypatch.setenv("MASTER_PORT", "12345")
    init_distributed_environment()
    init_workspace_manager(torch.accelerator.current_device_index())
    # 实例化HuggingFace和vLLM的MoE块并比较输出
    vllm_config.compilation_config.static_forward_context = dict()
    with set_current_vllm_config(vllm_config), set_forward_context(None, vllm_config):
        config = MixtralConfig()
        hf_moe = MixtralSparseMoeBlock(config).to(dtype).to("cuda")
        vllm_moe = MixtralMoE(
            num_experts=config.num_local_experts,
            top_k=config.num_experts_per_tok,
            hidden_size=config.hidden_size,
            intermediate_size=config.intermediate_size,
            params_dtype=dtype,
            tp_size=1,
            dp_size=1,
        )
        # 后续比较逻辑省略,此测试在v1中可能因实现变更而过时
tests/test_regression.py test-coverage

包含被删除的 test_duplicated_ignored_sequence_group 测试函数,该函数检查序列组重复忽略问题,在 v1 中已失效。

# 被移除的 test_duplicated_ignored_sequence_group 函数(原内容)
@pytest.mark.skip(reason="In V1, we reject tokens > max_seq_len")
def test_duplicated_ignored_sequence_group():
    """https://github.com/vllm-project/vllm/issues/1655"""
    sampling_params = SamplingParams(temperature=0.01, top_p=0.1, max_tokens=256)
    llm = LLM(
        model="distilbert/distilgpt2",
        max_num_batched_tokens=4096,
        tensor_parallel_size=1,
    )
    prompts = ["This is a short prompt", "This is a very long prompt " * 1000]
    outputs = llm.generate(prompts, sampling_params=sampling_params)
    assert len(prompts) == len(outputs) # 检查输出数量与提示一致
    # 此测试在v1架构下已过时,因为v1拒绝超过最大序列长度的令牌

关键符号

test_mixtral_moe test_duplicated_ignored_sequence_group

评论区精华

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

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

风险与影响

  1. 回归风险:移除test_mixtral_moe可能遗漏MOE实现与HuggingFace的兼容性问题,未来若相关逻辑变更,无测试覆盖可能导致bug。
  2. 边缘情况覆盖不足:test_duplicated_ignored_sequence_group测试序列组处理边缘情况,移除后可能忽略类似Issue #1655的回归问题。
  3. 依赖清理风险:删除导入可能影响其他测试的间接依赖,但本次仅移除未使用的导入,风险较低。

用户影响:无直接影响,仅内部测试变更。系统影响:减少测试套件大小,可能轻微提升CI运行效率。团队影响:简化维护,降低测试噪音,但需依赖其他测试确保核心功能正确性。

移除测试覆盖 可能遗漏回归

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:删除两个过时测试函数以清理测试套件。
  • 推荐动作:该PR值得简单审查以确认测试确实过时;建议关注是否有替代测试或相关功能仍需验证,避免回归风险。

功能与动机

移除过时测试以减少维护成本,test_duplicated_ignored_sequence_group被skip的原因为'In V1, we reject tokens > max_seq_len',表明在v1架构下该测试已失效;test_mixtral_moe可能因实现变更而过时,具体动机在PR body中未详细说明,但标题指向清理目的。

实现拆解

  1. 识别过时测试:基于代码上下文,确定test_mixtral_moe和test_duplicated_ignored_sequence_group不再适用。
  2. 删除test_mixtral_moe及相关导入:在文件tests/kernels/moe/test_moe.py中,移除函数test_mixtral_moe,并删除不必要的导入(如transformers.MixtralConfiginit_distributed_environment等),以简化依赖关系。
  3. 删除test_duplicated_ignored_sequence_group:在文件tests/test_regression.py中,移除函数test_duplicated_ignored_sequence_group,该函数原本被skip且已无效。
  4. 影响分析:减少测试套件大小,避免无效测试执行,可能加快CI运行时间;但需确保其他测试覆盖相关逻辑以避免回归。
    无测试、配置、schema或部署配套改动,仅测试文件删除。

关键文件:

  • tests/kernels/moe/test_moe.py(模块 MOE测试;类别 test;类型 test-coverage;符号 test_mixtral_moe): 包含被删除的test_mixtral_moe测试函数,该函数验证Mixtral MOE实现与HuggingFace的兼容性,移除后可能影响MOE相关测试覆盖。
  • tests/test_regression.py(模块 回归测试;类别 test;类型 test-coverage;符号 test_duplicated_ignored_sequence_group): 包含被删除的test_duplicated_ignored_sequence_group测试函数,该函数检查序列组重复忽略问题,在v1中已失效。

关键符号:test_mixtral_moe, test_duplicated_ignored_sequence_group

关键源码片段

tests/kernels/moe/test_moe.py

包含被删除的test_mixtral_moe测试函数,该函数验证Mixtral MOE实现与HuggingFace的兼容性,移除后可能影响MOE相关测试覆盖。

# 被移除的 test_mixtral_moe 函数(原内容)
@pytest.mark.parametrize("dtype", [torch.bfloat16])
@pytest.mark.parametrize("padding", [True, False])
@pytest.mark.parametrize(
    "use_rocm_aiter", [True, False] if current_platform.is_rocm() else [False]
)
@torch.inference_mode()
def test_mixtral_moe(
    default_vllm_config,
    dist_init,
    dtype: torch.dtype,
    padding: bool,
    use_rocm_aiter: bool,
    monkeypatch,
):
    """确保vLLM的Mixtral MOE实现与HuggingFace一致。"""
    # 设置环境变量以确保测试行为一致
    monkeypatch.setenv("VLLM_ROCM_USE_AITER", "1" if use_rocm_aiter else "0")
    rocm_aiter_ops.refresh_env_variables()
    if use_rocm_aiter and dtype == torch.float32:
        pytest.skip("AITER ROCm测试跳过float32")
    # 初始化分布式环境和工作空间管理器
    monkeypatch.setenv("RANK", "0")
    monkeypatch.setenv("LOCAL_RANK", "0")
    monkeypatch.setenv("WORLD_SIZE", "1")
    monkeypatch.setenv("MASTER_ADDR", "localhost")
    monkeypatch.setenv("MASTER_PORT", "12345")
    init_distributed_environment()
    init_workspace_manager(torch.accelerator.current_device_index())
    # 实例化HuggingFace和vLLM的MoE块并比较输出
    vllm_config.compilation_config.static_forward_context = dict()
    with set_current_vllm_config(vllm_config), set_forward_context(None, vllm_config):
        config = MixtralConfig()
        hf_moe = MixtralSparseMoeBlock(config).to(dtype).to("cuda")
        vllm_moe = MixtralMoE(
            num_experts=config.num_local_experts,
            top_k=config.num_experts_per_tok,
            hidden_size=config.hidden_size,
            intermediate_size=config.intermediate_size,
            params_dtype=dtype,
            tp_size=1,
            dp_size=1,
        )
        # 后续比较逻辑省略,此测试在v1中可能因实现变更而过时

tests/test_regression.py

包含被删除的test_duplicated_ignored_sequence_group测试函数,该函数检查序列组重复忽略问题,在v1中已失效。

# 被移除的 test_duplicated_ignored_sequence_group 函数(原内容)
@pytest.mark.skip(reason="In V1, we reject tokens > max_seq_len")
def test_duplicated_ignored_sequence_group():
    """https://github.com/vllm-project/vllm/issues/1655"""
    sampling_params = SamplingParams(temperature=0.01, top_p=0.1, max_tokens=256)
    llm = LLM(
        model="distilbert/distilgpt2",
        max_num_batched_tokens=4096,
        tensor_parallel_size=1,
    )
    prompts = ["This is a short prompt", "This is a very long prompt " * 1000]
    outputs = llm.generate(prompts, sampling_params=sampling_params)
    assert len(prompts) == len(outputs) # 检查输出数量与提示一致
    # 此测试在v1架构下已过时,因为v1拒绝超过最大序列长度的令牌

评论区精华

review中无实质讨论,只有bot评论(如Claude Code Review和gemini-code-assist[bot]),无争议点或设计权衡。

  • 暂无高价值评论线程

风险与影响

  • 风险:1. 回归风险:移除test_mixtral_moe可能遗漏MOE实现与HuggingFace的兼容性问题,未来若相关逻辑变更,无测试覆盖可能导致bug。
    2. 边缘情况覆盖不足:test_duplicated_ignored_sequence_group测试序列组处理边缘情况,移除后可能忽略类似Issue #1655的回归问题。
    3. 依赖清理风险:删除导入可能影响其他测试的间接依赖,但本次仅移除未使用的导入,风险较低。
  • 影响:用户影响:无直接影响,仅内部测试变更。系统影响:减少测试套件大小,可能轻微提升CI运行效率。团队影响:简化维护,降低测试噪音,但需依赖其他测试确保核心功能正确性。
  • 风险标记:移除测试覆盖, 可能遗漏回归

关联脉络

  • 暂无明显关联 PR

参与讨论