TileLink: Generating Efficient Compute-Communication Overlapping Kernels using Tile-Centric Primitives

文章标题:TileLink:使用以 Tile 为中心的原语生成高效的计算-通信重叠内核
作者/机构:Size Zheng, Jin Fang, Xuegui Zheng, Qi Hou, Wenlei Bao, Ningxin Zheng, Ziheng Jiang, Dongyang Wang, Jianxi Ye, Haibin Lin, Li-Wen Chang, Xin Liu (均来自 ByteDance Seed)

A1 主要贡献

本文旨在解决大型深度学习模型分布式训练中,通信开销(占总执行开销的10%-50%)限制计算效率的核心问题。提升性能最有效的方法是计算与通信的重叠(Overlapping),现有技术主要分为两种:算子分解(operator decomposition)和核融合(kernel fusion)。算子分解易于实现,但常因内核分解过细、缓存利用率低和主机干预同步开销大而导致性能不佳。核融合性能更优,但需要深厚的硬件专业知识,开发难度大且难以跟上算法的快速迭代。

为了应对这些挑战,本文提出TileLink框架,其研究目标是通过编译技术高效地开发和生成计算-通信重叠内核。

本文的主要贡献和创新点如下
1. 提出TileLink框架:该框架包含前端和后端。
* 前端:通过以Tile为中心(tile-centric)的原语,将通信和计算的设计空间解耦。这允许通信和计算部分可以采用不同的优化策略和分块(tiling)方法,并通过定制的屏障控制来维持生产者-消费者依赖关系,从而在不直接编写底层汇编代码的情况下,实现通信与计算核的自动化融合。
* 后端:将前端的tile-centric原语编译成底层硬件指令,并集成通信与计算内核。通过以Tile为中心的映射策略(包括形状映射、rank映射和通道映射,支持静态和动态两种方式)来确保正确的数据交换和屏障操作。
2. 通用性和灵活性:通过TileLink实现了多种重叠工作负载,包括自注意力(self-attention)、多层感知机(MLP)和混合专家模型(MoE),展示了其灵活性和通用性。
3. 高性能实现:在8卡H800 GPU上的实验表明,与非重叠基线相比,TileLink实现了1.17倍至20.76倍的加速。其性能与当前最先进的重叠库(如FLUX和RingAttention)相当或更优。在端到端模型评估中,与PyTorch相比,TileLink在8卡H800上平均加速1.32倍,在16卡H800(双节点)上平均加速1.29倍。

图1 层内并行FFN示例。
图1 层内并行FFN示例。

A3 背景知识/关键Observation/设计原则

2.1 通信与层内并行

2.2 通信和计算的重叠

2.3 代码生成编译器

2.4 激励性示例

表1 TileLink与先前工作的特性比较。
表1 TileLink与先前工作的特性比较。

表2 激励性示例。
表2 激励性示例。

表3 TileLink中的以Tile为中心的原语
表3 TileLink中的以Tile为中心的原语

A2 方法细节

3.1 解耦的设计空间

图2 通信和计算的三个设计子空间示例。
图2 通信和计算的三个设计子空间示例。

图3 以Tile为中心的原语支持不同的信号控制和数据传输方向。
图3 以Tile为中心的原语支持不同的信号控制和数据传输方向。

3.2 以Tile为中心的原语

3.2.1 信号原语

3.2.2 数据原语

4.1 以Tile为中心的映射

4.2 内存一致性的编译

4.3 其他编译优化

图4 使用TileLink的GEMM+RS重叠内核。
图4 使用TileLink的GEMM+RS重叠内核。

图5 使用TileLink的AG + MoE重叠内核。
图5 使用TileLink的AG + MoE重叠内核。

图6 AG KV + self-attention overlapping Kernel.
图6 AG KV + self-attention overlapping Kernel.

6. 实现

图7 TileLink的编译和运行时。
图7 TileLink的编译和运行时。

表4 基准测试形状。S是序列长度,H是隐藏维度长度,I是中间大小,E是专家数量。
表4 基准测试形状。S是序列长度,H是隐藏维度长度,I是中间大小,E是专家数量。

A4 实验环境

A4 实验结果

单层性能

端到端评估

图8 8xH800上MLP层(AG+GEMM和GEMM+RS)的性能结果。
图8 8xH800上MLP层(AG+GEMM和GEMM+RS)的性能结果。

图9 8xH800上MoE层(AG + Gather + GroupGEMM和GroupGEMM + Scatter + Reduce + RS)的性能结果。
图9 8xH800上MoE层(AG + Gather + GroupGEMM和GroupGEMM + Scatter + Reduce + RS)的性能结果。

图10 8xH800上自注意力层的性能结果和重叠率。
图10 8xH800上自注意力层的性能结果和重叠率。

公式 重叠率
公式 重叠率

图11 8xH800和16xH800上端到端模型的性能结果。
图11 8xH800和16xH800上端到端模型的性能结果。

A5 结论

本文提出了TileLink,一个用于生成高性能计算-通信重叠内核的框架。为了解决大型DNN模型在分布式系统部署中通信与计算重叠的关键问题,TileLink通过一套以tile为中心的原语来提高开发效率,并通过以tile为中心的映射来自动生成底层代码。这种方法克服了现有重叠研究中性能次优或开发困难的缺点。实验结果表明,与非重叠基线相比,TileLink实现了1.17倍至20.76倍的显著加速,其性能与最先进的重叠库相当。这证明了TileLink在提高分布式深度学习系统效率方面的有效性和潜力。

方法细节中的引用汇总