适用范围:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是受支持的版本。 截至 2024 年 11 月 12 日,IoT Edge 1.4 LTS 的生命周期结束。 如果使用的是早期版本,请参阅 Update IoT Edge。
GPU 是人工智能计算的热门选择,因为它们提供并行处理功能,并且通常比 CPU 更快地运行基于视觉的推理。 为了支持人工智能和机器学习应用程序,Azure IoT Edge for Linux on Windows (EFLOW) 为虚拟机的 Linux 模块提供 GPU。
适用于 Windows 上的 Linux Azure IoT Edge支持多种 GPU 直通技术,包括:
直接设备分配 (DDA) - 将 GPU 核心分配给 Linux 虚拟机或主机。
GPU 半虚拟化 (GPU-PV) - 在 Linux 虚拟机和主机之间共享 GPU。
必须在部署期间选择合适的透传方法,以便与设备 GPU 硬件的支持功能相匹配。
重要
这些功能可能包括 NVIDIA Corporation 或其许可商开发并拥有的组件。 组件的使用受 NVIDIA 网站上的 NVIDIA 最终用户许可协议的约束。
通过使用 GPU 加速功能,你接受并同意 NVIDIA End-User 许可协议的条款。
先决条件
Windows 上适用于 Linux 的 Azure IoT Edge 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用户必须使用 November 2021 update 内部版本 19044.1620 或更高版本。 安装后,通过命令提示符运行 winver 来检查生成版本。
嵌套虚拟化不支持 GPU 直通,例如在 Windows 虚拟机中运行 EFLOW。
系统设置和安装
以下部分包含的设置和安装信息取决于你的 GPU。
NVIDIA T4/A2 GPU
对于 T4/A2 GPU,Azure建议从 GPU 供应商安装设备缓解驱动程序。 虽然是可选的,但安装缓解驱动程序可以提高部署的安全性。 有关详细信息,请参阅使用直接设备分配来部署图形设备。
警告
启用硬件设备直通可能会增加安全风险。 Azure建议在适用的情况下使用来自GPU供应商的设备问题缓解驱动程序。 有关详细信息,请参阅使用离散设备分配部署图形设备。
NVIDIA GeForce/Quadro/RTX GPU
对于
Windows 10用户还必须安装 WSL,因为某些库在 Windows 上的 WSL 和 Azure IoT Edge 之间共享。
Intel iGPU
对于 Intel iGPU,请下载并安装支持 WSL GPU 的 Intel 显卡驱动程序。
Windows 10用户还必须安装 WSL,因为某些库在 Windows 上的 WSL 和 Azure IoT Edge 之间共享。
在 Windows 上的 Azure IoT Edge Linux 部署中启用 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 模块。
在 Windows 部署上的现有 Azure IoT Edge Linux 中配置 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 示例。 这些示例显示了常见的制造和零售方案,例如缺陷检测、工人安全和库存管理。 这些开源示例可以是一个解决方案模板,用于生成基于视觉的machine learning应用程序。
多个 GPU 供应商提供用户指南,帮助他们使用 EFLOW 获取最大效益,充分利用其硬件和软件。
- 了解如何通过遵循关于 iGPU 上适用于 Windows 上的 Linux 的 Azure IoT Edge 和 OpenVINO™ Toolkit 的 Intel 指南以及参考实现,在 EFLOW 上运行 Intel OpenVINO™ 应用程序。
- 开始按照 NVIDIA 适用于 GeForce/Quadro/RTX GPU 的 EFLOW 用户指南,在 EFLOW 上部署 CUDA 加速应用程序。