
2026 年 1 月 23 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营 Triton & 九齿系列第三课《九齿二重:渐悟》开讲。
本节课主要演示九齿如何简化并行编程。
九齿环境配置与基础概念
1. NineToothed Puzzles

2. 九齿张量基础
- 符号张量:不存储实际数据值,仅存储元信息和符号表达式。
- 创建张量:
- 通过
Tensor类创建,指定具体形状(如shape=(2, 3))或仅指定维度(如ndim=2)。
- 通过

- 张量求值与可视化:
- 使用
eval()方法将符号张量转换为具体的numpy数组。 - 打印内容显示元素的索引而非实际数值,有助于理解并行计算中的数据划分。
- 使用
subs()函数将符号形状的张量转换为数值形状的九齿张量,然后通过eval()转为numpy数组。
- 使用

九齿核心三要素深入解析
1. 要素一:排布
- 概念:定义如何将输入张量划分到不同的并行计算单元。
- 操作:使用
tile操作分块张量。 - 嵌套张量:查看层级信息通过
.shape和.dtype。

- 可视化:使用
visualize()函数展示结构。 - 符号化参数:增加灵活性,便于自动调优。
- 一致性原则:所有参与运算的张量在排布后最外层形状必须一致。

2. 要素二:应用
- 概念: 定义在每个并行程序实例上执行的具体计算逻辑。
- 重要区别: 应用函数中操作的张量是经过排布后的“块”(即次外层张量),而非原始的全局张量。
- 运算示例:
基础运算:如向量加法 (z = x + y)。 - 归约操作: 如求和 (
tl.sum)。当分块导致块大小不匹配时(如向量长度不是 blocksize 的整数倍),需要使用 other 参数来填充无效区域的值。 - 迭代操作: 通过对排布后产生的多层张量进行迭代,可以实现更复杂的算法。这通常要求张量至少被排布成三层。
3. 要素三:张量
- 概念:声明算法所操作的张量的基本属性(如维度)。
- 作用:为九齿编译器提供必要信息,以生成正确的代码。
总结
本节课演示了九齿如何简化并行编程,重点在于理解符号张量、嵌套结构和自动并行机制,为开发高效计算内核奠定基础。

💡 学习贴士
更多细节及完整课程内容,请观看直播或查看课程回放。
链接:https://www.infinitensor.com/camp/winter2025
📚 训练营报名持续进行中
扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名

