Förbereda GPU:er för Azure Stack HCI (förhandsversion)

Gäller för: Azure Stack HCI, version 23H2

Den här artikeln beskriver hur du förbereder grafiska bearbetningsenheter (GPU:er) för Azure Stack HCI för beräkningsintensiva arbetsbelastningar som körs på virtuella Arc-datorer och AKS som aktiveras av Azure Arc. GPU:er används för beräkningsintensiva arbetsbelastningar som maskininlärning och djupinlärning.

Viktigt!

Den här funktionen är för närvarande i förhandsversion. Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

Ansluta GPU:er på Azure Stack HCI

Du kan koppla dina GPU:er på ett av två sätt för Azure Stack HCI:

  • Diskret enhetstilldelning (DDA) – gör att du kan dedikera en fysisk GPU till din arbetsbelastning. I en DDA-distribution körs virtualiserade arbetsbelastningar på den interna drivrutinen och har vanligtvis fullständig åtkomst till GPU:ns funktioner. DDA erbjuder den högsta nivån av appkompatibilitet och potentiella prestanda.

  • GPU-partitionering (GPU-P) – gör att du kan dela en GPU med flera arbetsbelastningar genom att dela upp GPU:n i dedikerade bråkpartitioner.

Överväg följande funktioner och stödja skillnader mellan de två alternativen för att använda dina GPU:er:

beskrivning Diskret enhetstilldelning GPU-partitionering
GPU-resursmodell Hela enheten Lika partitionerad enhet
VM-densitet Låg (en GPU till en virtuell dator) Hög (en GPU till många virtuella datorer)
Appkompatibilitet Alla GPU-funktioner som tillhandahålls av leverantören (DX 12, OpenGL, CUDA) Alla GPU-funktioner som tillhandahålls av leverantören (DX 12, OpenGL, CUDA)
GPU VRAM Upp till VRAM som stöds av GPU:n Upp till VRAM som stöds av GPU:n per partition
GPU-drivrutin i gäst GPU-leverantörsdrivrutin (NVIDIA) GPU-leverantörsdrivrutin (NVIDIA)

GPU-modeller som stöds

En fullständig lista över tillgängliga lösningar och GPU:er finns i Azure Stack HCI-lösningar och välj GPU-stöd i den vänstra menyn för alternativ.

NVIDIA stöder sina arbetsbelastningar separat med sin virtuella GPU-programvara. Mer information finns i Microsoft Azure Stack HCI – NVIDIA GPU:er som stöds och verifierade serverplattformar.

Information om AKS-arbetsbelastningar finns i GPU:er för AKS för Arc.

Följande GPU-modeller stöds med arbetsbelastningar för både DDA och GPU-P för virtuella Arc-datorer:

  • NVIDIA A2
  • NVIDIA A16

Dessa ytterligare GPU-modeller stöds med GPU-P (endast) för arbetsbelastningar för virtuella Arc-datorer:

  • NVIDIA A10
  • NVIDIA A40
  • NVIDIA L4
  • NVIDIA L40
  • NVIDIA L40S

Värdkrav

Azure Stack HCI-värden måste uppfylla följande krav:

  • Systemet måste ha stöd för en Azure Stack HCI-lösning med GPU-stöd. Information om hur du bläddrar bland alternativen finns i Azure Stack HCI-katalogen.

  • Du har åtkomst till ett Azure Stack HCI- version 23H2-kluster.

  • Du måste skapa en homogen konfiguration för GPU:er för alla servrar i klustret. En homogen konfiguration består av att installera samma märke och modell för GPU.

  • För GPU-P kontrollerar du att virtualiseringsstödet och SR-IOV är aktiverade i BIOS för varje server i klustret. Kontakta systemleverantören om du inte kan identifiera rätt inställning i DIN BIOS.

Förbereda GPU-drivrutiner på varje värd

Processen för att förbereda och installera GPU-drivrutiner för varje värdserver skiljer sig något mellan DDA och GPU-P. Följ den tillämpliga processen för din situation.

Hitta GPU:er på varje värd

Kontrollera först att det inte finns någon installerad drivrutin för varje värdserver. Om det finns en installerad värddrivrutin avinstallerar du värddrivrutinen och startar om servern.

När du har avinstallerat värddrivrutinen eller om du inte har någon installerad drivrutin kör du PowerShell som administratör med följande kommando:

Get-PnpDevice -Status Error | fl FriendlyName, InstanceId

Du bör se att GPU-enheterna visas i ett feltillstånd som 3D Video Controller visas i exempelutdata som visar GPU:ns eget namn och instans-ID:

