2024年5月28日,寒武纪开源了跨平台AI编译器前端Triton-Linalg,以此帮助开发者降低硬件适配成本,提高集成效率。
寒武纪此次发布的Triton-Linalg专为支持Triton语言设计,是国内首个开源的基于Linalg编译技术的全面支持特定领域架构(DSA, Domain-Specific Architectures)指令集的AI编译器前端。Triton-Linalg不仅完备支持Triton编程原语,还能高效处理从复杂的指针操作到张量(Tensor)的转换,大幅降低了AI编程的难度。
通过Triton-Linalg编译器前端,开发者或者硬件厂商可以以极低的开发成本,快速集成支持Triton语言特性的后端指令集,并对接上层AI应用。
↓ GitHub仓库(点击文末“阅读原文”可直接跳转)↓
Triton-Linalg技术方案
① Triton整体架构
Triton是一个用于编写高效自定义深度学习算子的语言和编译器。相比CUDA,Triton在实现深度学习算子开发中具有更高的生产力和更大的灵活性。
▲ Triton的整体架构图参考Triton官方文档设计
1) 快速高效
2) 易于上手
3) 生态兼容性高
4) 适配度高
Triton支持PyTorch原生框架,输入可以直接接PyTorch Tensor。
③ Why Linalg?
Linalg提供了一个高层次的抽象,让开发者可以专注于线性代数运算的数学性质,而不需要关注底层实现细节。Linalg使用具名的操作来描述常见的线性代数模式,如矩阵乘法(Matmul)、矩阵向量乘法(Matvec)和其他元素级的二元运算。
Linalg操作内部自带循环结构的描述,每一个操作都隐式地定义了其迭代空间和迭代方式,从而消除了显式循环控制的需要。这种抽象不仅简化了代码,还为自动循环优化提供了可能。
Linalg支持通过泛型操作定义来捕捉更广泛的模式。泛型操作允许用户定义新的线性代数操作,其中包括输入、输出和计算规则的抽象描述。这使得Linalg能够支持超出预定义操作集合的计算模式。
Linalg的设计是硬件无关的,这样相同的高级代码可以映射到不同的目标硬件上,包括 CPU、GPU和其他加速器。这一特性使Linalg成为编写可移植代码的有力工具。
寒武纪发布的Triton-Linalg由4个部分构成:Analysis、Conversion、Dialect和Transforms。
▲ Triton-Linalg的转换流程图
目前,社区已在Linalg方言上集成了丰富的基础设施,涵盖Tile、Fuse、Promotion等超过30种不同的变换操作(Transform op)。基于这种方言,可以实现大量基础设施的复用,从而降低集成新硬件的工作量。
在人工智能时代,众多专业硬件应运而生,以满足性能需求。为了优化这些架构的效能,设计者通常会定义一系列较大粒度的算子。这些算子专为特定任务量身定制,使得硬件能够更高效地处理复杂的计算需求。为此,寒武纪的Triton-Linalg仓库在转换过程中遵循几个原则:
- 例如:tt.reduce转成linalg.reduce;tt.dot转成linalg.matmul等。
- 例如:识别triton reduce算子内部的region的计算逻辑,转到特化的算子。
02.
直接使用开源的、硬件无关的Triton-Linalg编译器前端,硬件厂商只需实现Linalg到硬件层的后端集成。这样不仅可以省去学习复杂编程语言的成本,还可以无视指令集差异进行适配。
寒武纪开源的Triton-Linalg可以降低企业和个人的软件采购成本,每个开发者都可以利用寒武纪提供的技术路径来使用所需的硬件后端,而不需要支付昂贵的许可费用。此外,Triton-Linalg还减少了对专有软件的依赖,降低了成本风险。
开发者可以根据自己的需求修改寒武纪提供的源码,以适应不同的场景和用途。这种灵活性使得行业解决方案、算法、软件、硬件企业不再是一对一的关系,而可以转变为多对多的关系。所以通过寒武纪开源的Triton-Linalg,任何行业、算法在做自己的开发时,都不用局限于硬件的类型。
03.
寒武纪的技术认知
寒武纪发布Triton-Linalg的初心,一是希望为开发者和硬件厂商提供一个高效、易用的技术方案,简化编程的过程,从而降低开发成本。与此同时,寒武纪也在用实际行动为Triton社区的生态建设贡献力量。
寒武纪Triton-Linalg项目开源负责人表示:“在大模型时代,寒武纪致力于推动行业创新和开放合作。开源Triton-Linalg编译器前端,也是想以寒武纪的技术积累来为行业里的伙伴们做点事情。”
寒武纪相信,推动人工智能领域未来技术进步的核心是开放、协同、共享。开源开放的项目使开发者凝聚起来,通过配合与协作,让技术成果被广泛使用。寒武纪将秉承开放、协同、共享的理念,持续用更多的技术创新来赋能行业、用更多的技术分享来赋能开发者。
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/79562.html