不依赖CUDA的大模型推理已经实现 原创
在过去的十年中,CUDA已经成为深度学习模型推理领域的核心技术。NVIDIA的CUDA技术优化了GPU的性能,提高了数据处理的速度和效率。然而,CUDA的主导地位也带来了对NVIDIA硬件的依赖,这限制了在非NVIDIA平台上进行高效推理的可能性。为了应对这一挑战,近年来,开源社区和企业开始寻求开发不依赖于特定供应商的推理技术。
Triton的崛起
OpenAI开发的Triton编程语言应运而生,旨在为广泛的硬件设备提供高效的并行编程方式。
它允许开发者编写一次代码,就能在NVIDIA、AMD甚至未来的Intel GPU上运行,极大地扩展了AI模型的适用范围。Triton的出现,不仅打破了CUDA的垄断,还为AI社区带来了新的活力和创新的可能性。
与CUDA相比,Triton提供了一个更灵活、更高级的抽象层,使得开发者可以在多种类型的GPU上实现优化的计算性能,而不仅仅是NVIDIA的产品。
Triton的核心优势在于其对于大型模型如LLM的支持。Triton能够处理诸如矩阵乘法、正规化(RMSNorm)、自注意力机制(RoPE)、激活函数(如SiLU)以及元素级乘法等关键操作,这些都是LLM推理中不可或缺的部分。PyTorch社区已经利用Triton重写了这些操作的内核,通过torch.compile实现了自动生成Triton内核的能力。
技术实现细节
将CUDA内核替换为Triton内核是一个复杂的过程,需要精细的调优和定制。例如,PyTorch团队开发了一种自定义的FP16 Triton GEMM(General Matrix-Matrix Multiply)内核,该内核专门针对LLM中的线性层的矩阵乘法进行优化。这个过程涉及到对不同线性层权重矩阵形状的精确调整,以确保最佳性能。
此外,flash attention是LLM中另一个关键操作,PyTorch团队采用了多种配置的Triton flash attention内核进行实验,最终选择了AMD的Triton flash attention内核,因为它能够在eager和compile模式下提供清晰的输出,同时兼容torch.compile。
性能评估
在性能方面,虽然Triton内核的性能尚未完全达到CUDA的水平,但已经非常接近。在NVIDIA的H100和A100 GPU上的测试显示,使用Triton内核的模型推理性能达到了CUDA模型性能的78%到82%。这一结果足以证明,即使是在高要求的应用场景下,非CUDA推理也能达到实用的水平。
未来发展方向
展望未来,Triton内核还有很大的优化空间。PyTorch团队和OpenAI已经在探索更高效的内核设计,如利用更精细的工作分解策略和持久内核技术,这可能会进一步提高Triton的计算效率并缩小与CUDA的性能差距。此外,随着FlexAttention和FlashAttention-3等新技术的引入,PyTorch有望在更广泛的硬件平台上实现更长的上下文长度和更大规模的解码任务,这将推动整个行业向前发展。
Triton中国社区的发展和影响
2024年,智源研究院举办了多期Triton中国生态Meetup活动,这些活动不仅聚焦于技术分享和经验交流,也致力于构建一个开放、协作的Triton技术生态体系。国内大量支持Triton语言编程的芯片厂商积极参与了交流。
随着Triton和其他非CUDA技术的成熟,社区正逐步克服对特定硬件供应商的依赖,这将使得大模型推理技术更加普及和可用。这一进展不仅对科研人员和开发者具有重要意义,也对推动AI技术的普及具有深远影响。随着更多的创新和研究,未来的大模型推理将更加高效、灵活和开放。
参考链接:
1. https://pytorch.org/blog/cuda-free-inference-for-llms/
2. https://hub.baai.ac.cn/view/39486
本文转载自公众号AI时代窗口 作者:郁愈