OpenAI 提出开源 Triton 语言作为 Nvidia CUDA 的替代方案

2026-02-07 0 668

OpenAI 提出开源 Triton 语言作为 Nvidia CUDA 的替代方案

根据人工智能研究公司 OpenAI 的说法,Nvidia 的图形处理单元太难编程,包括使用 Nvidia 自己的编程工具 CUDA。

这家总部位于旧金山的 AI 初创公司在微软和风险投资公司 Khosla Ventures 的支持下,于周三推出了 1.0 版本,这是一种专门为减轻这种负担而设计的新编程语言,名为 Triton,在一篇链接到 GitHub 源代码的博客文章中有详细介绍。

OpenAI 声称 Triton 可以为 AI 机器学习形式的核心神经网络任务(例如矩阵乘法)提供比 CUDA 编码更易用的优势。

“我们的目标是让它成为 CUDA 深度学习的可行替代方案,”这项工作的负责人、OpenAI 科学家 Philippe Tillet 通过电子邮件告诉 ZDNet。

Triton“适用于尽管拥有良好的软件工程技能但不熟悉 GPU 编程的机器学习研究人员和工程师,”Tillet 说。

该语言来自 OpenAI,它开发了风靡全球的 GPT-3 自然语言处理程序,这一事实可能会使该代码在 AI 领域更加卓越。

该软件以开源形式提供,要求在代码的大量副本的任何分发中包含版权声明和许可。

最初的 Triton 揭幕发生在 Tillet 于 2019 年发表的一篇论文中,当时他还是哈佛大学的一名研究生,还有他的导师 H. T. Kung 和 David Cox。

Tillet 着手解决的问题是如何制作一种比供应商特定的 AI 库(例如 Nvidia 的 cuDNN)更具表现力的语言,这意味着能够处理神经网络中涉及的矩阵的各种操作; 同时具有可移植性,并具有可与 cuDNN 和类似供应商库相媲美的性能。

根据 Tillet 和团队的说法,直接在 CUDA 中对 GPU 进行编程实在是太难了。 例如,为 GPU 编写本机内核或函数“由于 GPU 编程的许多复杂性而非常困难,”Tillet 和团队在帖子中写道。

特别是,正如 Triton 文档所解释的那样,“GPU 在优化局部性和并行性方面仍然极具挑战性”。

但 Tillet 还希望该语言比迄今为止的定制工作更容易编程,基于所谓的“涉及大量手动工作”的“微内核”。 特别是,Triton 被提出作为替代供应商库的两种主要方法的替代方法,这两种方法称为多面体编译和调度语言。

Tillet 选择的是一种称为 tiles 的方法。 在 CUDA 编程中广泛使用的 Tile 将机器学习程序中使用的矩阵分解成片段,这些片段可以有效地分布在共享 SRAM 内存和快速寄存器内存中,并通过多个指令线程并行高效地运行。

然而,在 CUDA 中进行并行化是困难的,因为需要在程序的指令线程之间进行显式同步语句。

Triton 的语义将图块指定为内置类型,这样 Triton 编译器就可以搞清楚这些片段如何在 GPU 的许多核心及其伴随的寄存器中有效分配。

实际上,并行化和优化代码的工作已从语言下推到编译器中。

正如 Tillet 所说,编译器“自动执行各种重要的程序优化”。

“例如,通过查看计算密集型块级操作的操作数,可以将数据自动存储到共享内存中。”

Triton 程序员的高级代码首先转换为中间表示,其灵感来自开源 LLVM 编译器基础结构中的中间表示。 正如 Tillet 在原始论文中所描述的那样,“只需对 LLVM-IR 进行一些数据和控制流扩展,就可以实现各种平铺级优化通道,从而共同实现与供应商库相当的性能。”

然后将中间表示提供给即时编译器,该编译器以最适合共享内存和 GPU 内核寄存器的方式将各种矩阵转换为片段。

JIT 在 GPU 核心内部组织指令线程以从主内存中提取相同的值,称为“内存合并”。 同样,JIT 将这些线程共同感兴趣的数据放入共享内存中以进行高效操作,这称为“共享内存分配”。

正如 Tillet 所描述的,结果是“单线程和自动并行化”的程序。 JIT 正在执行自动调整图块、数据片段的工作,以最有效地将它们分布在核心之间。

在最初的 Triton 论文中,Tillet 提出了一种基于 CUDA 语法的类 C 形式的 Triton。 然而,在这个新的 1.0 版本中,Triton 与 Python 集成在一起。 详细信息在博客文章中有详细说明。

使用 Triton 的好处应该是可以立即加快开发神经网络的一些基本操作。 正如 Tillet 在博文中所说,“它可用于编写与 cuBLAS 性能相匹配的 FP16 矩阵乘法内核”,这是一个实现开源基本线性代数子程序的 Nvidia 库,“这是许多 GPU 程序员无法做到的” 做不到——不到 25 行代码。”

Tillet 说,他在 OpenAI 的超级计算负责人 Chris Berner 的监督下,全职参与 OpenAI 的项目。 但也有几位 OpenAI 工作人员对 Triton 项目的帮助。

“最近,几位 OpenAI 员工和研究人员——都没有 GPU 编程经验——为该项目贡献了代码和想法,”Tillet 告诉 ZDNet。 “我们已经使用它来加速和重写我们的大部分 GPU 内核,我们致力于通过后续版本使其更广泛地适用。”

Tillet 指出,该项目得到了 OpenAI 外部的“有意义的贡献”,其中包括香港科技大学的 Da Yan、微软 DeepSpeed 优化库的团队以及商业 AI 初创公司 Anthropic。

周三的博文没有强调性能指标,只是说 Triton 可以与 CuBLAS 匹敌。 然而,在 Tillet 的原始论文中,该语言的 Triton-C 版本在运行所谓的深度卷积时能够获得比 Nvidia 的 CuDNN 库更好的性能,深度卷积是将输入视为局部相关数据组的操作,例如图像 像素。

请注意,该软件目前仅适用于 Nvidia GPU; 它尚不能用于 AMD 的 GPU,也不能编译为 CPU。 作者邀请对这些芯片感兴趣的合作者加入这项工作。

Tillet 的语言努力出现在 AI 硬件加速领域的一个有趣时刻。 Nvidia 面临来自 Cerebras Systems、Graphcore 和 SambaNova 等 AI 芯片和系统初创公司的激烈竞争。 这些公司都有各种芯片架构,可以将并行计算分配给多个片上内核。 事实上,SambaNova 的芯片有一个所谓的数据流架构,它共享 Triton 的一些原理。

然而,所有这些供应商都不得不开发自己的软件工具来优化 PyTorch 和 TensorFlow 程序到他们计算机的移动。 相比之下,Nvidia 拥有 CUDA 十多年的开发经验和广泛的软件开发人员基础。

可以想象,Triton 可能是竞争对手为其芯片获得广泛的开源平台所需的新软件工具之一。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 OpenAI 提出开源 Triton 语言作为 Nvidia CUDA 的替代方案 https://www.zuozi.net/56351.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务