注册并分享邀请链接,可获得视频播放与邀请奖励。

Bojie Li (@bojie_li) “昨天 DeepSeek 开源的 TileLang Ascend 很有意思。抽象层次跟我 2019 年在昇腾里做的” — TopicDigg

Bojie Li 的个人资料封面
Bojie Li 的头像
Bojie Li
@bojie_li
加入 June 2013
0 正在关注    0 粉丝
昨天 DeepSeek 开源的 TileLang Ascend 很有意思。抽象层次跟我 2019 年在昇腾里做的 AKG 里面的 isl schedule 很类似,都是把 L0 A/B/C(矩阵计算的输入输出缓冲)、UB(向量计算的缓冲)等显式分配出来,然后编排数据搬移和计算。 一直有不少人说,昇腾难编程;架构是为 CNN 定制的,不适合 Transformer。我认为这两个说法都站不住脚。 首先,随便写个 CUDA 算子确实是不用关心片内的缓存层次,也不用做矩阵和向量计算单元之间的同步,也不用让数据按照 16 的倍数对齐。但是要把性能优化到极致,还是必须考虑 GPU microarchitecture 的。不想自己折腾数据搬移和同步的可以试用我们开源的 AKG 自动生成算子,写 Python 总比写 CUDA 简单。 其次,昇腾跟 TPU 等很多加速器类似,都是考虑到 Transformer 等神经网络的计算特征(QK 矩阵计算 -> Softmax 向量计算 -> PV 矩阵计算这样交错进行),使用专用缓冲区甚至 950 中的专用数据通路来降低数据搬移开销。Img2col 这些为 CNN 定制的指令也换成了为 Transformer 定制的 NDDMA 数据重排指令。要知道,950 的制程跟 A100 是相当的,但性能可达 H100,就是靠架构优化。 截图出自我的开源书《深入理解 AI Infra》
显示更多
0
4
122
10
转发到社区