S72867: AI Developer Tools for Accelerated Computing - Scarce Data Isn't Scary!
S72867: AI Developer Tools for Accelerated Computing - Scarce Data Isn't Scary!
Matt Frazier, Director for AI Assisted Developer Tools | GTC25
概览:您为何在此?
NVIDIA Nsight 正在创建编码工具,通过以下方式赋能并提升开发者的加速计算能力(CUDA 技能、性能分析与优化):
- 构建高质量的验证框架
- 提供直观的用户体验
- 为人工智能和 GPU 专业知识创造一个增长飞轮
本演示将介绍这些工具的细节以及它们何时能交到开发者手中。
议程
- AI 编程助手与 CUDA
- 数据稀缺性问题
- 创建一个专业知识飞轮
- 上下文增强策略
- NVIDIA 对 AI 辅助开发未来的愿景
AI 编程助手与 CUDA
NVIDIA 的 AI 编程助手旨在通过以下方式支持开发者:
- 降低复杂性和易变性:简化 CUDA 编程的复杂性。
- 为专家提供即时细节:即使是经验丰富的开发者也能快速获取所需信息。
- 加速计算中的持续优化:优化是一个永无止境的过程。
该系统的核心架构包括一个 CUDA 智能服务,它利用前沿的大型语言模型 (Frontier LLM NIM) 和一个 CUDA 与硬件数据库 (CUDA & Hardware DB)。该服务通过 OpenAPI、VS Code 扩展、其他 IDE 和 API 集成等多种方式向开发者提供支持。
数据稀缺性问题
在为 CUDA 开发 AI 编程助手时,面临着独特的数据挑战:
- 传统 AI 数据挑战:通常需要大量数据进行训练。
- CUDA:专业知识丰富,数据匮乏:高质量的 CUDA 代码范例相对稀少,但其中蕴含着深厚的专家知识。
- 超越简单的代码生成:目标不仅仅是生成代码,而是生成正确且高性能的代码。
- 基准测试的误导性:传统的代码生成基准测试可能无法反映真实世界 CUDA 编程的复杂性和性能要求。
- 现实世界用例 vs. 完美示例:模型需要处理的是实际开发中遇到的复杂问题,而不仅仅是教科书式的理想化示例。
验证优先方法 (Validation-First Approach)
为了确保 AI 生成代码的质量和可靠性,我们采用了一种“验证优先”的方法,即衡量过程而不仅仅是输出。
- 正确性 + 性能:这是评估 CUDA 代码质量的两个核心维度。
- 黄金基准至关重要:建立高质量的、经过专家验证的基准解决方案(Golden Baselines)是评估的基础。
- 硬件感知验证:验证过程必须考虑到硬件的具体特性,因为性能与硬件紧密相关。
- 性能分析即为性能真相:使用性能分析工具(Profiling)来获取关于代码实际性能的最终判断。
该流程如下图所示:首先,针对一个 CUDA 问题,创建一个包含黄金代码解决方案(Golden Code Solution)、单元测试(Unit Tests)和词法测试(Lexical Tests)的验证集。当 AI 模型生成一个响应(Response)时,系统会通过单元测试和词法测试来验证其正确性,并通过与黄金解决方案进行性能对比来评估其性能。
创建一个专业知识飞轮
为了解决数据稀缺问题,我们设计了一个“专业知识飞轮”来捕捉并利用专家的知识。
- 工作流 vs. 单一示例:相比于孤立的代码示例,完整的开发工作流(从问题到解决方案的迭代过程)包含更丰富的信息。
- 隐式反馈 > 显式反馈:开发者在调试、编辑和优化代码过程中的行为(隐式反馈)比他们直接给出的评价(显式反馈)更有价值。
- 捕捉修改背后的“原因”:通过分析整个工作流,可以理解开发者进行特定修改的深层原因。
- 从调试会话到训练数据:将开发者的调试和优化过程(包括调试输出、代码编辑、性能分析器输出等)转化为高质量的训练数据。
- 人工审核确保质量:专家的审核是保证数据质量的关键环节。
下图展示了 NVIDIA Nsight CoPilot 的一个实际应用界面,它正在为 FP8 矩阵乘法生成代码和测试用例,体现了 AI 辅助开发的具体流程。
上下文增强策略
为了给 CUDA 开发者开发实用的 AI 辅助工具,我们采用了多种上下文增强策略,而非仅仅依赖于传统的 RAG 或微调。
- 将文档作为代码上下文:在生成代码时,将相关的官方文档作为上下文信息提供给模型。
- 版本感知智能:AI 助手需要了解不同版本的 CUDA 和硬件,以提供兼容且最优的建议。
- 性能知识迁移:将从性能分析中获得的专家知识迁移并整合到 AI 模型中。
- 为正确的任务选择正确的模型:根据任务的复杂度和类型,选择最合适的 AI 模型。
- 超越静态文档:利用比静态文档更丰富的动态信息源。
NVIDIA Nsight CoPilot for CUDA
Nsight CoPilot 是这一理念的实践产品。
- 在开发者熟悉的地方提供帮助:通过集成到主流 IDE(如 VS Code 扩展),无缝融入开发者的现有工作流。
- NVIDIA 专业知识层:该工具不仅仅是一个代码生成器,它融入了 NVIDIA 在 GPU 计算领域的深厚专业知识。
下一步计划是什么?
* 自动分析生成的代码:自动对 AI 生成的代码进行性能分析,并提供优化建议。
* 解释优化,而不仅仅是代码:不仅生成优化后的代码,还解释为何这样优化。
* 完整的软件开发生命周期(SDLC)支持:将 AI 辅助能力扩展到整个开发流程。
真实世界实现
我们的方法在真实世界的实现中取得了显著成果:
- 相比基础模型的质量提升:通过整合 CUDA 上下文和专家知识,生成的代码质量远超通用基础模型。
- 前沿模型 + CUDA 上下文:结合了最先进的大语言模型与丰富的 CUDA 特定上下文信息。
- 构建于开源基础之上:利用并贡献于开源社区。
- 从代码级优化到系统级优化:将优化的视野从单个代码片段扩展到整个系统。
- 专家知识迁移成果:成功将专家的隐性知识转化为 AI 模型的能力。
未来愿景
我们对 AI 辅助开发的未来愿景包括:
- 遗留代码库优化:帮助开发者现代化和优化旧有的 CUDA 代码库。
- 经过测试验证的技术债务削减:通过生成经过验证的、高质量的代码来系统性地减少技术债务。
- 版本迁移支持:自动化处理 CUDA 版本升级带来的代码迁移工作。
- 跨产品智能:整合 NVIDIA 不同开发工具和产品线之间的知识。
- NVIDIA 技术导航:帮助开发者在庞大的 NVIDIA 技术生态中找到最合适的工具和解决方案。
可用性与路线图
- GTC 演示:在 GTC 大会上进行现场演示。
- Insight Co-pilot Beta 版访问:即将开放 Beta 版的访问权限。
- 验证基准即将发布:很快会发布用于评估 CUDA 代码生成质量的基准测试。
- 社区合作邀请:邀请社区开发者参与合作,共同改进工具。
- 反馈驱动改进:用户的反馈是推动产品不断完善的核心动力。