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

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

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 博客文章