DML EP (NPU) 预览
此DirectML的开发者预览版本支持在配备Qualcomm Snapdragon X系列处理器和Qualcomm Hexagon NPU的新Windows 11设备上运行一部分模型。
DirectML是一个低级API,提供了一个通用的抽象层,使硬件供应商能够暴露其机器学习加速器。DirectML可以与任何兼容DirectX 12 (DX12)的设备一起使用,包括GPU,现在也扩展了对Qualcomm Hexagon NPU的支持。通过此开发者预览版本,DirectML针对新的Snapdragon X系列设备的NPU,并运行为NPU加速优化的机器学习模型。Qualcomm Hexagon NPU在DirectML中的支持仍在进行中,我们渴望听取您的反馈,并从您的经验中学习。
开始使用NPU支持的DirectML
此示例显示了如何在NPU上使用DirectML EP执行示例模型ESRGAN。
以管理员模式打开PowerShell,并执行以下操作。
-
运行以下命令下载设置脚本并安装执行示例模型所需的依赖项。
Invoke-WebRequest -O dml_npu_setup.ps1 https://raw.githubusercontent.com/quic/wos-ai/refs/heads/main/Scripts/dml_npu_setup.ps1
-
运行以下命令安装此处列出的依赖项。
- CMake版本 3.30.4
- Visual Studio Enterprise版本 17.10.3
- Git版本 2.47.0.2
powershell -command "& {.\dml_npu_setup.ps1}"
-
运行以下命令以克隆包含示例的存储库,并通过运行以下命令更改工作目录。
git clone https://github.com/microsoft/DirectML.git
cd ./DirectML/Samples/DirectML_ESRGAN
-
运行以下命令以配置和构建示例。
cmake --preset win-arm64
cmake --build --preset win-arm64-release
-
运行以下命令在NPU上执行示例。
cd build/win-arm64/RelWithDebInfo
.\directml_esrgan.exe -a NPU
注意: 在运行最后的执行命令后,模型已成功执行,但显示了以下错误消息。这些是错误消息,将在未来的版本中修复。
Error in cpuinfo: Unknown chip model name Snapdragon® X Elite - X1E78100 - Qualcomm® Oryon™ CPU unknown Qualcomm CPU part 0x1 ignored
注意: 目前,ONNX Runtime的Python API中不支持NPU选择,但即将推出。
如何提供反馈和报告问题
我们感谢您的反馈,并希望从您对Qualcomm Hexagon NPU在DirectML支持中的经验中学习。要提供反馈和报告问题,请使用DirectML存储库中的GitHub问题跟踪器。在报告问题时,请确保包含您的设备详细信息、Windows版本、DirectML应用程序以及您的机器学习模型的信息。
如需进一步的疑问或支持,请访问支持论坛。
后续步骤
现在您已经知道如何使用DML EP在NPU上运行模型,请返回ONNX Runtime,或继续下一部分尝试使用DML WebNN EP预览进行模型推理。
DML WebNN EP 预览
此WebNN的开发者预览版本使您能够在浏览器中运行机器学习模型,并为将AI创新带入网络提供了新的可能性。它定义了如何与硬件加速API(如DirectML)进行接口,允许网站利用用户PC上的Qualcomm Adreno GPU或Qualcomm Hexagon NPU在本地运行AI。DirectML作为Windows Copilot Runtime的一个关键基础组件,简化了开发人员如何通过一个跨硬件的DirectX API来扩展其AI创新,该API提供安全、一致和高性能,适用于各种硬件架构。WebNN还支持与机器学习框架的集成,例如ONNX Runtime Web(ORT Web),这是ONNX Runtime项目的一部分。ORT Web是一个JavaScript库,使您能够在网页浏览器中运行ONNX模型,并扩展执行提供者(EP)框架以包含WebNN作为EP。
通过WebNN开发者预览版,依托DirectML和ORT Web,您可以在浏览器中以硬件加速和最小代码更改运行ONNX模型。
开始使用WebNN
要在兼容DirectML的设备上开始使用WebNN,您需要:
- Windows 11,版本 24H2 或更高
- Edge的内部版本
- 最新的WebNN NPU驱动程序:
- Qualcomm® Hexagon NPU驱动程序包 V1.0.0.10
为WebNN开发者预览启用Edge的内部版本
-
在Microsoft Edge Canary或Dev频道中启用WebNN。
a. 从 https://www.microsoft.com/en-us/edge/download/insider 下载。
b. 运行安装程序。
c. 在地址栏中输入about://flags。
d. 搜索“Enables WebNN API”,并将其更改为“Enabled”。
e. 退出浏览器。 -
安装Qualcomm® Hexagon NPU驱动程序包。
a. 使用您的帐户凭据登录Qualcomm软件中心。
b. 搜索Hexagon NPU驱动程序,选择Qualcomm® Hexagon NPU驱动程序。
c. 将操作系统从“Windows”更改为“Windows (ARM64)”。
d. 点击下载(最新驱动版本可用)。
e. 解压QHND.Core.1.0.0.10.Windows-ARM64.zip(或最新驱动的压缩文件)。
f. 运行PreAlpha_QCHexagon_NPU_Driver安装程序。 -
下载DirectML可再分发包。
a. 从这里下载DirectML: https://www.nuget.org/packages/Microsoft.AI.DirectML
b. 将microsoft.ai.directml.1.15..nupkg重命名为microsoft.ai.directml.1.15..zip并解压。
c. 注意:建议WebNN开发者预览使用DML 1.15.4及以上版本。
d. 将microsoft.ai.directml.1.15…nupkg.zip\bin\arm64-win\directml.dll复制到适当的目录,如下所示。- 如果使用Edge Dev: C:\Program Files (x86)\Microsoft\Edge
Dev\Application\129.0.2779.0\ 当对话框询问管理员权限时,选择继续。 - 如果使用Edge Canary: %LOCALAPPDATA%\Microsoft\Edge SxS\Application\129.0.2779.0\ 当对话框询问管理员权限时,选择继续。
注意: 版本特定目录(129.0.2779.0)在您的计算机上可能会有所不同。
- 如果使用Edge Dev: C:\Program Files (x86)\Microsoft\Edge
-
启动Edge Insider
a. 打开终端并将工作目录更改为Edge Insider构建:- 如果使用Edge Dev:
C:\Program Files (x86)\Microsoft\Edge Dev\Application
- 如果使用Edge Canary:
%LOCALAPPDATA%\Microsoft\Edge SxS\Application
b. 运行以下命令以启动浏览器。
.\msedge.exe -use-redist-dml -disable_webnn_for_npu=0 -disable-gpu-sandbox
c. 现在,您可以通过导航到aka.ms/webnn在canary或dev浏览器中运行WebNN框架的示例,选择图像分类或Whisper Base示例。
d. 在运行示例时选择NPU。
- 如果使用Edge Dev:
此开发者预览的局限性
DirectML正在迅速扩展,简化开发人员如何在Windows上使用各种本地加速器、硬件变体和框架的方式。然而,目前存在一些限制:
- C++开发人员:必须在其应用中使用DirectML 1.15作为可再分发包。
- NPU选择:目前尚未通过ONNX Runtime的Python API提供,但即将推出!
- 功能:在Surface Copilot+ PC和一些其他OEM上进行了验证。
- 支持的模型:DirectML保证与Qualcomm® Hexagon NPU上的特定模型的兼容性。使用模型采样时,请使用确切的ONNX版本。
- 错误代码:开发人员在使用不受支持的模型时可能会遇到DXGI_ERROR_UNSUPPORTED (0x887A0004),这表示设备接口或功能级别不受支持。
- 测试不受支持的模型:启用Windows开发者模式(设置 > 系统 > 开发者)以测试超出支持列表的模型。请注意,这些模型可能会表现出未定义的行为。
如何提供反馈和报告问题
我们感谢您的反馈,并希望从您对Qualcomm Hexagon NPU在DirectML支持中的经验中学习。要提供反馈和报告问题,请使用DirectML存储库中的GitHub问题跟踪器。在报告问题时,请确保包含您的设备详细信息、Windows版本、DirectML应用程序和您的机器学习模型的信息。 如需进一步的疑问或支持,请访问支持论坛。
后续步骤
现在您已经知道如何使用DML WebNN EP运行模型,请返回ONNX Runtime,或继续下一部分尝试使用QNN执行提供者进行模型推理。