稀疏编译器:解锁LLM推理新前沿 | A100 GPU赋能稀疏计算

稀疏编译器:解锁LLM推理新前沿 | A100 GPU赋能稀疏计算

大语言模型推理中实现100倍加速的稀疏技术。探索稀疏编译器如何革新LLM推理,解锁前所未有的效率和速度。在之前关于“LLMs如何通过稀疏性加速推理”的讨论中,我们探讨了第二部分“利用激活稀疏性加速推理”。点击此处回顾第一部分“LLMs如何进行剪枝”。在本篇中,我们将深入第三部分“稀疏编译器对LLM推理的影响”。

编译器的必要性

近期发展表明,深度学习计算正变得日益稀疏,即在包含多个零的张量上执行操作。除了稀疏模型权重(通常是静态且预先已知的),还发现了更多依赖于输入且仅在运行时才知的稀疏模式,即动态稀疏性。例如,GPT和OPT等大语言模型展现了多种动态稀疏性。首先,Transformer模型(以及其他类型的模型)在其输入、激活和梯度中表现出固有的动态稀疏性。在激活图中,仅有极少元素非零(例如T5-Base为3.0%,ViT-B/16为6.3%)。其次,利用动态稀疏性进一步扩展DNN模型。大多数现有参数超过万亿的模型采用专家混合(MoE)架构,该架构根据稀疏输入动态激活专家。此外,动态稀疏性训练在训练过程中动态剪枝模型中较不重要的连接,因其卓越的计算效率而受到越来越多的关注。动态稀疏性中稀疏模式在运行时未知,这给深度学习带来了重大挑战。由于预处理带来的巨大开销,先进的稀疏感知深度学习解决方案仅限于预定义的静态稀疏模式。高效执行动态稀疏计算通常面临GPU友好的张量块配置(用于高效执行)与稀疏感知块形状中最小化浪费覆盖(张量中非零值)之间的矛盾。LLM稀疏性需要使用稀疏算子,而传统的库如cuSPARSE或Sputnik由于其通用设计而非最优,要么仅支持静态编译的稀疏感知核,要么需要将稀疏矩阵动态转换为密集格式,从而在动态稀疏场景中产生显著的性能开销。

主流编译器对比

当前主流的稀疏计算编译器主要包括cuSPARSE、Sputnik、OpenAI Block Sparse、SparTA和PIT,参考自[11]。以下是加速数据对比表:场景:4096 × 4096 × 4096的矩阵乘法 指标:延迟(毫秒)

值得一提的是,PIT优于当前最先进的稀疏优化,相比cuSPARSE、Sputnik、OpenAI Block Sparse和SparTA,分别实现了高达88.7倍、5.8倍、17.5倍和5.7倍的加速。

编译器对LLM推理的影响

OPT

实验[11]使用Alpaca数据集对两个版本的OPT模型(OPT13B和30B)在八块V100–32GB GPU上评估PIT。PIT在OPT上应用了两种动态稀疏优化:(1) 消除同一批次中不同长度句子的填充开销;(2) 利用FFN层中ReLU激活产生的细粒度稀疏性(高达99%)。批量大小设置为32,PyTorch-S使用Triton作为后端。

OPT的每批端到端延迟和内存占用

PIT的性能分别超过PyTorch、PyTorchS和DeepSpeed 2.1倍~2.3倍、2.5倍~3.0倍和2.0倍~2.2倍。动态序列中避免填充使得PIT相对基线实现了1.6倍~1.7倍的加速。通过进一步利用FFN层ReLU激活中的动态稀疏性,PIT将性能再提升1.3倍~1.4倍。与使用块大小为32x32的Triton块稀疏核的PyTorch-S相比,PIT采用更小的微块(即1x32),并通过SRead和SWrite进行高效计算,避免了计算浪费。此外,PyTorch-S还受到稀疏格式转换开销的影响,因此延迟最高。在内存消耗方面,DeepSpeed内存使用最低,因为它将整个编码器层融合为一个算子,节省了激活内存。

MOE

