DirectML 是一个用于机器学习的高性能、硬件加速的 DirectX 12 库。 DirectML 为广泛支持的硬件和驱动程序中的常见机器学习任务提供 GPU 加速,包括来自 AMD、Intel、NVIDIA 和 Qualcomm 等供应商的所有支持 DirectX 12 的 GPU。
独立使用时,DirectML API 是低级 DirectX 12 库,适用于高性能、低延迟的应用程序,例如框架、游戏和其他实时应用程序。 DirectML 与 Direct3D 12 的无缝互操作性以及其低开销和跨硬件的一致性,使得 DirectML 非常适合在需要高性能且跨硬件结果的可靠性和可预测性至关重要时加速机器学习。
有关 DirectML 的更多信息,请参阅 DirectML 简介。
访问 DirectX 登录页面,获取适用于 DirectX 开发人员的更多资源。
DirectML 作为 Windows 10 的系统组件进行分发,并作为 Windows 10 版本 1903(10.0;Build 18362)及更高版本中 Windows 10 操作系统 (OS) 的一部分提供。
从 DirectML 版本 1.4.0 开始,DirectML 还可以作为独立的可再发行包提供(请参阅 Microsoft.AI.DirectML),这对于希望使用固定版本 DirectML 的应用程序或在旧版本的 Windows 10 上运行时非常有用。
DirectML 需要支持 DirectX 12 的设备。过去几年发布的几乎所有商用显卡都支持 DirectX 12。兼容硬件的示例包括:
DirectML 公开本机 C++ DirectX 12 API。标头和库 (DirectML.h/DirectML.lib) 作为可再发行 NuGet 包的一部分提供,并且也包含在 Windows 10 SDK 版本 10.0.18362 或更高版本中。
DirectML 内置为多个框架的后端,例如 Windows ML、ONNX Runtime 和 TensorFlow。
请参阅以下部分了解更多信息:
DirectML C++ 示例代码可在示例下找到。
DirectML Python 示例代码可在 Python/samples 下找到。这些示例需要 PyDirectML,这是一个用于 DirectML 的开源 Python 投影库,可以从 Python/src 构建并安装到 Python 执行环境。有关更多详细信息,请参阅 Python/README.md 文件。
DxDispatch 是简单的命令行可执行文件,用于启动 DirectX 12 计算程序(包括 DirectML 运算符),而无需编写所有 C++ 样板文件。
Windows ML (WinML) 是一种高性能、可靠的 API,用于在 Windows 设备上部署硬件加速的 ML 推理。 DirectML 为 Windows ML 提供 GPU 后端。
可以使用具有任何一种 DirectX DeviceKinds 的 LearningModelDevice 在 Windows ML 中启用 DirectML 加速。
有关详细信息,请参阅 Windows ML 入门。
ONNX Runtime 是一款跨平台推理和训练加速器,与许多流行的 ML/DNN 框架兼容,包括 PyTorch、TensorFlow/Keras、scikit-learn 等。
DirectML 可作为 ONNX 运行时的可选执行提供程序,在 Windows 10 上运行时提供硬件加速。
有关入门的更多信息,请参阅使用 DirectML 执行提供程序。
具有 DirectML 的 PyTorch 可以在各种 DirectX 12 兼容硬件上训练和推理复杂的机器学习模型。这是通过 PyTorch 的插件torch-directml
完成的。
最新版本的 Windows 和适用于 Linux 的 Windows 子系统都支持带有 DirectML 的 PyTorch,并且可以作为 PyPI 包下载。有关torch-directml
入门的更多信息,请参阅 Microsoft Learn 上的 Windows 或 WSL 2 指南。
TensorFlow 是一个流行的机器学习开源平台,也是机器学习模型训练的领先框架。
TensorFlow 1.15 的 DirectML 加速目前可用于公共预览版。 DirectML 上的 TensorFlow 支持在各种 DirectX 12 兼容硬件上训练和推理复杂的机器学习模型。
DirectML 上的 TensorFlow 在最新版本的 Windows 10 和适用于 Linux 的 Windows 子系统上均受支持,并且可以作为 PyPI 包下载。有关入门的更多信息,请参阅 GPU 加速 ML 训练 (docs.microsoft.com)
我们期待您的来信!
对于具有 DirectML 问题、错误和反馈的 TensorFlow;或者对于一般 DirectML 问题和反馈,请提出问题或直接通过[email protected] 与我们联系。
对于具有 DirectML 问题、错误和反馈的 PyTorch;或者对于一般 DirectML 问题和反馈,请提出问题或直接通过[email protected] 与我们联系。
对于 Windows ML 问题,请在 microsoft/Windows-Machine-Learning 上提交 GitHub 问题,或直接通过 [email protected] 与我们联系。
对于 ONNX 运行时问题,请在 microsoft/onnxruntime 提交问题。
DirectML 编程指南
DirectML API 参考
DirectML 简介(游戏开发者大会 '19)
使用 DirectML 和 DirectX 12 加速 GPU 推理 (SIGGRAPH '18)
Windows AI:Windows 设备上的硬件加速机器学习 (Microsoft Build '20)
使用 Windows ML 进行游戏(DirectX 开发人员博客)
GDC 2019 上的 DirectML(DirectX 开发人员博客)
DirectX ❤ Linux(DirectX 开发人员博客)
该项目欢迎贡献和建议。大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.microsoft.com。
当您提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA 并适当地装饰 PR(例如标签、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。