Prhub

#20751 [NPU]Add a full test pipeline on NPU, resolve issues in the NPU test architecture

原始 PR 作者 cherryblo 合并时间 2026-04-01 19:56 文件变更 43 提交数 44 评论 5 代码增减 +673 / -106

执行摘要

新增 NPU 完整测试流水线,解决测试架构问题以支持版本发布前的全面测试。

根据PR body中的表述,动机是'According to the roadmap, add an NPU release pipeline to execute all NPU test cases before version release, supporting testing against the latest community code and daily build packages.',即基于issue 20079的规划,添加NPU发布流水线以实现版本发布前的全面测试。

建议NPU相关开发者和测试工程师精读此PR,重点关注.github/workflows/full-test-npu.yml中的流水线设计,学习如何通过参数化配置实现多环境测试。该PR展示了测试架构的优化模式,值得借鉴以实现其他硬件平台的无缝集成。

讨论亮点

Review评论为空,表明在代码审查中没有技术讨论或争议。Issue评论中只有bot指令(如'/tag-and-rerun-ci'),用于触发CI测试,未涉及技术讨论,因此没有可提炼的争议点或决策结论。

实现拆解

实现方案拆解如下:1) CI/CD模块:新增.github/workflows/full-test-npu.yml文件,定义手动触发的完整测试流水线,支持输入参数image_a3skip_install_flag以灵活配置测试环境和安装选项;2) 测试框架模块:修改现有工作流文件如.github/workflows/nightly-test-npu.yml.github/workflows/pr-test-npu.yml,调整测试套件命名(如将'per-commit-'改为'stage-b-test-')、更新定时任务(如夜间测试时间调整为凌晨2点)并添加镜像参数;3) 测试用例模块:重命名多个测试文件(如将'test/srt/ascend/'下的文件移至'test/registered/ascend/'并更名为'npu'),更新register_npu_ci调用以注册到新测试套件(如'full-*'套件),并预下载GSM8K数据集以避免网络超时;4) 依赖管理:修改python/pyproject_npu.toml添加'hf_transfer'和'huggingface_hub'依赖,增强模型下载能力。

文件 模块 状态 重要度
.github/workflows/full-test-npu.yml CI/CD added 8.0
.github/workflows/nightly-test-npu.yml CI/CD modified 6.0
test/run_suite.py 测试框架 modified 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

register_npu_ci

评论区精华

无技术讨论 other

Review 评论为空,未进行技术讨论,Issue 评论中仅有 bot 指令用于触发 CI 测试。

结论:无争议或决策点。 · 已解决

风险与影响

技术风险具体包括:1) 工作流配置风险:新文件.github/workflows/full-test-npu.yml中的输入参数逻辑(如skip_install_flag处理)可能引入语法错误或逻辑漏洞,导致CI运行失败;2) 测试套件兼容性风险:重命名测试用例文件(如从'ascend'改为'npu')可能破坏现有测试套件识别,需确保test/run_suite.py中的套件列表更新正确;3) 环境依赖风险:预下载数据集和镜像参数配置增加维护复杂性,如果缓存服务或镜像路径变更,可能引起测试超时或失败;4) 集成风险:多次提交和合并(共44次)表明有频繁调整,可能隐含未完全测试的边缘情况。

影响范围:1) 对用户:无直接影响,测试流水线改进不改变运行时功能;2) 对系统:提升NPU测试的全面性和可靠性,确保版本发布前的质量保证,减少因测试遗漏导致的回归问题;3) 对团队:优化CI资源消耗(如通过手动触发完整测试),提高测试效率,但需额外维护新工作流配置。影响程度为中等,主要局限于测试基础设施,不涉及核心模型或内核代码。

工作流配置风险 测试套件兼容性 环境依赖复杂性

关联 Issue

#20079 [Roadmap] SGLang CI Pipeline Planning for NPU

完整报告

执行摘要

本PR新增了NPU完整测试流水线,通过创建手动触发的工作流、优化测试配置和修复环境问题,提升版本发布前的测试覆盖率,是NPU功能质量保证的关键基础设施改进。

功能与动机

根据roadmap(issue 20079),需在版本发布前执行所有NPU测试用例,支持测试最新社区代码和每日构建包。PR body明确指出:'add an NPU release pipeline to execute all NPU test cases before version release',以解决测试架构中的不足,确保NPU功能的可靠性。

实现拆解

CI/CD模块

  • 新增完整测试流水线:在.github/workflows/full-test-npu.yml中定义手动触发的工作流,支持输入参数image_a3(镜像路径)和skip_install_flag(跳过安装标志),示例配置包括测试最新代码或每日构建包。
  • 优化现有工作流:修改.github/workflows/nightly-test-npu.yml.github/workflows/pr-test-npu.yml,调整测试套件命名(如per-commit-*改为stage-b-test-*)、更新定时任务(夜间测试时间从凌晨1点改为2点)并集成镜像参数,保持与社区配置一致。

测试框架模块

  • 测试套件扩展:在test/run_suite.py中添加'full-*'套件列表(如'full-1-npu-a3'),支持完整测试流水线的执行。
  • 测试用例重命名与注册:将多个测试文件从'test/srt/ascend/'移动并重命名为'test/registered/ascend/'下的'npu'前缀文件(如test_npu_hicache_mha.py),并在文件中添加register_npu_ci调用,注册到新测试套件。例如:
    register_npu_ci(est_time=400, suite="stage-b-test-1-npu-a2", nightly=False)
    
  • 数据集预下载:在工作流中预下载GSM8K数据集(cp ~/.cache/modelscope/hub/datasets/tmp/test.jsonl /tmp),避免网络超时影响测试。

依赖管理模块

  • python/pyproject_npu.toml中添加'hf_transfer'和'huggingface_hub'依赖,增强模型下载能力,支持测试环境搭建。

评论区精华

由于Review评论为空,未发生技术讨论。Issue评论中仅有自动化bot指令(如/tag-and-rerun-ci),用于触发CI测试,无实质性技术交锋。这表明变更可能在内部已达成共识,或通过提交历史迭代解决。

风险与影响

技术风险

  1. 工作流配置风险:新流水线文件中的输入参数处理逻辑(如默认值设置)若错误,可导致CI运行失败,需仔细验证语法。
  2. 测试套件兼容性风险:重命名测试文件可能破坏现有测试运行器识别,需确保test/run_suite.py更新完整。
  3. 环境依赖风险:预下载数据集和镜像路径配置增加维护负担,若缓存服务失效,可能引发测试超时。

影响分析

  • 对系统:提升NPU测试的全面性,减少版本发布时的回归风险,但新增工作流可能增加CI资源消耗(通过手动触发缓解)。
  • 对团队:优化测试流程,提高效率,但开发者需适应新配置模式。

关联脉络

从历史PR看,NPU相关改进持续进行:

  • PR 21807更新Ascend文档,与本PR的测试流水线协同,确保文档与测试对齐。
  • PR 21347修复Qwen3.5模型在NPU上的权重加载问题,本PR的测试流水线可用于验证此类修复,体现测试基础设施对功能稳定性的支撑。
    整体上,本PR是NPU功能成熟度提升的一部分,通过强化测试架构为后续NPU特性(如量化、多模态)提供质量保障。

参与讨论