什么是 Windows ML

Windows 机器学习(ML)可帮助 C#、C++ 和 Python Windows 应用开发人员在本地跨各种 Windows 电脑硬件(包括 CPU、GPU 和 NPU)在本地运行 ONNX 模型。 Windows ML 抽象化硬件和执行提供程序,因此你可以专注于编写代码。 此外,Windows ML 会自动更新以支持最新的 NPU、GPU 和 CPU,随着它们的发布。

演示 ONNX 模型的示意图,该模型通过 Windows ML 访问 NPU、GPU 和 CPU。

重要

Windows ML API 目前是实验性的, 不支持 在生产环境中使用。 尝试这些 API 的应用不应发布到 Microsoft 应用商店。

支持的 Windows 版本

Windows ML 适用于所有运行版本 24H2(内部版本 26100)或更高版本的 Windows 11 电脑。

支持的硬件

Windows ML 适用于所有 x64 和 ARM64 电脑硬件,甚至没有 NPU 或 GPU 的电脑,这意味着你可以在市场上达到数亿台 Windows 设备。 这可能意味着使工作负荷保持精简;但有 iGPU 足够强大,可以处理繁重的工作负荷。

将模型转换为 ONNX

可以将模型从其他格式转换为 ONNX,以便可以将模型与 Windows ML 配合使用。 请参阅 Visual Studio Code AI 工具包的文档,了解如何 将模型转换为 ONNX 格式 以了解详细信息。

Windows ML 解决了哪些挑战?

硬件多样性

作为在 Windows 上构建的 AI 开发人员,Windows ML 为你解决的第一个挑战是硬件多样性。 是的,这是 Windows 生态系统的优势,用户可以选择最适合它们的任何硬件。 但是,如果没有 Windows ML,那么作为构建 AI 体验的开发人员,将很难支持所有这些硬件多样性。 许多当今在 Windows 上运行的领先应用程序选择一次只在一个硬件供应商上发布。 只是 intel;只是高通;只是 AMD;目前只是离散 GPU。 这大大限制了这些应用能够运行的设备数。

部署依赖项

接下来,有一个问题是如何部署所需的所有依赖项。 若要在应用中交付 AI 体验,应用必须交付并部署三个元素。

  • 要运行的 AI 模型。
  • 一个运行时,可用于对这些模型执行推理。
  • 特定于供应商的工具和驱动程序有助于所选的运行时与芯片的通信。

你的应用需要这些内容,还需要对其进行维护和更新。 当发布新的运行时版本或修复了其中的关键 bug 时,需要相应地更新应用。 如果没有 Windows ML,作为应用的开发人员,你需要拥有所有这些依赖项的所有权。 它们将成为你的应用的一部分,维护一切的负担会落到你手上。

利用本地硬件

然后就是要利用运行应用程序的本地硬件的问题。 AI 工作负载应在 CPU、GPU 或 NPU 上运行? 如果你使用的是不同的 AI 模型,那么哪些模型在哪些处理器上运行得最好? 此问题很快变得非常复杂。 如果没有 Windows ML,你就需要负责编写和维护复杂的逻辑,先检测当前设备上可用的资源,然后设法从中获得最大的性能表现。

Windows ML 解决了 Microsoft.Windows.AI.MachineLearning 所有这些问题。

  • 运行时不需要位于应用内部。
  • 根据他们可用的硬件,会自动为用户选择执行提供程序(EP)。 开发人员替代可用于选择。
  • Windows ML 管理运行时依赖项;将 负担从 应用推送到 Windows ML 本身和 EP 上。
  • Windows ML 可帮助平衡客户端设备上的负载,并选择适当的硬件来执行 AI 工作负载。

详细概述

Windows ML 在 Microsoft.Windows.AI.MachineLearning 中是 Windows AI Foundry 的 AI 推理引擎 核心。 因此,无论是使用 Windows AI API 来访问内置于 Windows 中的模型,还是将现成的 Foundry 模型列表与 Foundry Local 配合使用(请参阅 Foundry Local 入门),你很可能在 Windows ML 上运行 AI 工作负载,甚至不知道它。

如果你要自带模型,或者需要对模型推理方式进行高度精细的控制,则可以通过调用其 API 直接使用 Windows ML。 请参阅 Windows ML (Microsoft.Windows.AI.MachineLearning) API

基于 ONNX 运行时

Windows ML 基于 ONNX 运行时的分支和专用版本构建。 这样做可实现一些特定于 Windows 的性能增强功能。 我们还针对标准 ONNX QDQ 模型进行了优化,该模型允许专注于在本地设备上实现最佳推理性能,而无需不必要的扩大模型。

ONNX 运行时通过执行提供程序(EP)与硅对话,后者充当运行时和硬件驱动程序之间的转换层。 我们将与 Windows Click to Do 和 NPU 执行提供程序相关的工作,与适用于 GPU 的新执行提供程序结合在一起,并将其全部整合到一个 Windows ML 框架中。这个框架现在完全兑现了其承诺,实现了可以针对 CPU、GPU 和 NPU 的任何硬件的 AI 工作负载。 每种类型的处理器都是一流的公民,它完全支持来自四个主要 AI 硅供应商(AMD、Intel、NVIDIA 和 Qualcomm)的最新驱动程序和 ONNX 运行时执行提供程序。 这些处理器类型处于相同的状态-只需使用 ONNX QDQ 模型写入 Windows ML,才能在所有类型的硬件上自信地缩放 AI 工作负载。

