/ docs / zh / learning-path.md
learning-path.md
  1  # 学习路线
  2  
  3  AI 系统优化从初学者到专家的结构化学习路线图。
  4  
  5  ## 🎯 学习目标
  6  
  7  完成本学习路线后,您将:
  8  
  9  - 理解端到端 AI 系统优化栈
 10  - 掌握 TVM 编译器优化
 11  - 开发 ONNX Runtime 的自定义 CUDA 算子
 12  - 使用 CUTLASS 实现高性能 GEMM 内核
 13  - 探索下一代 GPU 编程模型
 14  
 15  **预计时间:** 兼职 2-4 周 或 全职 1 周
 16  
 17  ---
 18  
 19  ## 📚 按技能水平的路径
 20  
 21  ### 🌱 初学者路线
 22  
 23  **前置条件:**
 24  - 基础 Python 编程
 25  - 基础线性代数(矩阵运算)
 26  - 熟悉 PyTorch 或 TensorFlow
 27  
 28  **目标:**
 29  - 搭建开发环境
 30  - 运行所有示例
 31  - 理解基本概念
 32  
 33  **路径:**
 34  
 35  | 天数 | 任务 | 文档 |
 36  |-----|------|------|
 37  | 1 | 环境搭建 | [前置要求](./prerequisites), [快速开始](./quick-start) |
 38  | 2 | 运行 TVM 基线 | TVM README |
 39  | 3 | 理解结果 | TVM 模块代码 |
 40  | 4 | 运行 ORT 自定义算子 | ORT README |
 41  | 5 | 运行基准测试 | `scripts/run_all_benchmarks.sh` |
 42  
 43  **产出:** 所有示例在您的机器上运行
 44  
 45  ---
 46  
 47  ### 🚀 进阶路线
 48  
 49  **前置条件:**
 50  - 完成初学者路线
 51  - 基础 CUDA 知识
 52  - 理解计算图
 53  
 54  **目标:**
 55  - 理解架构设计决策
 56  - 修改和扩展示例
 57  - 执行基础调优
 58  
 59  **路径:**
 60  
 61  | 周数 | 重点 | 任务 |
 62  |------|------|------|
 63  | 第 1 周 | TVM 深入 | 学习 Relay IR,修改调度原语 |
 64  | 第 2 周 | ORT 集成 | 理解自定义算子生命周期,修改内核 |
 65  | 第 3 周 | CUTLASS 优化 | 实验 tile 大小,使用 Nsight 分析 |
 66  | 第 4 周 | 性能分析 | 生成和分析基准报告 |
 67  
 68  **文档:**
 69  - [项目架构](./architecture)
 70  - [API 参考](./api-reference)
 71  - [性能调优](./performance-tuning)
 72  
 73  **产出:**
 74  - 可工作的修改版 TVM 调度
 75  - 自定义 ORT 算子变体
 76  - 调优的 CUTLASS 配置
 77  
 78  ---
 79  
 80  ### 🎓 专家路线
 81  
 82  **前置条件:**
 83  - 完成进阶路线
 84  - 扎实的 C++/CUDA 编程能力
 85  - 理解 GPU 微架构
 86  
 87  **目标:**
 88  - 开发新的优化模块
 89  - 为项目做贡献
 90  - 掌握分析工具
 91  
 92  **路径:**
 93  
 94  | 周数 | 重点 | 任务 |
 95  |------|------|------|
 96  | 第 1-2 周 | 高级 TVM | 自定义 pass 开发,自动调度器自定义 |
 97  | 第 3-4 周 | CUTLASS 专家 | WGMMA 优化,自定义尾操作 |
 98  | 第 5-6 周 | 研究 | 探索 cuTile,与 Triton 对比 |
 99  | 第 7-8 周 | 贡献 | 提交 PR,添加新特性或优化 |
