Windows ML API

有关概念性指南,请参阅 使用 Windows ML 运行 ONNX 模型

可以将 Microsoft.WindowsAppSDK.ML NuGet 包中的 API 视为这两组的超集:

Microsoft.WindowsAppSDK.ML NuGet 包

Microsoft Windows ML 运行时为 Windows 应用程序中的机器学习和 AI作提供 API。 Microsoft.WindowsAppSDK.ML NuGet 包提供 Windows ML 运行时.winmd文件,用于 C# 和C++项目。

pywinrt Python wheel

Microsoft Windows ML 运行时利用 pywinrt 项目提供对同一 Windows ML API 的 Python 访问。 包名称为 winui3-Microsoft.Windows.AI.MachineLearning。 在 python 中使用 Windows 应用 SDK 需要其他包。 有关详细信息,请参阅 “使用 Windows ML 运行 ONNX 模型 ”主题。

Windows ML API

有关 API 参考文档和代码示例,请参阅 Microsoft.Windows.AI.MachineLearning 命名空间。

实现说明

Windows ML 运行时与 Windows 应用 SDK 集成,并依赖于其部署和引导机制:

  • 自动发现与当前硬件兼容的执行提供程序
  • 管理包生命周期和更新
  • 处理包注册和激活
  • 支持不同版本的执行提供程序

依赖于框架的部署

Windows ML 作为 依赖于框架 的组件提供。 这意味着你的应用必须:

  • 通过添加 Microsoft.WindowsAppSDK 的引用(推荐),引用主 Windows 应用 SDK NuGet 包
  • 或者,引用Microsoft.WindowsAppSDK.MLMicrosoft.WindowsAppSDK.Runtime

有关部署 Windows 应用 SDK 应用程序的详细信息,请参阅 包和部署 Windows 应用 文档。

将 ONNX 运行时与 Windows ML 配合使用

对于C++应用程序,注册执行提供程序后,直接使用 ONNX 运行时 C API 创建会话并运行推理。

对于 C# 应用程序,请直接使用 Microsoft.ML.OnnxRuntime 命名空间中的 ONNX Runtime 进行推理。

对于 Python 应用程序,请使用单独的 ONNX 运行时滚轮(onnxruntime)进行推理。 对于实验性版本,请使用索引onnxruntime-winml==1.22.0.post2中的https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple包。

Python 说明

初始化 Windows 应用 SDK

初始化 Windows 应用 SDK 后,所有 Windows ML 调用都应发生。 这可以通过以下代码完成:

from winui3.microsoft.windows.applicationmodel.dynamicdependency.bootstrap import (
    InitializeOptions,
    initialize
)
with initialize(options = InitializeOptions.ON_NO_MATCH_SHOW_UI):
    # Your Windows ML code here

注册在 Windows ML 外部进行

ONNX 运行时的设计方式是 Python 和本机环境是分开的。 同一进程中的本机注册调用不适用于 Python 环境。 因此,应直接使用 Python API 注册执行提供程序。

删除 pywinrt 的打包 vcruntime

pywinrt 项目在 winrt-runtime 包中包含 msvcp140.dll。 这可能与其他软件包冲突。 请删除此 dll 以避免此问题,并使用 vc 可再发行组件安装缺少的 vcruntime 库

另请参阅