/ 中存储网

OpenAI 推出用于创建神经网络的新 AI 编程语言

2021-07-29 12:49:01 来源:中存储

著名的人工智能研究实验室 OpenAI 今天发布了 Triton,这是一种专门的编程语言,据称它将使开发人员能够更轻松地创建高速机器学习算法。

两年前,OpenAI 科学家 Philippe Tillet 在一篇学术论文中介绍了 Triton 的第一个版本。作为今天发布的一部分,OpenAI 发布了一个显着升级的版本,称为 Triton 1.0,其优化适用于企业机器学习项目。

绝大多数企业 AI 模型都在 Nvidia Corp. 图形处理单元上运行。开发人员使用 Nvidia 提供的软件来构建这些模型。英伟达最重要的框架之一是 CUDA 框架,它提供了 AI 应用程序使用 GPU 执行计算的基础软件构建块。

OpenAI 正在用 Triton 解决的问题是 CUDA 框架被认为使用起来非常具有挑战性。特别是,主要挑战是最大限度地提高 AI 模型的性能,以便尽可能快地处理数据。对于使用 CUDA 的开发团队来说,最大化 AI 性能需要对其代码进行复杂和细粒度的优化,即使有多年的经验也难以实现。 

输入 OpenAI 的 Triton 编程语言。据实验室称,该语言会自动执行许多 AI 代码优化,以节省开发人员的时间。 

OpenAI 承诺为软件团队带来两个主要好处。首先是 Triton 可以加速 AI 项目,因为开发人员不必花费更少的时间来优化他们的代码。根据 OpenAI 的说法,另一个是 Triton 的相对简单性可以使没有丰富 CUDA 编程经验的软件团队能够创建比其他方法更高效的算法。 

OpenAI 的 Tillet 在今天的一篇博客文章中解释说:“Triton 可以通过相对较少的努力达到最高的硬件性能。” “例如,它可以用不到 25 行代码编写与 cuBLAS 性能相匹配的 FP16 矩阵乘法内核——这是许多 GPU 程序员无法做到的。” 矩阵乘法内核是一种软件机制,机器学习算法严重依赖它来执行计算。

Triton 通过优化在 Nvidia 芯片上运行的机器学习算法处理数据的工作流的三个核心步骤来提高 AI 性能。

第一步是在 GPU 的 DRAM 和 SRAM 存储器电路之间移动数据的任务。GPU 在不活跃时将信息存储在 DRAM 中,并将其传输到 SRAM 内存以执行计算。两个组件之间的数据传输速度越快,机器学习算法运行的速度就越快,这就是为什么开发人员将优化计算工作流的这一方面作为人工智能项目的一部分。 

优化过程包括将从 DRAM 移动到 SRAM 的数据块合并为大型信息单元。OpenAI 表示,Triton 会自动执行任务,从而为开发人员节省时间。

Triton 优化的第二个计算步骤是将传入的数据块分配到 GPU 的 SRAM 电路中,以便尽可能快地分析它们。 

此步骤中涉及的主要挑战之一是避免所谓的内存库冲突。这是两个软件意外尝试将数据写入同一内​​存段的情况的术语。内存库冲突会阻碍计算,直到它们得到解决,这意味着通过减少此类错误发生的频率,开发人员可以加快其 AI 算法的性能。

Tillet 解释说:“数据必须在重新使用之前手动存储到 SRAM 中,并进行管理,以最大限度地减少检索时的共享内存库冲突。” 

Triton 帮助自动化的第三个也是最后一个任务涉及的不是 GPU 的内存单元,而是它们的 CUDA 核心,即负责对存储在内存中的数据进行计算的计算电路。单个 Nvidia 数据中心 GPU 有数千个这样的电路。它们允许芯片同时执行大量计算。

为了最大限度地提高 AI 模型的性能,开发人员必须将其配置为将计算分布在多个 CUDA 核心上,以便它们可以同时完成,而不是一个接一个地完成。Triton 也可以自动完成这项工作,尽管只是部分自动化。它没有自动化整个工作流程的原因是因为 OpenAI 试图让开发人员能够灵活地根据需要为他们的项目手动定制流程。

Triton 可在GitHub 上获得,以下内容来自OpenAI博客:

介绍 Triton:用于神经网络的开源 GPU编程

我们正在发布 Triton 1.0,这是一种类似于 Python 的开源编程语言,它使没有 CUDA 经验的研究人员能够编写高效的 GPU 代码——大部分时间与专家能够编写的代码相当。Triton 使得以相对较少的努力达到峰值硬件性能成为可能;例如,它可以用不到 25 行代码编写与 cuBLAS 性能相匹配的 FP16 矩阵乘法内核——这是许多 GPU 程序员无法做到的。我们的研究人员已经使用它来生成效率比同等 Torch 实现高 2 倍的内核,我们很高兴与社区合作,让每个人都更容易使用 GPU 编程。

Triton 是一种用于并行编程的语言和编译器。它旨在提供一个基于 Python 的编程环境,用于高效编写能够在现代 GPU 硬件上以最大吞吐量运行的自定义 DNN 计算内核。

安装

二元分布

您可以从 pip 安装 Triton 的最新稳定版本:

pip install triton

二进制轮可用于 CPython 3.6-3.9 和 PyPy 3.6-3.7。

以及最新的每晚发布:

pip install -U --pre triton

从源头

Python包

您可以通过运行以下命令从源代码安装 Python 包:

git clone https://github.com/ptillet/triton.git;
cd triton/python;
pip install cmake; # build time dependency
pip install -e .

请注意,如果您的系统上不存在 llvm-11,setup.py 脚本将在网络上下载 LLVM 静态库并链接到该库。

然后,您可以通过运行单元测试来测试您的安装:

pytest -vs .

和基准

cd bench/
python -m run --with-plots --result-dir /tmp/triton-bench

OpenAI 推出用于创建神经网络的新 AI 编程语言