100  
101  **产出:**
102  - 合并到项目的贡献
103  - 优化技术研究笔记
104  - 发现展示
105  
106  ---
107  
108  ## 📖 完整模块序列
109  
110  ### 阶段 0:基础(2天)
111  
112  ```
113  步骤 1:阅读文档
114  ├── [快速开始](./quick-start) — 环境搭建
115  ├── [前置要求](./prerequisites) — 依赖
116  └── [项目架构](./architecture) — 项目结构
117  
118  步骤 2:验证环境
119  ├── 运行所有示例
120  ├── 生成首个基准报告
121  └── 探索代码结构
122  ```
123  
124  ### 阶段 1:TVM 编译器优化(3天)
125  
126  ```
127  主题:端到端优化工作流
128  ├── 基线:PyTorch vs TVM
129  ├── 自动调优:Ansor 搜索
130  └── 手动调度:TensorIR 原语
131  
132  关键概念:
133  • Relay IR 表示
134  • 调度原语(split, reorder, vectorize, bind)
135  • 硬件感知优化
136  
137  实践:
138  1. 运行 1_import_and_baseline.py
139  2. 用不同试验次数运行 2_auto_scheduler_tuning.py
140  3. 修改 3_tensorir_manual_schedule.py tile 大小
141  4. 对比性能结果
142  
143  产出:理解编译器优化流水线
144  ```
145  
146  ### 阶段 2:运行时扩展(3天)
147  
148  ```
149  主题:ONNX Runtime 自定义算子
150  ├── Python API 集成
151  ├── C++ 算子实现
152  └── CUDA 内核开发
153  
154  关键概念:
155  • ORT 执行提供器架构
156  • 自定义算子注册
157  • Python-C++-CUDA 桥接
158  
159  实践:
160  1. 理解 GELU 实现
161  2. 为不同激活函数修改内核
162  3. 使用 Nsight Systems 分析
163  4. 测量端到端延迟
164  
165  产出:能够开发自定义推理算子
166  ```
167  
168  ### 阶段 3:高性能计算(4天)
169  
170  ```
171  主题:CUTLASS GEMM 优化
172  ├── GPU 内存层次结构
173  ├── Tensor Core 编程
174  └── CUTLASS 抽象
175  
176  关键概念:
177  • 共享内存 tiling
178  • 寄存器级优化
179  • WGMMA 指令(Hopper)
180  • 性能分析
181  
182  实践:
183  1. 研究 hopper_gemm 实现
184  2. 实验不同 tile 大小
185  3. 使用 Nsight Compute 分析
186  4. 与 cuBLAS 对比
187  
188  产出:理解高性能内核开发
189  ```
190  
191  ### 阶段 4:未来方向(2天)
192  
193  ```
194  主题:下一代编程模型
195  ├── cuTile 抽象
196  ├── 与 Triton 对比
197  └── 编译器自动优化
198  
199  关键概念:
200  • Tile 级编程
201  • 生产力与性能权衡
202  • GPU 编程的未来
203  
204  实践:
205  1. 运行 cuTile 示例
206  2. 与 Triton 实现对比
207  3. 撰写分析文档
208  
209  产出:对未来 GPU 编程趋势的视角
210  ```
211  
212  ---
213  
214  ## 📝 学习技巧
215  
216  ### 高效学习策略
217  
218  1. **边读边实践** — 不要只读——运行每个示例
219  2. **修改参数** — 改变大小、计数、阈值
220  3. **分析一切** — 使用 Nsight 工具理解行为
221  4. **记录发现** — 保留优化技术笔记本
222  5. **基准测试** — 始终测量变更前后的性能
223  
224  ### 避免常见陷阱
225  
226  | ❌ 不要 | ✅ 要 |
227  |----------|------|
228  | 跳过前置条件 | 首先验证环境 |
229  | 匆忙过示例 | 理解每一步 |
230  | 忽略失败测试 | 诊断并修复问题 |
231  | 假设硬件相同 | 在你的硬件上基准测试 |
232  | 跳过分析 | 使用工具验证改进 |
233  
234  ---
235  
236  ## 🎓 推荐背景阅读
237  
238  ### 必读
239  
240  - [TVM 文档](https://tvm.apache.org/docs/)
241  - [CUDA 编程指南](https://docs.nvidia.com/cuda/cuda-c-programming-guide/)
242  - [CUTLASS 文档](https://github.com/NVIDIA/cutlass/tree/main/media/docs)
243  
244  ### 进阶
245  
246  - 《大规模并行处理器编程》(Kirk & Hwu)
247  - 《计算机架构:量化方法》(Hennessy & Patterson)
248  - TVM 论文:[Apache TVM](https://tvm.apache.org/)
249  
250  ---
251  
252  ## ✅ 进度清单
253  
254  ### 初学者
255  - [ ] 环境搭建完成
256  - [ ] 所有示例成功运行
257  - [ ] 首个基准报告已生成
258  - [ ] 文档已阅读
259  
260  ### 进阶
261  - [ ] 修改的 TVM 调度的可用
262  - [ ] 自定义 ORT 算子变体已测试
263  - [ ] CUTLASS 配置已基准测试
264  - [ ] 性能报告已创建
265  
266  ### 专家
267  - [ ] 自定义 TVM pass 已开发
268  - [ ] WGMMA 优化内核已实现
269  - [ ] 研究对比已完成
270  - [ ] 贡献已提交
271  
272  ---
273  
274  ## 🤝 社区
275  
276  - **讨论:** 使用 GitHub Discussions 提问
277  - **问题:** 报告 bug 和功能请求
278  - **贡献:** 查看 [贡献指南](./contributing)
279  
280  ---
281  
282  *从 [快速开始](./quick-start) 开始您的旅程!*