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

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

重要

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

GPU 是适用于人工智能计算的常用选项,因为它们提供并行处理功能,并且通常可以执行基于视觉的推断,速度比 CPU 更快。 为了更好地支持人工智能和机器学习应用程序,Azure IoT Edge for Linux on Windows (EFLOW) 可以向虚拟机的 Linux 模块公开一个 GPU。

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

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

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

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

重要

这些功能可能包括由 NVIDIA 公司或其授权方开发和拥有的组件。 组件的使用受 NVIDIA 网站上的 NVIDIA 最终用户许可协议的约束。

使用 GPU 加速功能,即表示你接受并同意 NVIDIA 最终用户许可协议的条款。

先决条件

Azure IoT Edge for Linux 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,Azure 建议从 GPU 的供应商那里安装设备缓解驱动程序。 尽管安装缓解驱动程序是可选的操作,但安装后可以提高部署的安全性。 有关详细信息,请参阅使用直接设备分配来部署图形设备

警告

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

NVIDIA GeForce/Quadro/RTX GPU

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

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

Intel iGPU

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

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

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

完成系统设置后,即可创建 Azure IoT Edge for Linux on Windows 部署。 在此过程中,必须启用 GPU 作为 EFLOW 部署的一部分。

例如,以下命令创建一个支持 GPU 的虚拟机,其中包含 NVIDIA A2 GPU 或 Intel Iris Xe 图形卡。

#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 的名称,可以运行以下命令或者在设备管理器中查看显示适配器。

(Get-WmiObject win32_VideoController).caption

完成安装后,即可通过 Azure IoT Edge for Linux on Windows 部署和运行 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, otherwise they will be 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, otherwise the GPU will be 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 示例。 这些示例演示了常见的制造和零售方案,例如缺陷检测、工人安全保护和库存管理。 这些开源示例可用作解决方案模板,从中可以生成你自己的基于视觉的机器学习应用程序。

从我们的合作伙伴那里了解详细信息

有多家 GPU 供应商提供了有关通过 EFLOW 发挥硬件和软件最大作用的用户指南。

注意

此指南未介绍基于 DDA 的 GPU,例如 NVIDIA T4 或 A2。

深入了解技术

有关 GPU 传递技术的详细信息,请参阅 DDA 文档GPU-PV 博客文章