昇腾 CANN 学习路径指南
昇腾 CANN 软件栈由多层 API 和 Kernel 构成,包含多种接口。为了简化理解,可以将其分为三层:
- 高层:框架调用 — 类似 PyTorch、MindSpore 训练推理
- 中层:算子 API 调用 — AscendCL、ACL Python、算子编写接口
- 底层:Kernel 语言 — TBE、C++ Kernel、融合算子 DSL
这些接口并非重复,而是分工不同。
模型推理:Python(ACL Python)
适用场景:
- 部署 YOLO
- 部署大模型
- ONNX 转 OM
- 简单前后处理
推荐理由: Python ACL 是官方主推、最简单、最快上手的一套部署 API。无需接触复杂内存、流、Device buffer,也不用写 Kernel。
总结:不做算子开发,用 Python ACL 就够了。
深度部署:C++ AscendCL
适用场景:
- 性能要求高
- 大规模离线服务
- 推理服务并发、异步、流水线
- 自定义 DVPP / AIPP / Memory Pool 管理
推荐理由: 真实部署场景中,Python 可能较慢,多线程不友好,高并发时不稳定。C++ AscendCL 是 CANN 最稳、最强、最接近硬件的调用方式。
总结:做真正的工程化推理,C++ ACL 是必须掌握的语言。
算子开发:TBE 或 C++ Kernel
CANN 的算子开发分两类:
- TBE(Tensor Boost Engine):偏向静态图 + 大量已有模板,适合 Conv2D、Softmax、MatMul、BatchNorm 等已有算子的二次开发。
- C++ AICore Kernel:偏底层,写 AI Core 的 kernel pipeline,适合复杂融合算子手写 pipeline、算子性能极限优化、AICore scheduler 调优。
总结:TBE = 快速开发;C++ Kernel = 极致性能。
如果未来想往昇腾、GPU、NPU 算子岗发展,这块是必修课。
框架训练:MindSpore 或 PyTorch Adapter
CANN 的训练侧主要依托两条路线:
- MindSpore(原生最佳):CANN 和 MindSpore 生态紧密,使用原生能力、全栈功能,体验最好。
- PyTorch 前端:适合原本就用 PyTorch 的人,支持 AutoGrad、OpBuilder、AOT、动态图转图优化。
总结:训练方面,MindSpore 最稳;PyTorch 最方便。
选型建议
- 只做模型部署? 学:Python ACL
- 要做企业级推理服务? 学:C++ AscendCL
- 要做自定义算子? 学:TBE + C++ Kernel
- 搞训练? 学:MindSpore / PyTorch Frontend
- 科研学生? 学:Python ACL + PyTorch Frontend(最通用、性价比最高)
未来趋势
未来几年 CANN 的语言路线会更清晰:
- Python → 上层易用封装
- C++ ACL → 核心部署接口(长期稳定)
- TBE/C++ → 算子强相关,长期保持底层能力
- MindSpore → 训练路径主力
- PyTorch → 长期兼容前端生态
总结:路线已经很明确了,上层简单、底层增强、接口稳定。不会出现'学了白学'的情况。
作为入门 CANN 的新手,应清楚每一层都有存在的价值。搞清楚自己要做什么,选对应的一两门开始学,完全不会走弯路。
- 如果只是想跑通模型:学 Python ACL 就足够了。上手快、成本低、不需要理解底层。
- 如果想做能上线的工程部署:Python + C++ 是必须的组合。Python 写流程、C++ 保性能与稳定性。
- 如果想往深度技术、算子方向走:TBE + C++ Kernel + ACL 缺一不可。这是最吃技术也最值钱的一条路线,但不需要一开始就全学。
CANN 不需要一次学会所有语言,选对起点更重要。随着项目深入,自然会从"会用"走向"能调",越学越强,价值也就越高。


