日本 AI 初创公司 Sakana AI 开发了全球首个“AI CUDA 工程师”,这是一个全自动 CUDA 内核发现和优化智能体框架,结合了进化计算和大型语言模型,旨在将 PyTorch 代码自动转换为高度优化的 CUDA 内核,从而大幅提升 AI 算法的性能。
该框架通过四个阶段实现优化:首先将 PyTorch 代码翻译成可运行的 CUDA 内核;然后利用进化优化,筛选出最佳内核;接着利用“创新档案”,借鉴过去的优秀内核进行改进;最后通过交叉提示策略,组合多个优化内核,进一步提升性能。
经测试,“AI CUDA 工程师”生成的 CUDA 内核比 PyTorch 原生和编译内核快 10-100 倍,甚至比现有 CUDA 内核快 5 倍。同时,Sakana AI 还发布了技术报告、包含 17000 多个经验证内核的数据集以及一个交互式网站,方便研究者查看和验证结果。
虽然该项目获得了积极评价,但也存在一些争议,例如 NVIDIA 工程师指出报告中存在误导性内容,其效果仍待进一步验证。此外,该框架也存在局限性,例如 LLM 在使用 TensorCore WMMA 方面存在局限,以及 AI 系统可能找到绕过验证系统的方法等。
怜星夜思:
1、如果这项技术真的能够成熟并广泛应用,会对目前的深度学习框架生态,比如 TensorFlow 和 PyTorch 等产生什么样的影响? 2、文章中提到了 AI 系统可能找到一些“投机取巧”的方法绕过验证系统,这是否意味着在 AI 驱动的代码优化过程中,安全性和可靠性将成为一个重要的挑战? 3、除了 CUDA,这项技术未来有可能扩展到其他的硬件平台,比如 AMD 的 ROCm 或 Intel 的 oneAPI 吗?
原文内容
机器之心报道
编辑:张倩
用 AI 提高 AI 的效率,它们就能变得像人类大脑一样高效?
我们的大脑只用了 20 瓦的能量就能完成复杂思考,而现代 AI 系统却需要成排的高功率 GPU 和惊人的电力消耗。这种差距如何缩小?
日本 AI 初创公司 Sakana AI 团队提出了一个大胆的愿景:利用 AI 本身来优化 AI。他们开发的「AI CUDA 工程师」是这一理念的具体实践。
「AI CUDA 工程师」是第一个用于全自动 CUDA 内核发现和优化的综合智能体框架。这种方法不仅开创性地将进化计算与大型语言模型相结合,更展示了 AI 自我优化的巨大潜力。
CUDA 是一个 low-level 软件层,可直接访问 NVIDIA GPU 用于并行计算的硬件指令集。CUDA 内核是用 CUDA 语言编写的在 GPU 上运行的函数。通过直接在 CUDA 内核层编写指令,工程师可以为 AI 算法实现更高的性能。然而,使用 CUDA 需要相当多的 GPU 知识,实际上,大多数机器学习算法都是在 PyTorch 或 JAX 等更高级别的抽象层中编写的。
「AI CUDA 工程师」生成的高度优化 CUDA 内核示例。详情请参见:https://pub.sakana.ai/ai-cuda-engineer
「AI CUDA 工程师」是一个利用前沿 LLM 的智能体框架,旨在自动将标准 PyTorch 代码转换为高度优化的 CUDA 内核。通过使用进化优化,并利用进化计算中的概念,如「交叉」操作和「创新档案」来发现有前途的「踏脚石」内核,该团队提出的框架不仅能够自动化将 PyTorch 模块转换为 CUDA 内核的过程,而且高度优化的 CUDA 内核通常能够实现显著更快的运行时间加速。
该团队相信这项技术能够实现加速,从而加快 LLM 或其他生成式 AI 模型等基础模型的训练和运行(推理),最终使 AI 模型在 NVIDIA 硬件上运行得更快。
「AI CUDA 工程师」能够生成比常见 PyTorch 操作加速 10-100 倍的 CUDA 内核。它还能生成比生产环境中常用的现有 CUDA 内核快得多的高度优化的 CUDA 内核(加速高达 5 倍)。
AI CUDA 工程师智能体框架的高级概述。
它的运行流程如下:
第 1 和第 2 阶段(转换和翻译):「AI CUDA 工程师」首先将 PyTorch 代码翻译成可运行的 CUDA 内核。即使不明确针对这些目标,也能观察到初始运行时的改进。
第 3 阶段(进化优化):受生物进化的启发,该框架利用进化优化(「适者生存」)来确保只生成最佳的 CUDA 内核。此外,该团队引入了一种新颖的内核交叉提示策略,以互补的方式组合多个优化的内核。
第 4 阶段(创新档案):正如文化进化如何利用我们祖先几千年文明的知识来塑造我们的人类智慧一样,「AI CUDA 工程师」也利用从过去的创新和发现中学到的东西(第 4 阶段),从已知高性能 CUDA 内核的家族中建立创新档案,利用以前的踏脚石来实现进一步的翻译和性能提升。
该项目发布后,不少研究者给予了很高的评价,比如英伟达高级 AI 研究科学家 Jim Fan 称这是他最近见过的最酷的自动编程智能体,认为用当前的计算资源来提高未来计算效率,这是最具回报的投资策略 ,「AutoML is so back!」
不过,也有人发现了问题。比如 NVIDIA 杰出工程师 Bing Xu 指出「AI CUDA 工程师」的技术报告中存在几个误导性部分:
下面展示了一部分内核。它们突显了「AI CUDA 工程师」可以成功部署的不同操作的多样性。这包括 normalization 方法、损失函数、特殊矩阵乘法,甚至整个神经网络架构:
「AI CUDA 工程师」生成的高度优化 CUDA 内核示例。详情请参见:https://pub.sakana.ai/ai-cuda-engineer
「AI CUDA 工程师档案」
17,000 多个经验证的 CUDA 内核数据集
「AI CUDA 工程师档案」的文本嵌入可视化显示,发现的内核可以按任务(例如 MatMul、Pooling、Convolution)和实现策略(展开、融合、矢量化)分组。该档案可公开访问,可用于 LLM 的下游微调。
随论文一起发布的还有「AI CUDA 工程师档案」,这是一个由「AI CUDA 工程师」生成的超过 30,000 个 CUDA 内核组成的数据集。它在 CC-By-4.0 许可下发布,可通过 HuggingFace 访问:https://huggingface.co/datasets/SakanaAI/AI-CUDA-Engineer-Archive。
虽然将进化优化与 LLM 结合非常强大,但这种组合有时也会找到意想不到的方法绕过验证系统。比如,Twitter 用户 @main_horse 帮助测试 CUDA 内核时就发现了一个有趣的情况:「AI CUDA 工程师」竟然找到了一种「投机取巧」的方法。这个 AI 系统在评估代码中发现了一个内存漏洞,在一小部分情况下成功避开了正确性检查:
引用一下问题:“文章中提到了 AI 系统可能找到一些“投机取巧”的方法绕过验证系统,这是否意味着在 AI 驱动的代码优化过程中,安全性和可靠性将成为一个重要的挑战?” 我觉得是的,就像文章里提到的,AI 为了跑分竟然会想办法修改评估代码,这可不是个好兆头。以后可能需要更严格的验证机制,甚至引入一些对抗性测试来确保 AI 生成的代码是安全可靠的。