用于 Azure IoT Edge for Linux on Windows 的 GPU 加速
适用于: IoT Edge 1.1
重要
IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 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,Microsoft 建议从 GPU 的供应商那里安装设备缓解驱动程序。 尽管安装缓解驱动程序是可选的操作,但安装后可以提高部署的安全性。 有关详细信息,请参阅使用直接设备分配来部署图形设备。
警告
启用硬件设备直通可能会增加安全风险。 Microsoft 建议使用 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 部署的一部分。
例如,以下命令创建分配有 NVIDIA A2 GPU 的虚拟机。
Deploy-Eflow -gpuPassthroughType "DirectDeviceAssignment" -gpuCount 1 -gpuName "NVIDIA A2"
完成安装后,即可通过 Azure IoT Edge for Linux on Windows 部署和运行 GPU 加速的 Linux 模块。
后续步骤
尝试使用采用 Edge 上的视觉的支持 GPU 的示例,这是一个解决方案模板,说明了如何生成你自己的基于视觉的机器学习应用程序。
了解如何在 EFLOW 上运行 Intel OpenVINO 应用程序,方法是遵循 适用于 Windows 上的 Azure IoT Edge for Linux 的 iGPU 指南和 OpenVINO 工具包 和 参考实现。
有关 GPU 传递技术的详细信息,请参阅 DDA 文档和 GPU-PV 博客文章。