我写了一套 TileLang 系统教程
9 月 30 日 DeepSeek 开源了面向昇腾的整套基础设施,我花大半天把材料整理成一套 39 章的 TileLang 教程。教程已经上线,这篇文章专门用来收集反馈。
- #tilelang
- #tutorial
- #compiler
- #ascend
9 月 30 日,DeepSeek 开源了面向昇腾的一整套基础设施:TileLang 昇腾版、TileKernels、DeepGEMM-Ascend、FlashMLA、DeepSelect、DeepEP-Ascend。看到这批仓库之后我做了个决定:把它们读一遍,同时把读的过程整理成一份教材。
这份教材就是 TileLang 系统教程,五部分、39 章。写它花了大半天,主要是靠 AI 完成的——材料的收集、整理和成稿几乎都是模型在做,我负责定方向、划边界,然后一章章审。这件事本身也说明了一个变化:一套这个规模的教程,成本已经低到可以当成一次尝试来做。
教程首页把内容讲得比较细,这篇文章只说三件事:为什么要写,它写了什么,以及请读到它的人来挑毛病。
为什么是现在
直接的原因是 DeepSeek 这次开源。TileLang 本身不缺资料:官方文档、仓库里的示例、Zero to Hero 系列、还有 DeepSeek 的几篇技术报告,质量都很高。麻烦在于它们是散的。文档讲 API,示例给一段能跑的代码,报告讲设计动机和性能,各自都成立,却拼不到一起。想弄明白“为什么这样写就快”,得在几个来源之间来回翻,再自己把结论连起来。
这批仓库同时把另一件事推到了眼前:一整套面向昇腾的训练和推理基础设施,第一次被完整地开源出来。这些代码本来要一个个仓库去啃,如果手上有一份材料,能从算法一路讲到 TileLang 写法,再讲到后端实现,读起来会省下很多力气。我就是从这个念头发起的:先给自己写一份能从头读到尾的教材,顺手把过程中查到的东西整理出来。
目标定得很具体,读完能做到三件事:能用 TileLang 写出生产级别的算子,能理解从零训练和推理一个 7B 模型每一步在做什么,能读懂并修改 TileLang 的编译期和 NVIDIA、昇腾两条后端。
为什么重点讲昇腾
写的时候我把昇腾放在了和 NVIDIA 同等的位置,第五部分还用了九个章节专门拆解 DeepSeek 这次开源的全栈。这不只是因为这些代码刚出来、值得读。
更基本的判断是:未来几年,国内大概率要大量使用华为的芯片。华为的芯片用不了 CUDA,过去围绕 NVIDIA 积累的工具链、写法和经验,有相当一部分不能直接搬过去,需要另找一条路。TileLang 在这件事上是个很好的选择:它把硬件差异抽象掉一层,同一套编程模型可以落到 NVIDIA 和昇腾两条后端上。
这部分知识眼下能查到的系统材料不多,所以我愿意在教程里多花笔墨。对要在国内做 AI 基础设施的工程师来说,昇腾这一线可能才是最需要的部分。
它长什么样
全书五部分:宏观(为什么需要 tile DSL、它处在软件栈的哪一层)→ 实用(第一个 kernel、核心原语,GEMM、Attention、MoE、量化四类算子实战,再到训练和推理一个 7B 模型)→ 深入(IR 与 pass、布局推导、流水与同步、两条后端)→ 前沿方向与贡献指南 → 最后九章拆解 DeepSeek 这次开源的昇腾全栈。
每章都是独立页面,有学习目标、可交互习题和整章自测。全书 512 道习题、298 道自测题、238 张图,通读大约 22 小时,还不算动手练习。也不必从头读到尾,首页按目标给了几条阅读路径:只想快点能写算子、要训练推理大模型、要改编译器和后端、要在昇腾上做真实项目,各有各的走法。
有一条边界要先讲清楚:我手上没有 NVIDIA GPU,也没有昇腾 NPU。需要加速器的示例都标注为“仅静态核对”,性能数字全部来自有出处的引用,并带上测量条件。请把这本书当成一张地图,而不是一份实测报告。也正因为成稿很快,书里更可能藏着疏漏,这是我特别需要反馈的原因。
请你来挑毛病
写的过程中我最大的感受是:自己觉得讲清楚了,和读者真的能读懂,是两件事。
所以我需要反馈,而且越具体越好:
- 哪里读不下去?第几章、哪一段、卡在哪个概念上。
- 哪里和源码或者你的实测不一致?请带上章节、版本和现象,这是我最想收到的一类反馈。
- 哪里缺了东西?比如某个错误、某个性能陷阱、某条你踩过的坑,教程里没有。
- 哪段代码有问题?尤其是需要真机才能验证的部分,我这边跑不了,你在真机上跑过之后的结论最有价值。
留言直接写在这篇文章下面就好,我能收到。不方便公开说,也可以发邮件到 i@huandu.me。每一条我都会看,能改的会改,改不动的会把原因说清楚。
教程入口是 tilelang-tutorial.huandu.me,第一章在这里:为什么需要 Tile DSL。