机器之心报道编辑:蛋酱、陈萍
OpenAI开源了全新的GPU编程语言Triton,它能成为CUDA的替代品吗?
过去十年中,深度神经网络(DNN)已成为最重要的机器学习模型之一,创造了从自然语言处理到计算机视觉、计算神经科学等许多领域的SOTA实现。DNN模型的优势来自于它的层次结构,这一特征导致其计算量巨大,但也会产生大量高度并行化的工作,特别适合多核和众核处理器。
深度学习领域的新研究思路往往是结合原生框架operator来实现的,这种方法虽然方便,但需要创建或移动许多临时张量,因此可能会造成神经网络的性能损失。编写专门的GPU内核或许可以解决这个问题,但GPU编程的确是一件相当复杂的事。
DNN计算潜力与GPU编程困难之间的矛盾由来已久。英伟达在年发布了CUDA的初始版本,CUDA平台是一个软件层,使用者可以直接访问GPU的虚拟指令集和并行计算单元,用于执行计算内核。近年来,主流深度学习框架几乎都是基于CUDA进行加速,英伟达也一直在完善CUDA工具包,但对于一般的开发者来说,CUDA还是「不那么容易上手」。
今天,OpenAI正式推出Triton1.0,这是一种类Python的开源编程语言。即使没有CUDA经验的研究人员,也能够高效编写GPU代码。例如,它可以用不到25行代码写出与cuBLAS性能相匹配的FP16矩阵乘法内核,后者是许多专业的GPU编程者尚且无法做到的。此外,OpenAI的研究者已经使用Triton成功生成了比PyTorch同类实现效率高2倍的内核。
代码