Preparación de GPU para Azure Local (versión preliminar)
Se aplica a: Azure Local, versión 23H2
En este artículo se describe cómo preparar unidades de procesamiento gráfico (GPU) en la instancia local de Azure para cargas de trabajo con un uso intensivo de cálculos que se ejecutan en máquinas virtuales (VM) de Arc y AKS habilitadas por Azure Arc. Las GPU se usan para cargas de trabajo que consumen muchos cálculos, como el aprendizaje automático y el aprendizaje profundo.
Importante
Esta característica actualmente está en VERSIÓN PRELIMINAR. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.
Asociación de GPU en Azure Local
Puede adjuntar las GPU de una de estas dos maneras para Azure Local:
Asignación discreta de dispositivos (DDA): permite dedicar una GPU física a la carga de trabajo. En las implementaciones de DDA, las cargas de trabajo virtualizadas se ejecutan en el controlador nativo y normalmente tienen acceso total a la funcionalidad de la GPU. DDA ofrece el mayor nivel de compatibilidad de aplicaciones y rendimiento potencial.
Creación de particiones de GPU (GPU-P): permite compartir una GPU con varias cargas de trabajo dividiendo la GPU en particiones fraccionarios dedicadas.
Tenga en cuenta la siguiente funcionalidad y admita las diferencias entre las dos opciones de uso de las GPU:
Descripción | Asignación discreta de dispositivos | Creación de particiones de GPU |
---|---|---|
Modelo de recurso de GPU | Todo el dispositivo | Dispositivo con particiones iguales |
Densidad de máquinas virtuales | Bajo (una GPU a una máquina virtual) | Alto (una GPU a varias máquinas virtuales) |
Compatibilidad de aplicaciones | Todas las funcionalidades de GPU proporcionadas por el proveedor (DX 12, OpenGL, CUDA) | Todas las funcionalidades de GPU proporcionadas por el proveedor (DX 12, OpenGL, CUDA) |
VRAM de GPU | Hasta la VRAM que admita la GPU | Hasta la VRAM compatible con la GPU por partición |
Controlador de GPU en invitado | Controlador de proveedor de GPU (NVIDIA) | Controlador de proveedor de GPU (NVIDIA) |
Modelos de GPU admitidos
Para ver la lista completa de soluciones admitidas y GPU disponibles, consulte Soluciones locales de Azure y seleccione Compatibilidad con GPU en el menú izquierdo para ver las opciones.
NVIDIA admite sus cargas de trabajo por separado con su software de GPU virtual. Para obtener más información, consulte Microsoft Azure Local: GPU nvidia compatibles y plataformas de servidor validadas.
Para las cargas de trabajo de AKS, consulte GPU para AKS for Arc.
Los siguientes modelos de GPU se admiten mediante cargas de trabajo DDA y GPU-P para máquinas virtuales arc:
- NVIDIA A2
- NVIDIA A16
Estos modelos adicionales de GPU se admiten mediante GPU-P (solo) para cargas de trabajo de máquinas virtuales arc:
- NVIDIA A10
- NVIDIA A40
- NVIDIA L4
- NVIDIA L40
- NVIDIA L40S
Requisitos del host
El host local de Azure debe cumplir los siguientes requisitos:
El sistema debe admitir una solución local de Azure con compatibilidad con GPU. Para examinar las opciones, consulte el Catálogo local de Azure.
Tiene acceso a Azure Local, versión 23H2.
Debe crear una configuración homogénea para gpu en todas las máquinas del sistema. Una configuración homogénea consiste en instalar la misma marca y modelo de GPU.
Para GPU-P, asegúrese de que la compatibilidad con la virtualización y SR-IOV están habilitadas en el BIOS de cada máquina del sistema. Póngase en contacto con el proveedor de hardware si no puede identificar la configuración correcta en el BIOS.
Preparación de controladores de GPU en cada host
El proceso para preparar e instalar controladores de GPU para cada máquina difiere un poco entre DDA y GPU-P. Siga el proceso aplicable para su situación.
Búsqueda de GPU en cada host
En primer lugar, asegúrese de que no hay ningún controlador instalado para cada máquina. Si hay instalado un controlador host, desinstale el controlador host y reinicie la máquina.
Después de desinstalar el controlador host o si no tiene ningún controlador instalado, ejecute PowerShell como administrador con el siguiente comando:
Get-PnpDevice -Status Error | fl FriendlyName, ClusterId
Debería ver que los dispositivos gpu aparecen en un estado de error como 3D Video Controller
se muestra en la salida de ejemplo que muestra el nombre descriptivo y el identificador de instancia de la GPU:
[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error
Status Class FriendlyName
------ ----- ------------
Error SD Host Controller
Error 3D Video Controller
Error 3D Video Controller
Error USB Unknown USB Device (Device Descriptor Request Failed)
[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error | f1 InstanceId
InstanceId : PCI\VEN_8086&DEV_18DB&SUBSYS_7208086REV_11\3&11583659&0&E0
InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&23AD3A43&0&0010
InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&17F8422A&0&0010
InstanceId : USB\VID_0000&PID_0002\S&E492A46&0&2
Uso de DDA
Siga este proceso si usa DDA:
1. Deshabilitar y desmontar GPU del host
Para DDA, al desinstalar el controlador host o tener una nueva configuración local de Azure, la GPU física entra en un estado de error. Debe desmontar todos los dispositivos gpu para continuar. Puede usar Administrador de dispositivos o PowerShell para deshabilitar y desmontar la GPU mediante el ClusterID
obtenido en el paso anterior.
$id1 = "GPU_instance_ID"
Disable-PnpDevice -ClusterId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -ClusterPath $id1 -Force
Confirme que las GPU se han desmontado correctamente de la máquina host. Las GPU ahora estarán en un Unknown
estado:
Get-PnpDevice -Status Unknown | fl FriendlyName, ClusterId
Repita este proceso para cada máquina del sistema para preparar las GPU.
2. Descargar e instalar el controlador de mitigación
El software puede incluir componentes desarrollados y propiedad de NVIDIA Corporation o sus licenciantes. El uso de estos componentes se rige por el contrato de licencia de usuario final de NVIDIA.
Consulte la documentación de NVIDIA para descargar el controlador de mitigación de NVIDIA aplicable. Después de descargar el controlador, expanda el archivo e instale el controlador de mitigación en cada máquina host. Use el siguiente script de PowerShell para descargar el controlador de mitigación y extraerlo:
Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver
Una vez extraídos los archivos del controlador de mitigación, busque la versión del modelo correcto de la GPU e instálelo. Por ejemplo, si va a instalar un controlador de mitigación de NVIDIA A2, ejecute lo siguiente:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force
Para confirmar la instalación de estos controladores, ejecute:
pnputil /enum-devices OR pnputil /scan-devices
Debería poder ver las GPU identificadas correctamente en Get-PnpDevice
:
Get-PnpDevice -Class Display | fl FriendlyName, ClusterId
Repita los pasos anteriores para cada host de Azure Local.
Uso de GPU-P
Siga este proceso si usa GPU-P:
Descarga e instalación del controlador host
GPU-P requiere controladores en el nivel de host que difieren de DDA. Para las GPU nvidia, necesitará un controlador de gráficos gráficos de software de NVIDIA vGPU en cada host y en cada máquina virtual que usará GPU-P. Para obtener más información, consulte la versión más reciente de la documentación de NVIDIA vGPU y detalles sobre las licencias en la Guía de usuario de licencias de cliente.
Después de identificar las GPU como 3D Video Controller
en la máquina host, descargue el controlador vGPU del host. A través de la licencia de NVIDIA GRID, debería poder obtener el archivo .zip del controlador host adecuado.
Deberá obtener y mover la siguiente carpeta a la máquina host: \vGPU_<Your_vGPU_version_GA_Azure_Stack_HCI_Host_Drivers>
Vaya a \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver e instale el controlador.
pnputil /add-driver .\nvgridswhci.inf /install /force
Para confirmar la instalación de estos controladores, ejecute:
pnputil /enum-devices
Debería poder ver las GPU identificadas correctamente en Get-PnpDevice
:
Get-PnpDevice -Class Display | fl FriendlyName, ClusterId
También puede ejecutar la interfaz nvidia-smi
de administración del sistema NVIDIA para enumerar las GPU en el equipo host de la siguiente manera:
nvidia-smi
Si el controlador está instalado correctamente, verá una salida similar a la del ejemplo siguiente:
Wed Nov 30 15:22:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.27 Driver Version: 527.27 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A2 WDDM | 00000000:65:00.0 Off | 0 |
| 0% 24C P8 5W / 60W | 15192MiB / 15356MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A2 WDDM | 00000000:66:00.0 Off | 0 |
| 0% 24C P8 5W / 60W | 15192MiB / 15356MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Configuración del recuento de particiones de GPU
Siga estos pasos para configurar el recuento de particiones de GPU en PowerShell:
Nota:
Al usar PowerShell, debe asegurarse manualmente de que la configuración de GPU es homogénea en todas las máquinas de Azure Local.
Conéctese a la máquina cuyo recuento de particiones de GPU desea configurar.
Ejecute el
Get-VMHostPartitionableGpu
comando y consulte los valores Name y ValidPartitionCounts .Ejecute el comando siguiente para configurar el número de particiones. Reemplace
GPU-name
con el valor Nombre ypartition-count
por uno de los números admitidos del valor ValidPartitionCounts:Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
Por ejemplo, el siguiente comando configura el recuento de particiones en
4
:PS C:\Users> Set-VMHostPartitionableGpu -Name "\\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}" -PartitionCount 4
Puede volver a ejecutar el comando
Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount
para comprobar que el recuento de particiones está establecido en4
.Este es una salida de ejemplo:
PS C:\Users> Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount Name : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59} ValidPartitionCounts : {16, 8, 4, 2...} PartitionCount : 4 Name : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&5906f5e&0&0010#{064092b3-625e-43bf-9eb5-dc845897dd59} ValidPartitionCounts : {16, 8, 4, 2...} PartitionCount : 4
Para mantener la configuración homogénea, repita los pasos de configuración de recuento de particiones en cada máquina del sistema.
Requisitos de invitado
La administración de GPU es compatible con las siguientes cargas de trabajo de máquina virtual de Arc:
Máquinas virtuales de segunda generación
Un sistema operativo de 64 bits compatible, tal y como se detalla en la versión más reciente de los productos compatibles con NVIDIA vGPU