Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
L'accelerazione GPU per AKS Edge Essentials è attualmente in ANTEPRIMA. Consultare le Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per le condizioni legali applicabili alle funzionalità di Azure in versione beta, in anteprima o non ancora rilasciate nella disponibilità al pubblico.
Le GPU sono una scelta comune per i calcoli di intelligenza artificiale, perché offrono funzionalità di elaborazione parallele e spesso possono eseguire inferenze basate su visione più velocemente rispetto alle CPU. Per supportare meglio l'intelligenza artificiale e le applicazioni di Machine Learning, AKS Edge Essentials può esporre una GPU al modulo Linux della macchina virtuale.
Azure Kubernetes Edge Essentials supporta gpu-paravirtualization (GPU-PV) come tecnologia pass-through GPU. In altre parole, la GPU viene condivisa tra la macchina virtuale Linux e l'host.
Importante
Queste funzionalità includono componenti sviluppati e di proprietà di NVIDIA Corporation o dei suoi licenze. Usando le funzionalità di accelerazione GPU, si accettano e si accettano le condizioni del contratto di licenza per l'utente finale NVIDIA.
Prerequisiti
L'accelerazione GPU di Azure Kubernetes Edge Essentials supporta attualmente un set specifico di hardware GPU. Inoltre, l'uso di questa funzionalità richiede versioni specifiche di Windows.
Le GPU supportate e le versioni di Windows necessarie sono le seguenti:
| GPU supportate | Tipo pass-through GPU | Versioni supportate di Windows |
|---|---|---|
| NVIDIA GeForce, Quadro, RTX | GPU-PV | Windows 10/11 (Pro, Enterprise, IoT Enterprise) |
Importante
Il supporto GPU-PV potrebbe essere limitato a determinate generazioni di processori o architetture GPU, come determinato dal fornitore della GPU. Per altre informazioni, vedere la documentazione di NVIDIA CUDA per WSL.
Gli utenti di Windows 10 devono usare l'aggiornamento di novembre 2021 build 19044.1620 o versione successiva. Dopo l'installazione, è possibile verificare la versione di compilazione eseguendo winver nel prompt dei comandi.
Il pass-through GPU non è supportato con la virtualizzazione annidata, ad esempio quando si esegue AKS Edge Essentials in una macchina virtuale Windows.
Configurazione e installazione di sistema
Le sezioni seguenti contengono informazioni sull'installazione e sull'installazione.
- Per le GPU NVIDIA GeForce/Quadro/RTX, scaricare e installare il driver abilitato per NVIDIA CUDA per sottosistema Windows per Linux (WSL) da usare con i flussi di lavoro CUDA ML esistenti. Originariamente sviluppato per WSL, il CUDA per i driver WSL viene usato anche per Azure Kubernetes Edge Essentials.
- Gli utenti di Windows 10 devono installare anche WSL perché alcune delle librerie sono condivise tra WSL e AKS Edge Essentials.
- Installare o aggiornare AKS Edge Essentials alla versione di maggio 2024 o successiva. Per altre informazioni, vedere Aggiornare i cluster Edge Essentials del servizio Azure Kubernetes. GPU-PV è supportato nelle distribuzioni Kubernetes k8s e k3s.
Abilitare GPU-PV nella distribuzione di Azure Kubernetes Edge Essentials
Passaggio 1: parametri di configurazione di un singolo computer
È possibile generare i parametri necessari per creare un singolo cluster di computer e aggiungere i parametri di configurazione GPU-PV necessari usando i comandi seguenti.
Questo script è incentrato solo sulla configurazione GPU-PV; è anche necessario apportare altri aggiornamenti generali necessari in base alla distribuzione di Azure Kubernetes Edge Essentials:
$jsonObj = New-AksEdgeConfig -DeploymentType SingleMachineCluster
$jsonObj.User.AcceptGpuWarning = $true
$machine = $jsonObj.Machines[0]
$machine.LinuxNode.GpuPassthrough.Name = "NVIDIA GeForce GTX 1070"
$machine.LinuxNode.GpuPassthrough.Type = "ParaVirtualization"
$machine.LinuxNode.GpuPassthrough.Count = 1
I parametri chiave per abilitare GPU-PV sono:
-
User.AcceptGpuWarning: impostare questo parametro sutrueper accettare automaticamente il messaggio di conferma quando si abilita GPU-PV in AKS Edge Essentials. -
LinuxNode.GpuPassthrough.Name: descrive il modello GPU distribuito in questo computer, con i driver appropriati installati. -
LinuxNode.GpuPassthrough.Type: descrive il tipo pass-through gpu. Attualmente è supportato soloParaVirtualization. -
LinuxNode.GpuPassthrough.Count: descrive il numero di GPU installate in questo computer.
Passaggio 2: Creare un singolo cluster di computer
È ora possibile eseguire il
New-AksEdgeDeploymentcmdlet per distribuire un cluster edge del servizio Azure Kubernetes con un singolo nodo del piano di controllo Linux. È possibile usare l'oggetto JSON generato nel passaggio 1 e passarlo come stringa:New-AksEdgeDeployment -JsonConfigString (New-AksEdgeConfig | ConvertTo-Json -Depth 4)Dopo aver completato la distribuzione, verificare che GPU-PV sia abilitato eseguendo
nvidia-smi:
Passaggio 3: Distribuire la classe di runtime Nvidia
Creare un file YAML denominato nvidia-runtimeclass.yaml con il contenuto seguente:
apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: nvidia handler: nvidiaDistribuire :
runtimeclasskubectl apply –f nvidia-runtimeclass.yaml
Passaggio 4: Installare il plug-in del dispositivo Nvidia GPU
Scaricare nvidia-deviceplugin.yaml da questo percorso GitHub.
Aggiornare il percorso delle immagini del contenitore nel file nvidia-deviceplugin.yaml al nuovo valore, come indicato di seguito:
containers: - image: registry.gitlab.com/nvidia/kubernetes/device-plugin/staging/k8s-device-plugin:6a31a868Installare Nvidia GPU DevicePlugin:
kubectl apply –f nvidia-deviceplugin.yamlVerificare che il plug-in sia in esecuzione e che la GPU NVIDIA venga rilevata controllando i log del pod deviceplugin usando i
kubectl get pods -Acomandi ekubectl logs $podname -n kube-system:
Introduzione a un carico di lavoro di esempio
Preparare un file YAML del carico di lavoro denominato gpu-workload.yaml:
apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: restartPolicy: Never containers: - name: cuda-container image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU tolerations: - key: nvidia.com/gpu operator: Exists effect: NoScheduleEseguire il carico di lavoro di esempio:
kubectl apply -f .\gpu-workload.yamlVerificare che il carico di lavoro sia stato eseguito correttamente: