Windows 机器学习入门

Important

有关 Windows 机器学习的最新文档,请参阅 什么是 Windows ML。 本文档介绍在 Windows 应用 SDK 中随附的 Microsoft.Windows.AI.MachineLearning 命名空间中的 API。 这些 API 取代了此处记录的 API,这些 API 位于 Windows.AI.MachineLearning 命名空间中,并在 2018 年交付。

在应用中使用 Windows 机器学习有多种方法。 从本质上讲,只需几个简单的步骤。

  1. 获取经过训练的开放式神经网络交换(ONNX)模型,或使用 ONNXMLTools 将在其他 ML 框架中训练的模型转换为 ONNX。

  2. 将 ONNX 模型文件添加到应用程序,或使其在目标设备上以其他方式可用。

  3. 将模型集成到应用程序代码中,然后生成并部署应用程序。

训练环境, 添加模型引用, 应用程序, Windows ML

内置 WinML 解决方案与 NuGet WinML 解决方案

下表重点介绍了适用于 Windows ML 的 In-Box 和 NuGet 包的可用性、分发、语言支持、服务和转发兼容性方面。

属性 In-Box NuGet
Availability Windows 10 版本 1809 或更高版本 Windows 8.1 或更高版本
Distribution 内置于 Windows SDK 中 将其打包并分发,作为您应用程序的一部分
Servicing Microsoft驱动(客户自动受益) Developer-driven
Forward compatibility 自动使用新功能进行前滚 开发人员需要手动更新包

当您的应用程序使用内置解决方案运行时,Windows ML 运行时(其中包含 ONNX 模型推理引擎)会在 Windows 10 设备上评估训练模型(如面向服务器部署,则在 Windows Server 2019 上)。 Windows ML 处理硬件抽象,使开发人员能够面向广泛的硅,包括 CPU、GPU,以及将来的 AI 加速器。 Windows ML 硬件加速基于 DirectML 构建,这是一种高性能、低级别的 API,用于运行 DirectX 系列中的 ML 推理。

Windows ML 层

Windows ML NuGet 包

对于 NuGet 包,这些层显示为下图所示的二进制文件。 Windows ML 内置于 Microsoft.ai.machinelearning.dll中。 它不包含嵌入式 ONNX 运行时,而是将 ONNX 运行时内置到文件中:onnxruntime.dll。 WindowsAI NuGet 包中包含的版本包含一个嵌入在其内部的 DirectML EP。 最终的二进制文件(DirectML.dll)是作为 DirectML 的实际平台代码,构建在内置于 Windows 中的 Direct 3D 和计算驱动程序之上。 这三个二进制文件都包含在 NuGet 版本中,以便与应用程序一起分发。

直接访问 onnxruntime.dll 还允许您针对跨平台场景,同时获取与硬件无关的加速,该加速能够在所有 Windows 设备上实现扩展。

来自Microsoft的其他机器学习解决方案

Microsoft提供各种机器学习解决方案以满足你的需求。 这些解决方案在云、本地和设备本地运行。 有关详细信息,请参阅Microsoft中的机器学习产品选项是什么?

Learn more

如果要使用 Windows ML NuGet 包,请参阅 教程:将现有的 WinML 应用移植到 NuGet 包

有关最新的 Windows ML 功能和修补程序,请参阅我们的 发行说明

Note

使用以下资源获取有关 Windows ML 的帮助:

  • 若要提出或回答有关 Windows ML 的技术问题,请在 Stack Overflow 上使用 windows-machine-learning 标记。
  • 若要报告 bug,请在 GitHub 上提交问题。