Aceleración de GPU en Azure IoT Edge para Linux en Windows

Se aplica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 es la versión admitida. Si está usando una versión anterior, consulte Actualización de IoT Edge.

Las GPU son una opción popular para los cálculos de inteligencia artificial, ya que ofrecen funcionalidades de procesamiento paralelo y a menudo pueden ejecutar inferencias basadas en la visión más rápido que las CPU. Para admitir mejor la inteligencia artificial y las aplicaciones de aprendizaje automático, Azure IoT Edge para Linux en Windows (EFLOW) puede exponer una GPU al módulo de Linux de la máquina virtual.

Azure IoT Edge para Linux en Windows admite varias tecnologías de paso a través de GPU, como las siguientes:

  • Asignación directa de dispositivos (DDA): los núcleos de GPU se asignan a la máquina virtual Linux o al host.

  • Paravirtualización de GPU (GPU-PV): la GPU se comparte entre la máquina virtual Linux y el host.

Debe seleccionar el método de acceso directo adecuado durante la implementación para que coincida con las funcionalidades admitidas del hardware de GPU del dispositivo.

Importante

Estas características pueden incluir componentes desarrollados y propiedad de NVIDIA Corporation o sus emisores de licencias. El uso de los componentes se rige por el contrato de licencia para el usuario final de NVIDIA que se encuentra en el sitio web de NVIDIA.

Al usar las características de aceleración de GPU, acepta y está de acuerdo con los términos del contrato de licencia del usuario final de NVIDIA.

Requisitos previos

Las características de aceleración de GPU de Azure IoT Edge para Linux en Windows admiten actualmente un conjunto selecto de hardware de GPU. Además, el uso de esta característica puede requerir versiones específicas de Windows.

A continuación se enumeran las GPU admitidas y las versiones de Windows necesarias:

GPU admitidas Tipo de tránsito de GPU Versiones compatibles de Windows
NVIDIA T4, A2 DDA Windows Server 2019
Windows Server 2022
Windows 10/11 (Pro, Enterprise, IoT Enterprise)
NVIDIA GeForce, Quadro, RTX GPU-PV Windows 10/11 (Pro, Enterprise, IoT Enterprise)
Intel iGPU GPU-PV Windows 10/11 (Pro, Enterprise, IoT Enterprise)

Importante

La compatibilidad con GPU-PV puede limitarse a determinadas generaciones de procesadores o arquitecturas de GPU según lo determine el proveedor de GPU. Para obtener más información, consulte la documentación del controlador iGPU de Intel o CUDA de NVIDIA para WSL.

Windows Server 2019: los usuarios deben usar la compilación mínima 17763 con todas las actualizaciones acumulativas actuales instaladas.

Los usuarios de Windows 10 deben usar la actualización de noviembre de 2021 la compilación 19044.1620 o posterior. Después de la instalación, puede comprobar el número de versión si ejecuta winver en el símbolo del sistema.

El paso directo de GPU no se admite con la virtualización anidada, como la ejecución de EFLOW en una máquina virtual Windows.

Configuración e instalación del sistema

Las secciones siguientes contienen información de configuración e instalación, según la GPU.

GPU NVIDIA T4/A2

Para las GPU T4/A2, Microsoft recomienda instalar un controlador de mitigación de dispositivos del proveedor de GPU. Aunque es opcional, la instalación de un controlador de mitigación puede mejorar la seguridad de la implementación. Para obtener más información, vea Implementación de dispositivos gráficos mediante la asignación directa de dispositivos.

Advertencia

La habilitación del acceso directo de dispositivos de hardware puede aumentar los riesgos de seguridad. Microsoft recomienda usar un controlador de mitigación de dispositivos del proveedor de GPU, si procede. Para obtener más información, vea Implementación de dispositivos gráficos mediante la asignación discreta de dispositivos.

GPUs NVIDIA GeForce/Quadro/RTX

Para las GPU GeForce/Quadro/RTX, descargue e instale el controlador habilitado para NVIDIA CUDA para Subsistema de Windows para Linux (WSL) a fin de usarlo con los flujos de trabajo de ML CUDA existentes. Desarrollado originalmente para WSL, los controladores CUDA para WSL también se usan para Azure IoT Edge para Linux en Windows.

Los usuarios de Windows 10 también deben instalar WSL porque algunas de las bibliotecas se comparten entre WSL y Azure IoT Edge para Linux en Windows.

Intel iGPU

En el caso de las Intel iGP, descargue e instale el controlador de gráficos de Intel con compatibilidad con GPU de WSL.

Los usuarios de Windows 10 también deben instalar WSL porque algunas de las bibliotecas se comparten entre WSL y Azure IoT Edge para Linux en Windows.

Habilitación de la aceleración de GPU en la implementación de Linux en Windows de Azure IoT Edge

Una vez completada la configuración del sistema, está listo para crear la implementación de Azure IoT Edge para Linux en Windows. Durante este proceso, debe habilitar GPU como parte de la implementación de EFLOW.

Por ejemplo, los siguientes comandos crean una máquina virtual habilitada para GPU con una gpu NVIDIA A2 o una tarjeta gráfica 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"

Para buscar el nombre de la GPU, puede ejecutar el siguiente comando o buscar Adaptadores de pantalla en Administrador de dispositivos.

(Get-WmiObject win32_VideoController).caption

Una vez se ha completado la instalación, está listo para implementar y ejecutar módulos de Linux con aceleración de GPU por medio de Azure IoT Edge para Linux en Windows.

Configuración de la aceleración de GPU en una implementación existente de Azure IoT Edge Linux en Windows

La asignación de la GPU en el momento de la implementación dará lugar a la experiencia más sencilla. Sin embargo, para habilitar o deshabilitar la GPU después de la implementación, use el comando "set-eflowvm". Al usar "set-eflowvm", se usará el parámetro predeterminado para cualquier argumento no especificado. Por ejemplo,

#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

Pasos siguientes

Introducción a ejemplos

Visite nuestra página de ejemplos de EFLOW para detectar varios ejemplos de GPU que puede probar y usar. Estos ejemplos muestran escenarios comunes de fabricación y venta al por menor, como la detección de defectos, la seguridad de los trabajadores y la administración del inventario. Los ejemplos de código abierto pueden servir como plantilla de solución para crear su propia aplicación de aprendizaje automático basada en visión.

Más información de nuestros asociados

Varios proveedores de GPU han proporcionado guías de usuario para obtener la mayor parte de su hardware y software con EFLOW.

Nota:

En esta guía no se tratan las GPU basadas en DDA, como NVIDIA T4 o A2.

Profundizar en la tecnología

Para obtener más información sobre las tecnologías de acceso directo de GPU, visite la documentación de DDA y la entrada de blog de GPU-PV.