执行摘要
- 一句话:恢复并适配 NPU Nightly 跳过的测试用例
- 推荐动作:建议合并。该 PR 恢复了重要的 nightly 测试覆盖,且针对环境变化做了适配,review 中提出的问题均已解决。后续可考虑增加内存监控或资源限制来防止潜在 OOM。
功能与动机
在 NPU Nightly 流水线中,一些测试用例因执行失败或已解决的问题而被跳过。这些测试用例需要适配当前环境并恢复到 Nightly 流水线中进行测试。
实现拆解
实现步骤:
-
移除跳过标记:在多个测试文件的 register_npu_ci 调用中删除 disabled 参数,使测试重新注册到 nightly 套件。受影响文件包括 test_npu_no_chunked_prefill.py(旧)、test_npu_kimi_vl_a3b_instruct.py、test_npu_llama_3_2_11b_vision_instruct.py、test_npu_openai_function_calling.py、test_npu_deepep_low_latency_qwen3_next.py 等。
-
重写无分块预填充测试:删除旧文件 test/registered/ascend/basic_function/parameter/test_npu_no_chunked_prefill.py,在 memory_and_scheduling 目录下新建同名文件。新测试类 TestNoChunkedPrefill 改用 setUpClass 启动独立服务器进程、tearDownClass 清理,并使用 run_eval 进行 MMLU 精度评估(阈值 0.65),同时保留 run_bench_serving 的压力测试。
-
统一 VLM 测试基类:将 TestKimiVLA3BInstruct 从继承 GSM8KAscendMixin 和 CustomTestCase 改为继承共享基类 TestVLMModels,评估数据集从 GSM8K 切换为 MMMU,阈值设为 0.2。移除了不再需要的 other_args(如 --trust-remote-code、--tp-size 等),因为基类已处理。类似地,TestLlama3211BVisionInstruct 也改为从 test_ascend_utils 导入模型路径常量并添加文档字符串。
-
调整 DeepEP 低延迟测试参数:在 test_npu_deepep_low_latency_qwen3_next.py 中,启用 CUDA Graph 批量大小(--cuda-graph-bs 2 4 6 8)替代 --disable-cuda-graph;设置 DEEPEP_NORMAL_LONG_SEQ_PER_ROUND_TOKENS=3000、DEEPEP_NORMAL_LONG_SEQ_ROUND=10、SGLANG_DEEPEP_BF16_DISPATCH=1 等环境变量以适配 NPU BF16 要求;增大 SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK 到 160。
-
改进函数调用测试:在 test_npu_openai_function_calling.py 中,test_function_call_required 放宽断言:不再要求特定函数名 get_weather 和参数值,仅验证 tool_calls 存在且参数为合法 JSON。添加 strict: true 到工具定义中。
这些改动使之前因跳过而缺失的测试覆盖重新生效。
关键文件:
test/registered/ascend/basic_function/memory_and_scheduling/test_npu_no_chunked_prefill.py(模块 无分块预填充;类别 test;类型 test-coverage;符号 TestNoChunkedPrefill, setUpClass, tearDownClass, test_mmlu): 新增文件,重写了无分块预填充测试,是本次恢复的核心测试之一。
test/registered/ascend/basic_function/parameter/test_npu_no_chunked_prefill.py(模块 无分块预填充;类别 test;类型 deletion;符号 TestNoChunkedPrefill, test_no_chunked_prefill, test_no_chunked_prefill_without_radix_cache): 被删除的旧文件,原包含跳过的无分块预填充测试,被新文件替代。
test/registered/ascend/vlm_models/test_npu_kimi_vl_a3b_instruct.py(模块 Kimi-VL-A3B;类别 test;类型 test-coverage;符号 TestKimiVLA3BInstruct, test_vlm_mmmu_benchmark): 修改了 Kimi-VL-A3B 测试,从 GSM8K 切换为 MMMU 精度评估,并简化配置。
test/registered/ascend/vlm_models/test_npu_llama_3_2_11b_vision_instruct.py(模块 Llama-3.2-Vision;类别 test;类型 test-coverage): 修改了 Llama-3.2-11B-Vision 测试,使用常量路径并添加文档字符串。
test/registered/ascend/interface/test_npu_openai_function_calling.py(模块 函数调用;类别 test;类型 test-coverage): 修改了函数调用测试,放宽断言并添加 strict 选项。
test/registered/ascend/basic_function/parallel_strategy/expert_parallelism/test_npu_deepep_low_latency_qwen3_next.py(模块 DeepEP 低延迟;类别 test;类型 test-coverage): 调整了 DeepEP 低延迟 MoE 测试的环境变量和启动参数。
关键符号:TestNoChunkedPrefill.setUpClass, TestNoChunkedPrefill.tearDownClass, TestNoChunkedPrefill.test_mmlu, TestNoChunkedPrefill.test_no_chunked_prefill_without_radix_cache, TestKimiVLA3BInstruct.test_vlm_mmmu_benchmark, TestLlama3211BVisionInstruct.test_vlm_mmmu_benchmark
评论区精华
Reviewer AndyLi429 提出了四个问题:
风险与影响
关联脉络
参与讨论