Windows 机器学习入门

可以通过多种方法在应用中使用 Windows 机器学习。 核心在于,只需执行几个简单的步骤即可。

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

  2. 将 ONNX 模型文件添加到应用程序,或者在目标设备上以其他某种方式提供该文件。

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

Training environment, add model reference, application, Windows ML

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

下表突出显示了内置 Windows ML 和 Windows ML NuGet 包的可用性、分发、语言支持、维护和前向兼容性方面。

属性 内置 NuGet
可用性 Windows 10 版本 1809 或更高版本 Windows 8.1 或更高版本
分布 内置到 Windows SDK 作为应用程序的一部分进行打包和分发
维护 Microsoft 驱动(客户自动受益) 开发人员驱动
向前兼容性 自动使用新功能进行前滚 开发人员需要手动更新包

在使用内置解决方案的情况下运行应用程序时,Windows ML 运行时(包含 ONNX 模型推理引擎)将评估 Windows 10 设备(或面向服务器部署时使用的 Windows Server 2019)上已训练的模型。 Windows ML 将处理硬件抽象,从而使开发人员可将目标定位在各种芯片上 — 包括 CPU、GPU 以及未来的 AI 加速器。 Windows ML 硬件加速构建在 DirectML 的基础之上。DirectML 是用于运行 ML 推理的高性能低级别 API,是 DirectX 家族中的一员。

windows ml layers

windows ml nuget package

对于 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 的机器学习产品有哪些?以了解详细信息。

了解详细信息

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

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

注意

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

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