Pull Request已成功合入, 合并人@CANN-robot
(感谢 wuyi2026 的贡献)变更摘要
本次 PR 对 PyPTO 教程文档进行了大规模重构,主要包括:调整第一章的章节顺序(芯片篇移至 CANN 介绍之前),统一所有章节标题编号格式;新增 01.02_chip.ipynb(扩展版昇腾芯片内容)和 02.04_graph_and_swimlane.ipynb(计算图与泳道图教程),同时删除旧的 01.03_chip.ipynb、02.04_api_and_compute_graph.ipynb 以及 04.06_system_and_acceleration.ipynb;修复多处代码问题(循环边界取整、输出写回方式、环境变量缺失等),并对大量教程内容进行精简优化。
主要改动
- 章节重新编号与排序:第一章原有顺序"CANN → 芯片 → PyPTO"调整为"芯片 → CANN → PyPTO",所有 notebook 标题统一为
01.01、01.02…格式,对应调整了章节导读中的小节表格与阅读建议。同时将04.07_chapter_practice.ipynb重命名为04.06_chapter_practice.ipynb,移除了原有的04.06_system_and_acceleration.ipynb(Cost Model 与 ACLGraph 内容)。
-
新增
01.02_chip.ipynb:替代旧的01.03_chip.ipynb,扩充了昇腾芯片硬件架构介绍,新增 Host/Device 关系、NPU 内部单元(AI Core / AI CPU / 控制 CPU / 任务调度器等)、AI Core 计算单元与存储系统的详细拆解,并更新了课后练习题目。 -
新增
02.04_graph_and_swimlane.ipynb:替代旧的02.04_api_and_compute_graph.ipynb,新内容以 Softmax 算子为例,展示如何使用 PyPTO Toolkit 可视化查看program.json(计算图:Execute Graph / Block Graph)和merged_swimlane.json(泳道图),并包含对应的课后练习。 -
01.03_CANN.ipynb内容扩展:新增异构计算架构概念、CPU/Vector/Cube 三级矩阵乘法性能对比(8192 → 256 → 1 时钟周期),重写了架构介绍并加入 CANN 分层架构示意图。 -
代码修正与统一:多文件中将
b // tile_b修正为(b + tile_b - 1) // tile_b实现正确的向上取整;在 5 个 notebook 中统一添加os.environ['TORCH_DEVICE_BACKEND_AUTOLOAD'] = '0'环境变量;03.03_answer.py中修复torch.tensor(0.0)缺少dtype和device参数的问题;部分文件将out.move(...)改为out[:] = ...、assert_allclose改为assert_close。


