PyPTO 算子开发系列教程

本教程面向希望基于 PyPTO 学习昇腾 NPU 算子开发的开发者,围绕 CANN、芯片基础、PyPTO 编程范式、初级算子实践与中高级算子实践, 提供一套由浅入深的 Notebook 教程。

课程内容覆盖从整体认知建立,到 Hello World 跑通、API 与计算图理解, 再到 elementwise、matmul、reduction、tiling / shape / slice / transpose 等基础实践,并进一步进入归一化、FFN、动态 shape、Attention、 Transformer 组合、Cost Model 与 ACLGraph,帮助开发者建立使用 PyPTO 进行算子开发的系统化学习路径。

教程按章节划分,每个章节包含以下内容:

  • Notebooks:课程知识讲解、示例代码、练习或章节实践
  • Answer:章节练习与实践的答案占位目录
  • Images:章节配图占位目录
  • Src:不便直接写入 Notebook 的源码占位目录

适用对象

  • 希望系统学习 PyPTO 算子开发的初学者
  • 已具备 CANN / 昇腾基础认知,希望进一步理解 PyPTO 编程模型的开发者
  • 需要通过 Notebook 方式快速体验 PyPTO 开发流程的学习者

整体学习目标

完成本教程后,学习者应能够:

  1. 说明 CANN、昇腾芯片与 PyPTO 之间的关系与分层职责
  2. 理解 PyPTO 的 Host / Kernel 分工、MPMD 编程范式和计算图抽象
  3. 跑通 PyPTO Hello World,并理解基本执行流程
  4. 使用 PyPTO 完成基础 elementwise、matmul、reduction 算子表达
  5. 理解 vec / cube tile shapes,以及 shape、slice、transpose 等基础操作
  6. 看懂归一化、FFN、动态 shape、Attention 等中高级模块的 PyPTO 实现
  7. 理解 Cost Model 和 ACLGraph 等系统分析与加速能力的基本使用场景

环境要求

  • 硬件:昇腾 NPU(建议 Atlas A2 / A3 系列)
  • 软件:CANN 8.5.0 及以上版本
  • Python:Python 3.10 及以上
  • 工具:Jupyter Lab / Notebook

说明: 当前教程按 PyPTO Notebook 交互式学习方式组织,建议在支持 CANN 与 torch_npu / pypto 的环境中体验。本教程支持cannlab运行,开始学习前需在cannlab里运行pip install pypto。

章节规划

第一章:CANN、芯片以及 PyPTO 介绍

目录:01_cann_chip_pypto_intro

目标:

  • 建立 CANN、昇腾芯片和 PyPTO 的整体认知
  • 理解芯片硬件能力、软件栈与编程框架之间的关系

Notebook 列表:

Notebook 说明
01.01_chapter_intro.ipynb 章节介绍与学习目标
01.02_CANN.ipynb CANN 基础认知
01.03_chip.ipynb 昇腾芯片基础认知
01.04_PyPTO.ipynb PyPTO 框架基础介绍
01.05_chapter_test.ipynb 章节实践

第二章:PyPTO 算子开发基础知识

目录:02_pypto_operator_development_basics

目标:

  • 理解一个最小 PyPTO 算子的定义、运行与验证流程
  • 掌握 MPMD 编程范式、Host / Kernel 分工以及 API / 计算图基本概念

Notebook 列表:

Notebook 说明
02.01_chapter_intro.ipynb 章节介绍与学习目标
02.02_run_hello_world.ipynb PyPTO Hello World 跑通
02.03_programming_paradigm_mpmd.ipynb 编程范式与 MPMD
02.04_api_and_compute_graph.ipynb API 与计算图基础
02.05_chapter_test.ipynb 章节实践

第三章:初级算子实践

目录:03_beginner_operator_practice

目标:

  • 通过基础案例理解 PyPTO 中不同算子类型的表达方式
  • 掌握常见基础操作在 Notebook 场景中的组织与验证方法

Notebook 列表:

Notebook 说明
03.01_chapter_intro.ipynb 章节介绍与学习目标
03.02_elementwise_vec_tile.ipynb elementwise 与 vec tile
03.03_matmul_cube_tile.ipynb matmul 与 cube tile
03.04_reduction_ops.ipynb reduction 算子
03.05_tiling_shape_slice_transpose.ipynb tiling / shape / slice / transpose
03.06_chapter_practice.ipynb 章节实践

第四章:中高级算子实践

目录:04_intermediate_advanced_operator_practice

目标:

  • 在初级算子实践基础上,学习更接近模型模块的 PyPTO 写法
  • 掌握自定义激活函数、Softmax、归一化、FFN、动态 shape、控制流和 Attention 的组织方式
  • 理解多 kernel 组合、Cost Model 和 ACLGraph 在系统分析与加速中的作用

Notebook 列表:

Notebook 说明
04.01_chapter_intro.ipynb 章节介绍、学习路线与运行准备
04.02_operator_composition_and_softmax.ipynb 自定义激活函数与 Softmax
04.03_normalization_and_ffn.ipynb LayerNorm、RMSNorm 与 FFN
04.04_dynamic_shape_and_controlflow.ipynb 动态 Shape 与控制流
04.05_attention_and_transformer.ipynb Attention 与 Transformer 组合
04.06_system_and_acceleration.ipynb Cost Model、ACLGraph 与系统加速
04.07_chapter_practice.ipynb 章节实践

当前状态说明

当前版本为课程初版内容,已完成主要 Notebook 结构与章节内容草稿。 后续会继续补充:

  • 章节实践答案
  • 配图资源
  • 需要独立存放的源码文件
  • 在线体验与运行验证信息

反馈与建议

若在阅读或运行教程过程中遇到问题,欢迎通过仓库 Issue 反馈。