高通WOS AI开发之 ONNX运行时(三)

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中的支持仍在进行中,我们渴望听取您的反馈,并从您的经验中学习。

DirectML EP预览示例

开始使用NPU支持的DirectML

此示例显示了如何在NPU上使用DirectML EP执行示例模型ESRGAN。
以管理员模式打开PowerShell,并执行以下操作。

  1. 运行以下命令下载设置脚本并安装执行示例模型所需的依赖项。

    Invoke-WebRequest -O dml_npu_setup.ps1 https://raw.githubusercontent.com/quic/wos-ai/refs/heads/main/Scripts/dml_npu_setup.ps1
    
  2. 运行以下命令安装此处列出的依赖项。

    • CMake版本 3.30.4
    • Visual Studio Enterprise版本 17.10.3
    • Git版本 2.47.0.2
    powershell -command "& {.\dml_npu_setup.ps1}"
    
  3. 运行以下命令以克隆包含示例的存储库,并通过运行以下命令更改工作目录。

    git clone https://github.com/microsoft/DirectML.git
    
    cd ./DirectML/Samples/DirectML_ESRGAN
    
  4. 运行以下命令以配置和构建示例。

    cmake --preset win-arm64
    
    cmake --build --preset win-arm64-release
    
  5. 运行以下命令在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

  • 点击这里获取此版本的更多信息。
  • 点击这里获取有关NPU上DirectML的更多信息。

注意: 目前,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 预览示例

通过WebNN开发者预览版,依托DirectML和ORT Web,您可以在浏览器中以硬件加速和最小代码更改运行ONNX模型。
开始使用WebNN
要在兼容DirectML的设备上开始使用WebNN,您需要:

  • Windows 11,版本 24H2 或更高
  • Edge的内部版本
  • 最新的WebNN NPU驱动程序:
    • Qualcomm® Hexagon NPU驱动程序包 V1.0.0.10

为WebNN开发者预览启用Edge的内部版本

  1. 在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. 退出浏览器。

  2. 安装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安装程序。

  3. 下载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)在您的计算机上可能会有所不同。

  4. 启动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。

此开发者预览的局限性

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执行提供者进行模型推理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值