PyTorch官宣去CUDA推理!Triton时代来了

文摘   2024-09-10 14:43   江苏  

9月4号PyTorch官网发布推文,代码编辑宣称实现了100%基于OpenAI的Triton语言推理的大语言模型,这是否意味着去CUDA时代的开端?



为何使用Triton


为什么要使用 100% Triton 进行探索?

Triton 提供了一条途径,使大模型能够在不同类型的 GPU 上运行—— NVIDIA、AMD,以及未来的 Intel 和其他基于 GPU 的加速器。它还在 Python 中为 GPU 编程提供了更高的抽象层,使我们能够比使用供应商特定的 API 更快地编写高性能内核



推理速度


PyTorch官方对当前流行的大模型(例如Meta的Llama3-8B和IBM的Granite-8B)在FP16精度推理,进行了Triton和CUDA实现的对比。

在NVIDIA H100和A100,Llama3-8B和Granite-8B分别基于Triton和CUDA推理速度

基于Triton内核的模型推理性能在NVIDIA H100上约为CUDA内核的0.76~0.78 在A100上则约为CUDA内核的0.62~0.82



内核编写


大语言模型一般均为Transformer架构,下图显示了典型的Transformer包含的操作。

Llama3中Transformer的核心操作包含图中每一个方块,其中主要操作有RMSNorm层标准化,Fused QKV、Attention和Projection等矩阵乘法操作,SiLU激活函数。

其中一些函数如RMSNorm、SiLU等,使用Torch.compile可以直接替换为Triton内核,使用英伟达内核可视化工具Nsight Systems,可以看到生成的内核,其中在矩阵乘法和注意力间较小的深绿色内核为Triton内核


图中越长的内核表示计算需要时间越长,可以看出矩阵乘法和注意力占据了约80%的时长所以,PyTorch官方手写了基于Triton的矩阵乘法和注意力内核


官方选择在AMD Flash内核上进行torch算子的封装,下图展示了编译后的Transformer内核流程,现在Llama3可以运行在100%由Triton编写的运行管道中。



内核测试


编写完成后,两种大语言模型均可以完成端到端推理,官方对比了两种模型在两种GPU下不同内核的单个Token推理速度。

端到端推理性能对比

总结来说,Triton 模型在 H100 上可以获得 CUDA 模型高达78%的性能,在 A100 上可以获得高达82% 的性能

端到端推理性能的差异官方也通过了内核性能的差异来解释,通过细致的对比每个过程内核的延迟,可以看出性能差距的来源。

内核推理性能对比

从上表我们可以看出:
  • Triton matmul 内核比 CUDA 慢1.2-1.4 倍
  • AMD 的 Triton Flash Attention 内核比 CUDA SDPA 慢1.6 倍

最近的新工作FlashAttention3和FlexAttention提供了更好的利用底层硬件的方法,为此官方也分别测试了在Triton上不同注意力机制的推理速度的对比。

NVIDIA H100上FlexAttention性能对比

可以明显看出Flex Attention显示出更长的上下文长度和解码问题形状的希望。



未来工作



未来,PyTorch 团队计划探索进一步优化 matmuls的方法,以便更好地利用硬件,并为基于 Triton 的方法实现更大的加速。

对于Flash Attention,PyTorch 团队计划探索 FlexAttention 和 FlashAttention-3 等内核中使用到的技术,以帮助进一步缩小 Triton 与 CUDA 之间的差距。同时还将探索端到端 FP8 LLM 推理


槿墨AI
产品服务

结合大模型通用知识及在交通、社会治理、安全生产、自然资源等行业领域的知识,深入业务场景,精确捕获用户意图,为用户提供智能问答、数据分析、报表生成、工作任务理解与执行等一系列服务

📞若您有相关需求,欢迎点击下方链接与我们沟通洽谈

🗨️也可以在公众号后台给我们留言


参考链接
  1. https://pytorch.org/blog/cuda-free-inference-for-llms/

槿墨AI
开启探索人类未来命运的旅程,拥抱如槿似墨的无限可能。
 最新文章