AI 智能体正在逐渐成为开发工作流程中的标配,但通用型智能体在设计时并未充分考虑 NVIDIA DOCA 这类专用基础设施软件构建的需求。由于缺乏特定领域的专业知识,智能体在执行任务时往往只能依靠猜测来解决问题。在基础设施开发中,这是一个亟待解决的问题,因为每次纠错周期都会占用本应用程序的部署时间。
DOCA 是一个统一的软件平台,旨在充分发挥 NVIDIA BlueField DPU 的全部潜能,以支持智能体 AI 基础设施。其功能涵盖加速网络、AI 原生存储、芯片级安全、遥测以及生命周期管理。对于基于 NVIDIA BlueField 进行开发的团队而言,DOCA 正是他们所需的开发平台。
目前,DOCA AI 智能体技能已在 GitHub 上发布。这些技能提供了一个结构化且经过验证的基础,旨在弥补通用 AI 智能体在 DOCA 开发方面的不足。它们为智能体提供了经过验证的 API 签名、硬件能力要求以及构建约束条件。
本文介绍了什么是 DOCA AI 智能体技能,并阐述了其在四个关键 DOCA 开发场景中的表现。文中还将涵盖对比演示,并指导如何开始使用 DOCA 智能体技能,以及在 BlueField 基础设施上更快地构建和发布更稳定的代码。
什么是 DOCA AI 智能体技能?
DOCA AI 智能体技能是一种为 AI 智能体赋予新能力和专业知识的标准化方式。这种轻量级的开放格式基于以 SKILL.md 文件为核心,其中包含真实 API 签名、硬件能力要求和构建约束条件。这些技能共同为智能体提供了基于 DOCA 的推理和操作框架。
这些技能涵盖了完整的 DOCA 库,包括 Flow、GPUNetIO、PCC 等。它们并非要取代智能体,而是为其提供相关领域知识,使其能像经验丰富的 DOCA 开发者那样进行推理。
每个技能都限定于特定的 DOCA 组件或工作流程。例如,当智能体加载 DOCA Flow 技能时,它便能获取真实的函数签名、正确的 pkg-config 模块名称、构建容器的约束条件,以及常见的故障模式及其应对措施。这些技能不仅仅是文档汇总,更是一种机器可读规范,智能体可以直接基于此进行推理。
为什么 AI 智能体需要一个用于 DOCA 开发的基础?
当开发者要求通用 AI 智能体去设置 DOCA Comch(通信通道)、配置 RDMA 上下文或调试 DOCA Flow 程序中的链路故障时,智能体所依据的仅仅是基于通用训练数据的模式匹配,而非经过验证的 DOCA API 规范、硬件能力清单或构建系统规格。DOCA 库的接口体系庞大,且快速迭代,其中包含许多与特定硬件紧密相关却无法被通用训练数据所涵盖的细节。智能体缺乏可供其推理的机器可读规范,并且在智能体已掌握的知识与软硬件实际支持的能力之间,也不存在保证稳定的接口。
为了量化这一差距,NVIDIA 团队使用了 65 个真实的 DOCA 开发者提示词,对比了智能体在使用和未使用技能时的表现。这些提示词涵盖了从单行提问到多项具体要求的提示词,并根据预期答案核对清单(即针对每项任务设定的具体通过或失败标准)进行评分。在未使用技能的情况下,智能体会反复出现同样的错误,包括:
- API 和标志(Flag)适用不当:65 个提示词中有 59 个出现此问题
- 硬件功能未验证:65 个提示词中有 46 个出现此问题
- 工具路由错误:65 个提示词中有 39 个出现此问题
- 跳过冒烟测试:65 个提示词中 34 个出现此问题
- 版本猜测:65 个提示词中有 30 个出现此问题
这些都是持续出现的失败情况。在未使用技能的情况下,智能体在执行真实的 DOCA 任务时,仅能满足评分核对清单中 19% 的提示词。在使用技能的情况下,它们在全部 65 个提示词中均达到了 100% 的满足率。如果未使用这些技能,智能体的每一个错误都需要开发者介入调试,从而延长了实现可用代码的进程。
DOCA 智能体技能能为开发者带来的哪些优势
DOCA 智能体技能使开发者能够为智能体赋予专业领域知识,帮助开发者更快地构建、交付更稳定的代码,并在部署时减少不确定性。
- 更快地构建:通过技能,智能体从一开始就能获得经过验证的 API 调用,让开发者能够专注于编写代码,而非忙于纠错。
- 交付更稳定的代码:借助技能,智能体在编写任何代码之前,会核实设备实际支持的功能,从而避免了等到代码在真实硬件上运行之后才发现问题。
- 部署时减少不确定性:在实际操作硬件之前,智能体会执行预检、制定回滚计划,并充分考虑冷启动的影响,确保在问题发生前就做好防范。
其综合成效在于,任务和可运行代码之间的纠错周期得以缩短。对于在 DOCA 应用程序上大规模使用 AI 智能体的团队而言,这中缩减效应会随着每位开发者、每项任务及部署数量的增加而不断累积。
使用智能体技能加速 DOCA 开发
以下各节将详细介绍这四项能力。每项能力均配有一个来自 65 个提示词评估中的真实提示词示例,并阐述使用技能所能带来的优势。
使用真实 API,更快速地进行构建
DOCA AI 智能体技能所解决的问题:API 滥用。即智能体虚构原本不存在的函数、标志(Flag)和图像标签。
这是在评估中最常见的失败模式,在 65 个提示词中有 59 个受此影响。在未使用技能的情况下,智能体生成的代码往往会包含库中并不存在的 DOCA 函数、名称错误的标志以及在运行时会报错的图像标签。最终,开发者不得不去调试一个并非由自己引入的错误(这完全是智能体凭空捏造出来的)。
提示词:“我有一台安装了 BlueField-3 DPU 和 DOCA 的主机。我想在主机侧进程和 DPU 侧代理程序之间建立一个 DOCA Comch(通信通道),以便双方能够交换小型控制消息(每条消息小于 4KiB,频率为每秒几次) 。”
该具备特定技能的 AI 智能体仅使用真实的 DOCA Comch API 调用,确保参数顺序正确、标志及生命周期序列均经过核实,绝无凭空捏造。
当智能体的首次响应就能使用正确的 API 接口时,开发者可以直接进入集成阶段,而无需先进行调试。在测试 API 准确性的 63 个提示词中,使用技能的表现始终更胜一筹。
在编写任何代码前先验证硬件
DOCA AI 智能体技能解决的问题:智能体为设备不支持的功能编写了代码。
在未使用技能的 65 个提示词中,有 46 个提示词未进行硬件能力验证。其失败模式如出一辙:智能体预设某种硬件能力的存在并据此生成代码,而开发者直到在真实硬件上运行时才会发现这种不匹配。此时,若要修复问题,就必须找出究竟是那项能力验证被遗漏了,进而重构代码路径并重新进行测试。
提示词:“我有两台主机,通过高速 InfiniBand 网络互连。每台主机均配备一块 NVIDIA GPU 和一块 ConnectX 网卡(NIC),并且均安装了 DOCA。我想测量从 GPU 上的 CUDA 核心(而非主机 CPU 线程)发起 RDMA WRITE 工作请求的延迟,以决定是否在应用程序中采用 GPUNetIO Verbs 接口。”
使用技能的 AI 智能体会在编写任何代码之前先核实设备实际支持的功能。它会验证 GPU 与网卡之间的 PCIe 拓扑结构,确认系统是否支持 GPUNetIO,并明确可用的备选 API 接口及其各自的适用场景。
使用技能的 AI 智能体会在编写任何代码之前,根据实际使用的硬件来验证答案所需的先决条件。
交付能成功编译与链接的代码
DOCA AI 智能体技能解决的问题:智能体生成的代码无法在 DOCA 容器中编译或链接。
在 65 个提示词中,有 10 个测试了构建正确性。虽然样本较小,但一旦此环节出现问题,开发工作将停滞。
提示词:“我正在尝试基于一个随附示例来构建 DOCA Flow 程序。编译步骤可以完成,但在链接时失败了,报错信息为:undefined reference to doca_flow_init(对 doca_flow_init 的引用未定义)。该如何调试这个问题?”
具有技能的 AI 智能体将未定义的引用识别为链接时失败,并使用构建工具(pkg-config)查找 doca-flow 所需的正确链接器(Linker)标志。
如果智能体生成了错误的链接器标志,就会将开发者引入一条无法解决问题的死胡同。而使用技能的智能体会立即指出正确的诊断方法并提供获取正确标志的合适工具。
安全地执行会影响硬件的变更
DOCA AI 智能体技能解决的问题:智能体在未进行预检、未制定回滚计划,且不了解冷启动要求的情况下,直接在运行中的硬件上执行固件级变更。
任务越复杂,技能就越重要。在由 65 个提示词组成的评估中,性能差距最显著的情况出现在最复杂的场景中:即在运行中的硬件上进行固件级的变更。
提示词:“我有一台正在运行 DOCA 工作负载的 BlueField-3 DPU 生产环境。我已为自己的服务加载了 DOCA AI 智能体技能,接下来需要配置一个 mlxconfig 类别的固件级参数。”
使用技能的 AI 智能体在执行固件级变更时,会严格遵循各项规范流程,以满足各项要求。这包括预检清单、以带外(OOB)管理路径作为先决条件、明确的维护窗口和回滚计划,并注意到 mlxconfig 类别的写入仅在冷启动后生效,而在热启动时不会生效。
使用技能的智能体满足了所有要求,而未使用技能的智能体则一项也未能满足。在实际生产环境的 DPU 上,一旦出现此类失误,将无法通过后续调试步骤进行补救。这些技能蕴含着关于可能出现什么问题及其原因的知识,从而将原本充满风险的固件变更转化为一项规范且安全的操作流程。
在所有 65 个提示词中,使用 DOCA 技能的 AI 智能体每次都能得出正确答案。这意味着修正次数更少,能够更快地交付可运行的代码。
视频 1 中的演示直观地展示了效率的提升。两个智能体被赋予了相同的任务:使用 NVIDIA DOCA 构建程序,在 BlueField-3 上发送真实的 RDMA 流量。两者都成功地完成了任务,但使用技能的智能体所编写的代码量减少了 73%(189 行,而另一个智能体则需 695 行),硬件命令大约减少了一半(20 行,而另一个智能体则需 37 行,减少了 46%)。这两个智能体之间的区别在于:前者需要通过反复试错来重新发现 DOCA API 及构建需求,而后者在编写第一行代码前,就已掌握了这些必要知识。
开始使用 NVIDIA DOCA AI 智能体技能
DOCA AI 智能体技能赋予智能体成功所需的领域知识,助力更高效、更准确地进行开发。若要开始使用,请访问 NVIDIA/ skills GitHub 代码仓库。查看通用技能以快速上手,也可探索针对 DOCA Flow、GPUNetIO、RDMA 等库的专用技能。