在实验[11]中,对具有编码器和MoE结构的大型视觉模型SwinMoE,使用A100和float16精度评估PIT的性能。对于视觉变换器,同一批次内的输入图像被缩放至相同分辨率以确保序列长度一致。实验中,我们比较了不同批量大小和专家数量下Swin-MoE的端到端推理延迟和内存使用。MegaBlocks通过同时执行所有专家并有效利用稀疏核避免计算浪费,优于其他基线。与MegaBlocks相比,PIT通过支持跨内存层次的数据移动中的数据重排进一步提升了性能。

SwinMoE在A100上的端到端延迟和内存占用

与PyTorch、PyTorchS、Tutel、DeepSpeed和MegaBlocks相比,PIT分别实现了1.5倍~6.3倍、1.5倍~2.9倍、1.1倍~1.8倍、1.2倍~1.6倍和1.1倍~1.4倍的加速。PIT在Swin-MoE上的性能提升低于Switch Transformer,因为Swin-MoE的专家数量明显少于Switch Transformer。因此,当专家数量从8增加到32时,MoE层仅贡献了端到端延迟的23.6%到61.2%。仅比较MoE层的延迟时,PIT比MegaBlocks快约1.2倍~1.7倍。以下是PIT的对比数据汇总:

最后,我们来讨论加速所需的硬件支持。

GPU

NVIDIA A100

A100采用新的Ampere架构,拥有多达6912个CUDA核心和40GB高速HBM2内存。它还支持第二代NVLink技术,实现快速的GPU间通信,提升大模型训练速度。A100引入了强大的新第三代Tensor Core,全面支持DL和HPC数据类型,以及新的稀疏功能,进一步将吞吐量翻倍。A100中的TF32 Tensor Core运行为DL框架和HPC中的FP32输入/输出数据提供了一条直接的加速路径,运行速度比V100 FP32 FMA操作快10倍,在稀疏情况下快20倍。对于FP16/FP32混合精度DL,A100的性能是V100的2.5倍,在稀疏情况下达到5倍。使用PyTorch框架运行AI模型时,与上一代V100芯片相比,A100在BERT模型训练中实现了6倍的性能提升,在BERT推理中实现了7倍的提升。

Intel Max系列GPU

根据参考文献[18],近期在NVIDIA V100 GPU上实现的两种稀疏矩阵操作,与V100上的参考实现相比,性能提升高达10倍。

结论

总结来说,关于通过稀疏性加速LLM推理,有以下三个结论:

  • 权重稀疏性(50%)、激活稀疏性(90%)和MOE稀疏性(例如Mistral 8x7B具有75%的动态稀疏性)是正交因素(效果可以叠加,但模型性能可能受影响)。结合PIT编译器对稀疏模型2~3倍的加速效果,与当前主流推理框架(TGI/vLLM等)相比,理论加速上限为5~30倍。
  • 延迟是当前稀疏技术的主要关注点(稀疏性有一定效果;批量越大,稀疏效果越差)。吞吐量方向将是新的优化方向,因为激活稀疏性呈现一定的幂律分布,蕴含着巨大的工程优化潜力。
  • 将LLM中的非ReLU激活转换为ReLU激活的成本相对较低(约3%的微调成本;数据质量相对重要)。此外,DejaVu中的预测器训练成本较低(训练速度快且与数据无关)。结合推理速度提升带来的成本降低,这是一项高ROI的举措,具有商业可行性。

参考文献

[11] Pit: Optimization of dynamic sparse deep learning models via permutation invariant transformation

[18] Performance Optimization of Deep Learning Sparse Matrix Kernels on Intel Max Series GPU

novita.ai 提供Stable Diffusion API,以及数百种最快、最便宜的AI图像生成API,涵盖10,000个模型。🎯 最快2秒生成,按量付费,每张标准图像最低$0.0015,可添加自定义模型,无需维护GPU。免费分享开源扩展。

推荐阅读 揭密LLM-Pruner技术:推理速度翻倍

激活稀疏性革命:无需重新训练即可提升模型性能并加速推理!