[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

Använda DDA

Följ den här processen om du använder DDA:

1. Inaktivera och demontera GPU:er från värden

För DDA, när du avinstallerar värddrivrutinen eller har ett nytt Azure Stack HCI-klusterkonfiguration, hamnar den fysiska GPU:n i ett feltillstånd. Du måste demontera alla GPU-enheter för att fortsätta. Du kan använda Enhetshanteraren eller PowerShell för att inaktivera och demontera GPU:n med hjälp av det InstanceID som erhölls i föregående steg.

$id1 = "GPU_instance_ID"
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -InstancePath $id1 -Force

Bekräfta att GPU:erna har demonterats korrekt från värden. GPU:erna är nu i ett Unknown tillstånd:

Get-PnpDevice -Status Unknown | fl FriendlyName, InstanceId

Upprepa den här processen för varje server i Azure Stack HCI-klustret för att förbereda GPU:erna.

2. Ladda ned och installera begränsningsdrivrutinen

Programvaran kan innehålla komponenter som utvecklats och ägs av NVIDIA Corporation eller dess licensgivare. Användningen av dessa komponenter styrs av NVIDIA-slutanvändarlicensavtalet.

Se NVIDIA-dokumentationen för att ladda ned den aktuella NVIDIA-begränsningsdrivrutinen. När du har laddat ned drivrutinen expanderar du arkivet och installerar åtgärdsdrivrutinen på varje värdserver. Använd följande PowerShell-skript för att ladda ned begränsningsdrivrutinen och extrahera den:

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

När filerna för åtgärdsdrivrutiner har extraherats letar du reda på versionen för rätt modell för din GPU och installerar den. Om du till exempel installerade en NVIDIA A2-åtgärdsdrivrutin kör du följande:

pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force

Bekräfta installationen av dessa drivrutiner genom att köra:

pnputil /enum-devices OR pnputil /scan-devices

Du bör kunna se rätt identifierade GPU:er i Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, InstanceId

Upprepa stegen ovan för varje värd i ditt Azure Stack HCI-kluster.

Använda GPU-P

Följ den här processen om du använder GPU-P:

Ladda ned och installera värddrivrutinen

GPU-P kräver drivrutiner på värdnivå som skiljer sig från DDA. För NVIDIA GPU:er behöver du en NVIDIA vGPU-programvarugrafikdrivrutin på varje värd och på varje virtuell dator som ska använda GPU-P. Mer information finns i den senaste versionen av NVIDIA vGPU-dokumentationen och information om licensiering i användarhandboken för klientlicensiering.

När du har identifierat GPU:erna som 3D Video Controller på värdservern laddar du ned värd-vGPU-drivrutinen. Via NVIDIA GRID-licensen bör du kunna hämta rätt värddrivrutin .zip fil.

Du måste hämta och flytta följande mapp till värdservern: \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers

Gå till \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver och installera drivrutinen.

pnputil /add-driver .\nvgridswhci.inf /install /force

Bekräfta installationen av dessa drivrutiner genom att köra:

pnputil /enum-devices

Du bör kunna se rätt identifierade GPU:er i Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, InstanceId

Du kan också köra NVIDIA System Management Interface nvidia-smi för att visa GPU:er på värdservern enligt följande:

nvidia-smi

Om drivrutinen är korrekt installerad visas utdata som liknar följande exempel:

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                                                 |
+-----------------------------------------------------------------------------+

Konfigurera antal GPU-partitioner

Följ dessa steg för att konfigurera antalet GPU-partitioner i PowerShell:

Kommentar

När du använder PowerShell måste du manuellt se till att GPU-konfigurationen är homogen på alla servrar i ditt Azure Stack HCI-kluster.

  1. Anslut till den server vars GPU-partitionsantal du vill konfigurera.

  2. Get-VMHostPartitionableGpu Kör kommandot och referera till värdena Namn och ValidPartitionCounts.

  3. Kör följande kommando för att konfigurera antalet partitioner. Ersätt GPU-name med värdet Namn och partition-count med ett av de antal som stöds från värdet ValidPartitionCounts :

    Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
    

    Följande kommando konfigurerar till exempel partitionsantalet till 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
    

    Du kan köra kommandot Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount igen för att kontrollera att partitionsantalet är inställt på 4.

    Här är ett exempel på utdata:

    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
    
  4. Om du vill hålla konfigurationen homogen upprepar du konfigurationsstegen för antal partitioner på varje server i ditt Azure Stack HCI-kluster.

Gästkrav

GPU-hantering stöds för följande Arc VM-arbetsbelastningar:

Nästa steg