Windows 版 ONNX Runtime 快速入门

ONNX Runtime Nuget 包提供了使用完整 WinML API 的能力。 这允许诸如将来自连接相机的 Windows.Media.VideoFrame 直接传递到运行时以进行实时推理的场景。

WinML API 是一个 WinRT API,它在 Windows OS 内部发布,从 Windows.AI.MachineLearning 命名空间中的 1809 版本 (RS5) 开始。 它嵌入了 ONNX Runtime 的一个版本。

除了使用内置版本的 WinML 之外,WinML 也可以作为应用程序可再发行包安装(有关技术细节,请参阅 Direct ML Windows)。

目录

Windows OS 集成

ONNX Runtime 在 Windows 10 版本 >= 1809 和所有 Windows 11 版本中可用。 它嵌入在 Windows.AI.MachineLearning.dll 内部,并通过 WinRT API(简称 WinML)公开。 它包括 CPU 执行提供程序和 DirectML 执行提供程序,以实现 GPU 支持。

高级别设计如下所示

ONNX + WinML layered architecture

API 选择

您可以选择使用 WinRT API 或 C API。

  WinRT C API
类型系统 与 Windows RT 类型的集成 平台中性类型
语言支持 通过 WinRT 投影的语言支持 通过每种语言投影的语言支持
张量化 接受 VideoFrames 并转换为张量(支持 CPU 和 GPU) 接受张量

将 NuGet WinRT API 与其他 C-API 分发结合使用

WinRT API NuGet 包与特定版本的 ONNX Runtime 一起分发,但应用程序可以包含其自己的 ONNX Runtime 版本(已发布的版本自定义构建)。 您可能希望这样做以使用非默认执行提供程序。 要使用您自己的 ONNX Runtime 版本,请将 onnxruntime.dll 替换为您所需的版本。

返回页首

支持的版本

Windows 8.1+

返回页首

构建

工件 描述 支持的平台
Microsoft.AI.MachineLearning WinRT - CPU, GPU (DirectML) Windows 8.1+

API 参考

Windows.AI.MachineLearning

示例

任何已为 Windows.AI.MachineLearning API 编写的代码都可以轻松修改为针对 Microsoft.ML.OnnxRuntime 包运行。 最初由收件箱客户通过 Windows 命名空间引用的所有类型都需要更新为现在使用 Microsoft 命名空间。

我应该使用内置版本还是 NuGet WinML 版本?

有关比较,请参阅 Windows 机器学习:内置与 NuGet WinML 解决方案

要检测特定 OS 版本的 Windows 是否具有 WinML API,请使用 IsApiContractPresent 方法。 这可以从 UWP 或本机应用调用。

如果 OS 没有您需要的运行时,您可以切换为使用可再发行二进制文件。

版本 API 合约版本
Windows OS 1809 1
Windows OS 1903 2
Windows OS 1909 2
ORT 版本 1.2 3
ORT 版本 1.3 3
ORT 版本 1.4 3

有关 Windows OS 发行版中的 opset 和 ONNX 版本详细信息的更多信息,请参阅此处

返回页首