你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用于 Azure IoT Edge for Linux on Windows 的 GPU 加速

适用于:IoT Edge 1.5 复选标记IoT Edge 1.5

重要

IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 的生命周期结束日期为 2024 年 11 月 12 日。 如果你使用的是早期版本,请参阅更新 IoT Edge

GPU 是人工智能计算的热门选择,因为它们提供并行处理功能,并且通常比 CPU 更快地运行基于视觉的推理。 为了支持人工智能和机器学习应用程序,Windows 上的 Azure IoT Edge for Linux(EFLOW)向虚拟机的 Linux 模块公开 GPU。

Azure IoT Edge for Linux on Windows 支持几种 GPU 传递技术,其中包括:

  • 直接设备分配 (DDA) - 将 GPU 核心分配给 Linux 虚拟机或主机。

  • GPU 半虚拟化 (GPU-PV) - 在 Linux 虚拟机和主机之间共享 GPU。

必须在部署期间选择适当的直通方法,以便与设备 GPU 硬件支持的功能匹配。

重要

这些功能可能包括 NVIDIA Corporation 或其许可商开发并拥有的组件。 组件的使用受 NVIDIA 网站上的 NVIDIA 最终用户许可协议的约束。

通过使用 GPU 加速功能,你接受并同意 NVIDIA End-User 许可协议的条款。

先决条件

适用于 Linux 的 Azure IoT Edge on Windows 的 GPU 加速功能目前支持一组选定的 GPU 硬件。 此外,使用此功能可能需要特定版本的 Windows。

支持的 GPU 和所需的 Windows 版本包括:

支持的 GPU GPU 传递类型 支持的 Windows 版本
NVIDIA T4、A2 DDA Windows Server 2019
Windows Server 2022
Windows 10/11(专业版、企业版、IoT 企业版)
NVIDIA GeForce、Quadro、RTX GPU-PV Windows 10/11(专业版、企业版、IoT 企业版)
Intel iGPU GPU-PV Windows 10/11(专业版、企业版、IoT 企业版)

重要

GPU-PV 支持仅限于某些代处理器或 GPU 体系结构,由 GPU 供应商决定。 有关详细信息,请参阅 Intel 的 iGPU 驱动程序文档NVIDIA 的适用于 WSL 文档的 CUDA

Windows Server 2019 用户必须使用最低内部版本 17763,并且安装了所有当前累积更新。

Windows 10 用户必须使用 2021 年 11 月更新内部版本 19044.1620 或更高版本。 安装后,通过命令提示符运行 winver 来检查生成版本。

嵌套虚拟化不支持 GPU 直通,例如在 Windows 虚拟机中运行 EFLOW。

系统设置和安装

以下部分包含的设置和安装信息取决于你的 GPU。

NVIDIA T4/A2 GPU

对于 T4/A2 GPU,Microsoft 建议从 GPU 的供应商那里安装设备缓解驱动程序。 虽然是可选的,但安装缓解驱动程序可以提高部署的安全性。 有关详细信息,请参阅使用直接设备分配来部署图形设备

警告

启用硬件设备直通可能会增加安全风险。 Microsoft 建议使用 GPU 供应商提供的设备缓解驱动程序(如果适用)。 有关详细信息,请参阅使用离散设备分配部署图形设备

NVIDIA GeForce/Quadro/RTX GPU

对于 NVIDIA GeForce/Quadro/RTX GPU,请下载并安装适用于 Linux 的 Windows 子系统 (WSL) 的支持 NVIDIA CUDA 的驱动程序,以便与现有 CUDA ML 工作流一起使用。 最初是为 WSL 开发的,适用于 WSL 的 CUDA 驱动程序也与 Windows 上的 Azure IoT Edge for Linux 配合使用。

Windows 10 用户还必须 安装 WSL ,因为某些库在 Windows 上的 WSL 和 Azure IoT Edge for Linux 之间共享。

Intel iGPU

对于 Intel iGPU,请下载并安装支持 WSL GPU 的 Intel 显卡驱动程序

Windows 10 用户还必须 安装 WSL ,因为某些库在 Windows 上的 WSL 和 Azure IoT Edge for Linux 之间共享。

在 Azure IoT Edge Linux on Windows 部署中启用 GPU 加速

完成系统设置后,开始 在 Windows 上创建适用于 Linux 的 Azure IoT Edge 部署。 在此过程中,在 EFLOW 部署过程中启用 GPU 支持

例如,这些命令使用 NVIDIA A2 GPU 或 Intel 鸢尾花 Xe 图形卡创建启用了 GPU 的虚拟机。

#Deploys EFLOW with NVIDIA A2 assigned to the EFLOW VM
Deploy-Eflow -gpuPassthroughType DirectDeviceAssignment -gpuCount 1 -gpuName "NVIDIA A2"

#Deploys EFLOW with Intel(R) Iris(R) Xe Graphics assigned to the EFLOW VM
Deploy-Eflow -gpuPassthroughType ParaVirtualization -gpuCount 1 -gpuName "Intel(R) Iris(R) Xe Graphics"

若要查找 GPU 名称,请运行以下命令或在 Device Manager 中查找显示适配器。

(Get-WmiObject win32_VideoController).caption

完成安装后,在 Windows 上通过适用于 Linux 的 Azure IoT Edge 部署和运行 GPU 加速的 Linux 模块。

在现有的 Azure IoT Edge Linux on Windows 部署中配置 GPU 加速

在部署时分配 GPU 以获得最简单的体验。 若要在部署后启用或禁用 GPU,请使用 set-eflowvm 命令。 使用 set-eflowvm时,默认参数用于未指定的任何参数。 例如,应用于对象的

# Deploys EFLOW without a GPU assigned to the EFLOW VM
Deploy-Eflow -cpuCount 4 -memoryInMB 16384

# Assigns NVIDIA A2 GPU to the existing deployment (cpu and memory must still be specified, or they're set to the default values)
Set-EflowVM -cpuCount 4 -memoryInMB 16384 -gpuName "NVIDIA A2" -gpuPassthroughType DirectDeviceAssignment -gpuCount 1

# Reduces the cpuCount and memory (GPU must still be specified, or the GPU is removed)
Set-EflowVM -cpuCount 2 -memoryInMB 4096 -gpuName "NVIDIA A2" -gpuPassthroughType DirectDeviceAssignment -gpuCount 1

# Removes NVIDIA A2 GPU from the existing deployment
Set-EflowVM -cpuCount 2 -memoryInMB 4096

后续步骤

  • 尝试 从 EFLOW 示例获取 GPU 示例。 这些示例显示了常见的制造和零售方案,例如缺陷检测、工人安全和库存管理。 这些开源示例可以是用于构建基于视觉的机器学习应用程序的解决方案模板。

  • DDA 文档GPU-PV 博客文章中了解有关 GPU 直通技术的详细信息。

多个 GPU 供应商提供了有关使用 EFLOW 充分利用其硬件和软件的用户指南: