pypto-gym 开源仓测试报告解读:CANN 9.1.0 下 82 算子与 10 模型的全量质量验证
【免费下载链接】community本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息项目地址: https://gitcode.com/cann/community
本文基于 CANN 社区 pypto-gym仓开源测试报告 展开,对 pypto-gym 开源仓在 CANN 9.1.0 版本下的开源演练测试进行完整解读。报告以"快速搭建开发环境、执行算子与模型测试"为目标,通过 UT/ST 全量算子验证、全量模型验证、泛化精度验证与性能验证四类测试任务,覆盖 82 个算子与 10 个模型场景,全部通过并达到出口质量标准。读完本文,你可以完整掌握 pypto-gym 仓的测试范围、测试方法、关键算子与模型清单,以及泳道图与 profiling 双口径性能评估的实操口径。
1. 被测对象:pypto-gym 与 PTO SIG
pypto-gym 是 CANN PTO SIG 负责维护的开源仓库之一。PTO(Parallel Tensor/Tile Operation)是 CANN 推出的面向 AI 加速器的高性能编程系统,包含PyPTO 编程框架与PTO 虚拟指令集两部分,其定位是以基于 Tile 的编程模型为核心,通过多层次计算图表达,将 AI 模型应用从高层计算图逐步编译为 PTO 虚拟指令,最终生成目标平台上高效执行的代码,详见 pto SIG 介绍。
从 pto SIG 仓库清单 可以看到,该 SIG 维护三个仓库:
cann/pypto:PyPTO 编程框架,提供基于 Python 的高性能算子开发框架与 Tile 编程模型;cann/pypto-gym:本次测试报告的被测对象,负责算子与模型的验证/演练能力;cann/pto-isa:PTO 虚拟指令集规范,提供硬件无关的指令抽象。
cann/pypto-gym在 sig-info.yaml 中配置了独立的 committer 列表(foundea、jason_yuan_ye、DCGDDD、tsungl4、gaoxingwang 等),表明其作为独立开源仓进行治理与演进。本测试报告即该仓开源演练阶段的出口质量验证,测试结果将作为 QA-SIG 评审归档的依据。
2. 测试概述与版本环境
2.1 测试目标
报告第 1 章明确了本次演练测试的核心目标:基于 pypto-gym 开源仓提供的能力,验证快速搭建开发环境、执行算子与模型测试。即该仓对外承诺的能力链路是"开箱搭建环境 → 运行算子测试 → 运行模型测试",测试报告围绕这条链路验证其可用性与正确性。
2.2 版本测试信息
| 项 | 内容 |
|---|---|
| 产品型号 | A2/A3 |
| 操作系统 | x86 / arm64 |
| CANN 版本 | 9.1.0 |
| Python 版本 | Python 3.13 |
从该表可以看出,测试覆盖了 A2 与 A3 两代硬件产品,以及 x86 与 arm64 两种主流通用计算架构组合,Python 3.13 为当前主流新版本运行时环境。这四项信息共同构成"被测环境基线",后续所有测试结论均在该环境下得出,也是用户复现测试时的前提条件。
3. 测试总体结论
报告第 3 章给出的总体结论为:
基于 9.1.0 版本,共计执行 4 项测试任务,覆盖 82 个算子和 10 个模型场景,遗留问题均已闭环。整体质量良好,满足出口质量标准。
4 项测试任务即报告第 4 章的四个特性质量评估项:全量算子 UT/ST 测试、全量模型测试、主要算子泛化精度测试、主要算子性能测试。这一结论表明 pypto-gym 仓在当前版本达到了社区开源仓的出口质量要求,可以对外发布。
4. 特性质量评估
4.1 全量算子 UT/ST 测试
UT/ST 即单元测试(Unit Test)与系统测试(System Test),是算子验证的两层基础手段。报告对代码仓全量算子逐一执行 UT/ST 验证:
| 模型/场景 | 算子数量 | 通过率 |
|---|---|---|
| qwen3_next | 1 | 100% |
| minimax_m27 | 1 | 100% |
| chunked_gdr | 1 | 100% |
| glm_v4_5 | 7 | 100% |
| deepseek_v4 | 7 | 100% |
| llada2_moe | 2 | 100% |
| deepseek_v32_exp | 6 | 100% |
| spatial_ssrl_3b | 2 | 100% |
| qat | 1 | 100% |
| deepseek_v2_lite_chat | 1 | 100% |
| qwen3_6_27b | 1 | 100% |
| qwen3_5_9b | 1 | 100% |
| arctic | 1 | 100% |
| phi_3_mini_4k_instruct | 1 | 100% |
| qwen3_1_7b | 1 | 100% |
| gutenocr_3b | 2 | 100% |
| gemma4_31b | 2 | 100% |
| experimental | 44 | 100% |
| 总计 | 82 | 100% |
可以看到,82 个算子按其所服务的模型/场景进行分组,覆盖了 Qwen、GLM、DeepSeek、MiniMax、Arctic、Phi、Gemma 等主流大模型衍生场景,以及 44 个 experimental(实验性)算子。experimental 类算子数量占比超过一半,反映该仓承担了大量新算子探索与验证的职责,且这些实验性算子在本次版本中同样达到 100% 通过率。
4.2 全量模型测试
模型级验证用于确认算子在真实模型样例中可端到端运行,报告选取 10 个模型样例,验证其典型融合组件组合:
| 模型 | 融合组件 | 验证结果 |
|---|---|---|
| qwen3_1_7b | rms norm + rope | 通过 |
| phi_3_mini_4k_instruct | mla | 通过 |
| qwen3_vl_8b_instruct_unredacted_max | GQA | 通过 |
| spatial_ssrl_3b | rope + rms norm | 通过 |
| gutenocr_3b | rope + rms norm | 通过 |
| qwen3_5_9b | GDR | 通过 |
| gemma4_31b_it | Softmax, GQA | 通过 |
| llada2_moe | Grouped GEMM | 通过 |
| qwen3_6_27b | GDR | 通过 |
| deepseek_v2_lite_chat | mla | 通过 |
10 个模型样例全部通过,通过率 100%。模型清单与 4.1 节中的算子分组高度对应,体现了"算子分组 → 模型样例"的自洽验证体系。
从融合组件角度看,这些组件覆盖了当前大模型推理/训练的核心计算热点:
- rms norm + rope / rope + rms norm:RMSNorm 归一化与 RoPE 旋转位置编码的组合,是 Qwen 系模型的标准组件搭配;
- mla:Multi-head Latent Attention,DeepSeek 系列采用的 MLA 注意力结构(deepseek_v2_lite_chat、phi_3_mini_4k_instruct 场景);
- GQA:Grouped Query Attention 分组查询注意力,在 qwen3_vl 与 gemma4 系列中验证;
- GDR 与 chunked_gdr:报告中以代号形式出现的融合组件(在 qwen3_5_9b、qwen3_6_27b 中验证),其精确语义以 pypto-gym 仓内实现为准;
- Grouped GEMM:分组矩阵乘,对应 MoE 类模型(llada2_moe)的分组专家计算;
- Softmax:Attention 归一化,在 gemma4_31b_it 中与 GQA 组合验证。
4.3 主要算子泛化精度测试
在 UT/ST 基础上,报告进一步选取 34 个高优先级算子开展泛化精度验证,通过大规模 case 矩阵检验算子在不同 shape、不同输入分布下的精度稳定性:
| 场景 | 算子数量 | case 数量 | 通过率 |
|---|---|---|---|
| DeepSeek | 6 | 5863 | 100% |
| GLM | 8 | 4163 | 100% |
| Operator | 7 | 582 | 100% |
| GreenLight | 13 | 1315 | 100% |
| 总计 | 34 | 11923 | 100% |
34 个算子共构造 11923 个泛化 case,全部通过。其中 DeepSeek 与 GLM 场景的 case 数量占比最高(合计超过一万个),说明这两个模型系列算子是泛化验证的重点;GreenLight 场景承载 13 个算子的验证,是 case 密度最高的分组。泛化测试的通过率为 100%,为算子精度质量提供了大数据量支撑。
4.4 主要算子性能测试
性能验证选取 12 个 Top 算子,构造低时延、高吞吐、预训练、后训练等不同场景 case,从**泳道图(swimlane)**与profiling两种采集口径给出性能结果:
| 算子名 | 场景数量 | ASC/AICore | ASC/Prof |
|---|---|---|---|
| inplace_add_rmsnorm | 4 | 0.54 | 0.46 |
| mla_prolog_v3 | 2 | 0.75 | 0.68 |
| mla_prolog_v3_quant | 2 | 0.66 | 0.59 |
| interleave_rope | 4 | 0.69 | 0.5 |
| sparse_flash_attn_antiquant | 4 | 0.69 | 0.63 |
| sparse_flash_attn | 4 | 0.82 | 0.73 |
| glm_attention | 4 | 0.58 | 0.52 |
| flash_attention_mha | 2 | 0.6 | 0.26 |
| flash_attention_mha_grad | 2 | 0.42 | 0.27 |
| mhc_post | 2 | 0.6 | 0.32 |
| apply_adam | 2 | 0.77 | 0.73 |
| incre_flash_attention_mla | 4 | 0.53 | 0.51 |
| 平均 | - | 0.64 | 0.52 |
表中的 ASC 即 AscendC 基线实现(对比基准)。从表格结构与报告结论可以推断:数值表示被测 PyPTO 算子与 AscendC 算子的耗时比值(PyPTO/AscendC),其中ASC/AICore为基于泳道图工具采集的 AICore 核侧耗时口径,ASC/Prof为基于 profiling 工具采集的整体耗时口径。12 个算子平均耗时比为 0.64(泳道图口径)与 0.52(profiling 口径),即被测场景下 PyPTO 算子整体耗时低于 AscendC 基线实现,报告结论为"符合预期"。
需要说明的是,性能比值与算子类型、场景构造强相关:例如 flash_attention_mha_grad 在 profiling 口径下达到 0.27,而 sparse_flash_attn 为 0.73,不同算子存在明显差异;对比时应以同场景、同口径为前提。PyPTO 框架本身提供了泳道图(swimlane)与 profiling 相关的工具链支撑——在 pto SIG 仓库清单 中可以看到tools/gen_swimlane.sh(泳道图生成脚本)与tools/profiling目录被划入 machine 组件进行治理,说明该性能评估口径在框架层面有配套工具落地。
5. DFX 专项质量评估
报告第 5 章对四项 DFX 专项给出了明确结论:
| 专项 | 结论 |
|---|---|
| 安全测试 | 本次演练不涉及 |
| 可靠性测试 | 该仓不涉及 |
| 性能测试 | 该仓不涉及 |
| 兼容性测试 | 本次演练不涉及 |
DFX 各项标注"不涉及",与 pypto-gym 仓的开源演练定位一致:本次演练聚焦功能正确性与性能基线建立(性能验证已在 4.4 节作为特性质量评估项完成),安全、可靠性、兼容性等专项待后续版本按需纳入。报告对每项均给出"不涉及"的具体理由,避免空泛结论,保持了测试结论的可追溯性。
6. 测试执行评估与测试覆盖
报告第 6 章给出了测试覆盖总表:
| 测试活动 | 测试结论 | 用例数 | 用例通过率 |
|---|---|---|---|
| 特性测试 | pass | 82 | 100% |
| 资料测试 | pass | 1 | 100% |
| 可靠性测试 | NA | NA | NA |
| 继承特性测试 | NA | NA | NA |
| 兼容性测试 | NA | NA | NA |
| 安全测试 | NA | NA | NA |
测试覆盖情况与第 5 章 DFX 结论保持一致:本次演练实际执行的测试活动为特性测试(82 个用例,对应 82 个算子的 UT/ST)与资料测试(1 个用例,对应开源仓文档/资料的准确性验证),其余专项活动标记为 NA。特性测试与资料测试通过率均为 100%。
7. 遗留问题与关键风险
报告第 7 章结论为"不涉及",第 9 章附件同样为"不涉及"。这对应第 3 章总体结论中的"遗留问题均已闭环"——本次演练过程中发现的问题已在测试期间全部关闭,无阻塞性遗留问题与关键风险,为"满足出口质量标准"的结论提供了直接依据。
8. 总结:一份可复现、可追溯的开源仓测试报告
结合本报告可以归纳出 pypto-gym 仓开源演练测试的完整方法链:
- 环境基线先行:明确 A2/A3、x86/arm64、CANN 9.1.0、Python 3.13 的版本组合,保证测试可复现;
- 算子与模型双线验证:82 个算子 UT/ST + 10 个模型样例,验证从算子到模型端到端链路;
- 精度用规模说话:34 个高优先级算子、11923 个泛化 case,以大数据量支撑精度结论;
- 性能双口径评估:泳道图(AICore 核侧)与 profiling(整体)两种采集口径交叉验证 12 个 Top 算子,并对标 AscendC 基线;
- 结论分级透明:DFX 专项明确标注不涉及范围,遗留问题与附件如实说明,无模糊表述。
从报告治理角度看,该文档遵循了社区统一的测试报告模板结构(概述、版本信息、测试结论、特性质量评估、DFX 专项、测试执行评估、遗留问题、附件),模板定义可参考 测试报告模板。同时,测试报告归档说明 规定:仓开源测试报告需经 QA-SIG 会议评审,由 Maintainer 与 Committer 在 PR 上检视并完成问题闭环后归档。因此,本文解读的这份报告不仅是 pypto-gym 仓的质量凭证,也是 CANN 社区"谁开发谁测试、评审归档闭环"机制的落地样例。对于希望了解或贡献 PyPTO 生态的开发者,可将本报告作为评估 pypto-gym 仓当前能力基线(算子清单、模型支持面、性能水平)的第一手资料,再结合 pto SIG 介绍 中的仓库清单与贡献指南深入实践。
【免费下载链接】community本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息项目地址: https://gitcode.com/cann/community
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考