代码审查
所有 cross-reference 均正确对应。现在给出最终审查总结。
审查总结
本 PR 对 PyPTO 教程第一章进行了结构调整(芯片与 CANN 顺序互换)和内容大幅扩充。共审查了 7 个变更文件 + 1 个删除文件:
| 文件 | 审查结论 |
|---|---|
01.01_chapter_intro.ipynb |
无问题 |
01.02_chip.ipynb(新增) |
2 个问题(P2 + P3) |
01.03_CANN.ipynb(重命名并扩充) |
无问题 |
01.03_chip.ipynb(已删除) |
无问题(属于正常迁移) |
01.04_PyPTO.ipynb |
无问题 |
answer/01.02_answer.txt |
无问题(答案与题目一致) |
answer/01.03_answer.txt |
无问题(答案与题目一致) |
answer/01.04_answer.txt |
无问题(答案与题目一致) |
按优先级统计:
- P0:0
- P1:0
- P2:1("下一节"指向错误,影响阅读连贯性)
- P3:1(课后练习描述与实际题型不符)
总体风险判断:低。 两个问题均为文档内容一致性缺陷,不影响任何运行时行为、构建或安全。建议在合并前修复 P2 问题("下一节将介绍 PyPTO" → CANN),P3 问题可顺带修正。
我已全面审查了全部 7 个变更文件。以下是审查结果汇总。
审查结果汇总
| 优先级 | 数量 | 说明 |
|---|---|---|
| P1 | 1 | 02.04 中 softmax 输出写入切片范围错误 |
| P2 | 2 | 02.02 中 !source 环境变量无法持久化;02.01 表格中残留已删除章节的描述 |
| P3 | 2 | 02.02 中 pytpo 拼写错误;02.03 中 set_vec_tile_shapes() 空参数示例不一致 |
逐文件审查确认:
02.01_chapter_intro.ipynb— 发现 1 个 P2 问题(表格中的过时描述)02.02_run_hello_world.ipynb— 发现 1 个 P2 问题(!source失效)、1 个 P3 问题(拼写错误)02.03_programming_paradigm_mpmd.ipynb— 发现 1 个 P3 问题(空参数示例)02.04_graph_and_swimlane.ipynb— 发现 1 个 P1 问题(输出切片范围错误)answer/02.03_answer.txt— 无问题(修正了之前包含多余答案的错误)answer/02.04_answer.txt— 无问题(答案内容与新版 3 道题目匹配)03.01_chapter_intro.ipynb— 无问题(仅新增一行环境变量设置,逻辑正确)
总体风险判断: 中等。P1 的 softmax 输出切片 bug 会导致该教程代码运行结果错误或直接报错,建议优先修复。P2 的环境变量问题在标准 Jupyter 环境下会导致教程无法正常运行。其余为文档一致性和质量改进项,影响较小。
审查总结
对全部 8 个变更文件逐一审查完成,共发现 4 个问题,全部为 P3(文档一致性问题),无 P0/P1/P2 级别的正确性或安全回归。
各文件审查结果
| 文件 | 结果 |
|---|---|
03.02_elementwise_vec_tile.ipynb |
无问题 — 文档描述更新与代码一致,环境变量添加合理 |
03.03_matmul_cube_tile.ipynb |
1 个 P3:部分文档段落未同步更新 matmul dtype 参数描述 |
03.04_reduction_ops.ipynb |
1 个 P3:test_amax_basic 缺失成功提示信息。注:global_run_mode→RUN_MODE 和 import numpy as np 为正确的 bug 修复 |
03.05_tiling_shape_slice_transpose.ipynb |
无问题 — 纯结构优化,拆分 markdown 标题提升可读性 |
03.06_chapter_practice.ipynb |
无问题 — 内容精简,与自测题的移除保持一致 |
answer/03.03_answer.py |
无问题 — torch.tensor(0.0) 补充 dtype/device 是正确的 bug 修复 |
answer/03.06_answer.py |
无问题 — 自测答案随题库移除而清理 |
04.01_chapter_intro.ipynb |
2 个 P3:编号跳号 + 残留的已删除内容引用 |
整体风险评估
低风险。此次 PR 以教程文档优化为主,核心代码变更仅有两处 bug 修复(global_run_mode→RUN_MODE、torch.tensor(0.0) 补全 dtype/device),均为正确改进。发现的 4 个问题均为文档一致性瑕疵(编号错位、描述不一致、残留引用、提示缺失),不影响代码执行正确性,建议在合入前顺手修复以保持教程质量。
审查总结
我已完成对全部 7 个变更文件的审查,结果如下:
按优先级统计
- P2: 1 个 —
04.02_operator_composition_and_softmax.ipynb:GeGLU 测试代码与说明文档不一致 - P3: 2 个 —
04.05_attention_and_transformer.ipynb:未使用的函数参数;04.06_chapter_practice.ipynb:环境准备单元被移除
各文件审查结论
| 文件 | 结论 |
|---|---|
04.02_operator_composition_and_softmax.ipynb |
⚠️ 1 个 P2 问题 |
04.03_normalization_and_ffn.ipynb |
✅ 无问题 |
04.04_dynamic_shape_and_controlflow.ipynb |
✅ 无问题(天花板除法和变量名修复均为正确改进) |
04.05_attention_and_transformer.ipynb |
⚠️ 1 个 P3 建议 |
04.06_chapter_practice.ipynb |
⚠️ 1 个 P3 建议 |
04.06_system_and_acceleration.ipynb(已删除) |
✅ 无问题(内容重组) |
answer/04.01_answer.txt |
✅ 无问题(答案编号与 04.02 习题匹配;04.01 对应 notebook 不在变更范围内,无法交叉验证但答案文件自身格式正确) |
answer/04.02_answer.txt |
✅ 无问题(与新习题编号完全匹配) |
整体风险评估
低风险。此 PR 主要是文档重构和教程优化:统一 dtype 为 BF16/FP32、修复天花板除法、修正变量名错误(outside_idx → inside_idx)、重新编号章节和习题。未发现逻辑正确性或安全方面的严重缺陷。唯一的 P2 问题是测试代码与文档之间的不一致,不会导致运行时错误,但会降低教程的可跟随性。建议在上线前修复 GeGLU 的文档-代码不一致问题。
经过仔细审查,这次 diff 的变更非常简洁:
04.06_answer.py第 1 行:注释从# 04.07 章节实践参考答案:...改为# 章节实践参考答案:...,仅去掉了章节编号前缀,纯文档性修改。04.06_answer.py第 45 行:去掉了行末注释# 修正:pypto.minimum → min,函数代码b_end = min(b_offset + tile_b, batch)本身未变,行为完全一致。04.06_answer.txt:被删除的纯文本文件,内含选择题答案,无运行时代码。
所有变更均为注释调整或非代码文件删除,不存在任何正确性、安全性、可靠性或性能问题。
审查总结
| 优先级 | 数量 |
|---|---|
| P0 | 0 |
| P1 | 0 |
| P2 | 0 |
| P3 | 0 |
已审查文件:
tutorials/pypto_development/04_intermediate_advanced_operator_practice/answer/04.06_answer.py— 无问题tutorials/pypto_development/04_intermediate_advanced_operator_practice/answer/04.06_answer.txt(已删除)— 无问题
总体风险判断: 无风险。本次变更为纯文档性整理,不影响任何运行时行为。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 5 |
⛔ 需要修改


/lgtm


The MR can not be merged, because of CodeReview discussion not resolved
If you want to solve this problem, you can click here to do it in the FAQs.


描述
关联的Issue
测试
文档更新
类型标签
其他信息