原创 歸藏的 AI 工具箱 2025-02-14 15:06 北京
英伟达让 Deepseek R1 帮助他们优化 GPU 内核代码,结果在长时间思考后 R1 的一些结果比英伟达自己的熟练工程师还要做的好。
刷推看到一个离谱的 Deepseek 研究。
英伟达让 Deepseek R1 帮助他们优化 GPU 内核代码,结果在长时间思考后 R1 的一些结果比英伟达自己的熟练工程师还要做的好。
具体的实验是自动生成数值正确且针对不同注意力机制优化的 GPU 注意力内核,而无需任何显式编程。
而且他们的方法也很简单:
1. DeepSeek-R1 生成初始 GPU 内核代码
2. 验证器(H100GPU 运行)分析生成的内核并提供反馈
3. 将其反馈回 DeepSeek-R1 以生成修订后的内核
4. 过程重复一定的持续时间
他们发现只要持续超过 10 分钟就能生成大多数问题的正确代码
来看一下具体的背景和过程。
为什么要优化注意力内核&核心挑战是什么
注意力机制是一个关键概念,它彻底改变了大型语言模型(LLM)的发展。它是一种强大的机制,使 AI 模型在执行任务时能够有选择地关注输入中最相关的部分。通过聚焦于重要信息,注意力操作帮助模型做出更好的预测,并发现数据中的隐藏模式。
注意力操作的计算复杂度与输入序列长度呈二次方增长。这促使英伟达需要开发一种优化的底层实现(即 GPU 内核),以防止简单实现导致的运行时错误(例如内存不足错误),并提高计算效率。
注意力机制有多种变体(如因果注意力、相对位置嵌入、alibi 等),工程师通常需要结合这些变体来完成特定任务。
多模态模型(例如视觉变换器)引入了额外的挑战,因为它们需要专门的注意力机制(空间邻域注意力)来维护在计算机视觉、视频生成模型等领域中常见的时空信息。
为注意力机制创建优化的 GPU 内核需要大量技能和时间,即使对于经验丰富的软件工程师也是如此。
最近的LLMs如 DeepSeek-R1 在代码生成任务中展现出了很大的潜力,但它们仍然面临首次尝试生成优化代码的挑战。这使得在推理时有必要使用其他策略来生成优化代码。
LLMs 偶尔可能会生成幻觉代码或混合不同语言或框架的语法,导致立即的代码错误或效率低下。计算最优的 GPU 线程映射也并非易事,通常需要迭代优化才能实现正确且高效的内核。
推理时调整规模,以生成优化的 GPU 内核
为了在使用优化注意力内核时获得最佳结果,NVIDIA 工程师创建了一个新的工作流程,该流程在推理过程中以闭环方式结合了特殊验证器和 DeepSeek-R1 模型,持续预定的时间。
工作流首先通过手动提示进行初始化,DeepSeek-R1 模型在第一轮生成 GPU 代码(即内核)。验证器在 NVIDIA H100 GPU 上运行,分析生成的内核并创建新的提示,这些提示作为输入提供给 DeepSeek-R1 模型。
这种闭环方法通过每次以不同的方式引导代码生成过程,使其变得更好。团队发现,让这个过程持续 15 分钟可以改进注意力内核。
该工作流程为 100%的 Level-1 问题和 96%的 Level-2 问题生成了数值正确的内核,这一结果已通过斯坦福的 KernelBench 基准测试(旨在评估大型语言模型 (LLM) 生成用于优化神经网络性能的高效 GPU 内核的能力 )验证。
KernelBench 中的一级解决率是指用于评估LLMs为特定计算任务生成高效 GPU 内核能力的数值正确性指标。该测试是用于测试最新LLMs在 GPU 编程能力的一系列挑战之一。
下图展示了推理时间预算如何影响代理的解决率。在 Level-1 类别中,为每个问题分配超过 10 分钟的时间,使得工作流能够为 100 个问题中的大多数生成数值正确的代码。
这些结果表明,可以通过在推理时使用更多计算资源,利用最新的 DeepSeek-R1 模型生成更好的 GPU 内核。
最近我们看到好多类似的研究,说明推理模型的潜力还很大。
比如DeepSeek R1 Overthinker这个项目也是通过延长推理过程来强制 DeepSeek R1 模型进行更深入的思考,可以让 R1 和其蒸馏模型获得更好的结果。
上午还更新了 Karpathy 新LLM 入门视频 bilibili 的源,变成了 1080P,调整字幕样式,变成的纯中文字幕:https://www.bilibili.com/video/BV1jDNEeJEmm/
整理和调研不易,觉得有用的话可以帮忙点个赞和喜欢?
DeepSeek R1 Overthinker:https://github.com/qunash/r1-overthinker