打包和部署

将对 Windows ML 的引用添加到项目后,并在客户的电脑上安装应用:

  1. 我们下载最新版本的 Windows ML,以确保运行时环境能够与你的应用程序一起正确安装。
  2. 然后,我们检测安装应用的特定计算机的硬件,并下载该电脑所需的相应执行提供程序。

因此,无需在应用包中携带自己的执行提供程序。 事实上,你根本不需要担心执行提供程序,也不必担心交付专为 AMD、Intel、NVIDIA 或 Qualcomm 或任何其他特定硬件系列设计的 AI 运行时的自定义版本。 只需调用 Windows ML API 接口,然后输入格式正确的模型,我们负责其余部分——自动在目标硬件上配置所需的一切,并保持所有内容更新。

结果是它大大简化了必须管理和担心的依赖项。 通过我们与 AMD、Intel、NVIDIA 和 Qualcomm 等硬件合作伙伴的紧密互动,我们从中受益,使这一切成为可能。 这些合作伙伴将继续为 Windows ML 提供执行服务提供商,并在有更新或即将推向市场的新型芯片时将其提交给 Microsoft。

Microsoft将认证任何新的执行提供程序(EP),以确保推理精度没有下降。 然后,我们将负责代表硬件供应商将这些 EP 部署到目标计算机上,并促进整个 Windows ML 生态系统保持最新和更新。

与 DirectML 和 DirectX 等技术采用的方法不同;在这些技术中,微软在硬件生态系统发生变化时对 API 进行抽象。 相反,借助 Windows ML,我们正在改变格局,使硬件供应商能够快速直接引入创新的硬件,并在这些硬件进入市场时即时获得执行提供商的支持。

性能

性能不仅仅是实际运行速度。 是的,许多 AI 工作负载的计算成本很高。 但是,随着 AI 在应用体验中无处不在,运行时需要一种可以优化推理的方式来保持电池使用时间,同时保持高度的准确性。 使 AI 能够生成良好的准确结果。

AI 工作负载通常属于以下两种类型之一:

  1. 环境智能。 当用户与应用交互时,AI 悄然在后台运行。
  2. 显式 AI。 用户知道他们已启动了 AI 任务,这通常是某种生成式 AI(genAI)场景。

环境感知 AI 工作负载可以卸载到具有 40 多 TOPS 处理能力的专用 NPU 处理器,通常仅消耗几瓦的电力。 这样,Windows ML 就非常适合环境 AI 工作负载。 在大多数情况下,你的应用的用户将感受到 AI 的魔力,而无需等待,而无需担心电脑的电池使用时间。

许多计算密集型 AI 任务都可以由专用 GPU 提供最佳服务。 2018 版本的 Windows ML 依赖于 DirectML EP 来处理 GPU 工作负载;这会增加模型和硅之间的层数。 在 Microsoft.Windows.AI.MachineLearning 中,Windows ML 没有 DirectML 层。 相反,它直接与专用于 GPU 的执行提供商合作,能够提供媲美过去专用 SDK 的性能,例如 TensorRT for RTX、AI Engine Direct 和 Intel 的 PyTorch 扩展。 我们已将 Windows ML 设计为具备一流的 GPU 性能,同时保留过去基于 DirectML 的解决方案提供的写一次,随处运行的优势。

在这两种情况下,性能的各个方面都很重要。 纯时钟速度、电池使用时间和准确性。 使用户获得真正良好的结果。

这一切将为你提供一系列由 AI 提供支持的体验和方案。 可以在专用 NPU 上运行环境 AI 工作负载和代理;或根据需要在集成 GPU 上运行工作负载,使离散 GPU 保持空闲状态。 如果需要原始电源,则可以以当今的新式离散 GPU(dGPU)为目标,以最快的速度运行更重的工作负荷。

什么是执行提供程序?

执行提供程序(EP)是实现机器学习(ML)操作的硬件特定优化的组件。 EP 可以实现一个或多个硬件抽象。 例如:

  • CPU 执行提供程序针对常规用途处理器进行优化。
  • GPU 执行提供程序针对图形处理器进行优化。
  • NPU 执行提供程序针对神经处理单元进行优化。
  • 其他特定于供应商的提供商。

Windows ML 运行时通过提供用于执行以下作的 API 来处理管理这些执行提供程序的复杂性:

  1. 下载适用于当前硬件的相应 EP。
  2. 在运行时动态注册 EP。
  3. 配置 EP 行为。

将 Windows ML 与执行提供程序配合使用

Windows ML 运行时提供了一种灵活的方法来访问机器学习(ML)执行提供程序(EP),它可以优化不同硬件配置的 ML 模型推理。 这些 EP 作为单独的软件包进行分发,可以独立于操作系统进行更新。

提供有关 Windows ML 的反馈

我们很乐意听取你关于使用 Windows ML 的反馈! 如果遇到任何问题,请使用 Windows 上的反馈中心应用报告问题。

应在 开发人员平台 -> Windows 机器学习 类别下提交反馈。