在本地应用中集成AI模型,需要一种便携的模型格式、一个可靠的运行时,以及能够跨目标系统工作的加速方案。

Do Inference Now(DIN)Deploy 是一套开源的实用C++示例集合,旨在填补这一空白。它将 ONNX Runtime 与 NVIDIA TensorRT RTX 执行提供程序相结合,帮助开发者从模型检查点迁移到在 Windows 和 Linux 上支持硬件加速的原生应用程序。同样的 ONNX Runtime API 也可以通过 WinML 2.0 进行访问。

从ONNX导出到C++实现

每个 DIN Deploy 示例都从一个 Python 导出工具开始,该工具会从 Hugging Face 下载模型检查点,并将其转换为 ONNX 格式的构件。应用程序端则是基于 ONNX Runtime(ORT)构建的原生C++命令行工具。这种拆分方式使模型转换与部署逻辑相互独立,开发者无需依赖特定模型的运行时,就能将导出的模型集成到本地应用中。

大部分示例代码使用了C++版本的 ONNX Runtime 会话与张量API。供应商专用代码(包括CUDA API与内核)仅出现在可选的加速路径中。只要执行提供程序支持所需的 ONNX Runtime 张量API,就能运行这些共享代码。

ORT的张量拷贝API让数据的本地性管理变得简单,无需在共享代码中使用特定供应商的API。

在导出模型推理的前后处理环节,FLUX.2示例使用了 ONNX Runtime 在1.25版本中引入的图形互操作能力,结合 Vulkan 和 DirectX 进行采样。

该代码仓库提供了适用于 Windows 和 Linux 的 CMake 预设配置,包括 Arm64 版本。DirectX 仅在 Windows 系统上可用。

DIN Deploy支持的AI任务

在自动语音识别(ASR)方面,DIN Deploy 支持离线和流式处理管线。OpenAI 的 Whisper 覆盖了各种模型规格的离线转录任务,而 NVIDIA Parakeet TDT 和 NVIDIA Nemotron ASR Streaming 则提供流式处理管线。

这些示例展示了如何在原生应用中处理音频数据并返回转录结果,同时在条件允许的情况下使用GPU加速。

Meta SAM 2.1 系列示例支持图像和视频的交互式掩膜处理。它们能将模型输出转化为分割掩膜,供原生应用用于目标选择、追踪及其他计算机视觉工作流程。

表1对比了在DGX Spark上测得的部分DIN Deploy工作负载的GPU与CPU性能表现。

FLUX.2-klein-4B 示例提供了基于提示词驱动的图像生成功能。该示例包含与 Vulkan 和 DirectX 的图形API互操作,使应用程序能够通过跨供应商的着色器接口整合GPU驻留资源。该示例还展示了如何利用 NVIDIA Model Optimizer 进行训练后量化(PTQ),从而生成量化版的ONNX模型。尽管量化过程依赖于具体硬件,但由于ONNX接口保持不变,量化后的模型可以直接替换原模型使用,无需修改应用程序代码。

开始使用DIN Deploy

可以从该代码仓库中适用于 Windows、Linux、x86-64 和 Arm64 的 CMake 预设配置开始。在完成项目配置和构建后,将模型导出为ONNX格式,并通过 TensorRT RTX 运行命令行工具,或者将代码复制到自己的应用程序中并使用相应的管线实现。CMake 默认会自动下载 ONNX Runtime 和 TensorRT RTX。

如需了解更多信息,可查阅 TensorRT for RTX、NVIDIA Local AI 以及 DIN Deploy 代码仓库的相关资料,以及NVIDIA博客系列中关于模型量化的内容。

Q&A

Q1:DIN Deploy是什么?

A:DIN Deploy是一套开源的C++示例集合,结合ONNX Runtime与NVIDIA TensorRT RTX执行提供程序,帮助开发者将AI模型从检查点转换为在Windows和Linux上运行的原生硬件加速应用程序。

Q2:DIN Deploy支持哪些AI任务?

A:DIN Deploy支持自动语音识别(包括离线和流式处理)、图像与视频的交互式分割掩膜处理,以及基于提示词的图像生成等任务。

Q3:如何开始使用DIN Deploy?

A:可以使用仓库提供的CMake预设配置(支持Windows、Linux、x86-64和Arm64),完成项目构建后导出模型为ONNX格式,再通过TensorRT RTX运行命令行工具,或将代码集成到自己的应用程序中。

NVIDIA