Che cos'è NVIDIA® MIG
Nell'informatica moderna, le GPU svolgono un ruolo cruciale in diversi campi, dalla medicina alla produzione cinematografica. Le GPU sono in grado di ridurre in modo significativo i tempi di calcolo, spesso di decine o centinaia di volte. Hanno anche caratteristiche uniche da considerare. Per gli scenari a carico singolo, senza la necessità di condividere una GPU tra gli utenti, è sufficiente qualsiasi GPU.
Molte applicazioni supportano l'elaborazione in parallelo, distribuendo il carico di lavoro su più schede fisiche. Tuttavia, i problemi sorgono quando c'è una sola GPU potente in un server o quando più utenti devono eseguire calcoli ad alta intensità di GPU in modo esclusivo, bloccando potenzialmente gli altri fino al completamento delle loro attività. La tecnologia MIG (Multi-Instance GPU) di NVIDIA® risolve questo problema. Disponibile su modelli specifici di GPU come A30, A100 (PCIE/SXM4), H100 (PCIE/SXM5/GH200) e H200 (SXM5), MIG consente la divisione logica di una singola scheda in diverse istanze accessibili in modo indipendente.
Queste istanze della GPU sono isolate a livello hardware, impedendo ai carichi di lavoro di influenzare le prestazioni o il consumo di VRAM degli altri. A ogni istanza viene assegnata una quantità fissa di memoria video. Se un processo tenta di superare questa allocazione, l'OOM-killer si attiva, terminando il processo in questione.
Il numero massimo possibile di istanze è 7. Questo può sembrare strano, perché sarebbe più logico dividere in un numero pari di parti. La spiegazione è semplice: anche l'ottava parte viene allocata, ma le sue risorse di calcolo vengono utilizzate per controllare la divisione. Pertanto, non è più disponibile per l'uso normale. Anche la VRAM è divisa al massimo in 8 parti ed è distribuita equamente tra le 7 istanze della GPU. Ogni istanza riceve anche una porzione di altre risorse, come le unità di decodifica hardware.
Questa caratteristica consente la parallelizzazione del carico di lavoro anche con una sola scheda. A livello di sistema operativo, le istanze delle GPU appaiono come schede fisiche diverse, consentendo all'applicazione di accedere a ciascuna di esse separatamente e di garantire l'elaborazione in parallelo. In questo modo si ottiene un utilizzo ottimale delle risorse della GPU. I cloud provider apprezzano molto questa caratteristica, poiché la capacità di gestire in modo flessibile le risorse è fondamentale, soprattutto negli ambienti containerizzati.
Caratteristiche di MIG
Prima di lavorare con MIG, assicurarsi che il server abbia installato i driver GPU necessari e che non vi siano attività di calcolo attive sulla scheda. L'abilitazione di MIG è una richiesta "pesante" all'API del driver, che causa la cancellazione completa della memoria video e il riavvio della GPU. Attualmente funziona solo in Linux e l'utente che esegue tale richiesta deve avere i diritti di superutente.
Quando si lavora con MIG, ci sono diverse considerazioni importanti da tenere a mente. Innanzitutto, MIG è stato progettato solo per attività di calcolo e non supporta applicazioni grafiche. Se è necessario eseguire applicazioni grafiche, è necessario disabilitare MIG.
La funzionalità MIG e il passthrough dell'istanza della GPU all'interno delle macchine virtuali sono supportati solo su sistemi operativi basati su Linux. Non è possibile utilizzare MIG con Microsoft Hyper-V o VMware ESXi. In questi casi, si consiglia di disabilitare MIG ed eseguire invece il passthrough completo della GPU.
Vale la pena notare che le istanze della GPU non hanno connettività P2P, anche quando sono collocate nello stesso container. Questa limitazione, causata dai meccanismi di isolamento interni, può porre problemi significativi alle infrastrutture costruite con l'orchestratore Kubernetes. Tuttavia, le soluzioni software di terze parti possono aiutare a superare questo problema.
MIG è più adatto ai server con GPU dello stesso modello. Gli utenti di LeaderGPU non devono preoccuparsi di questo, poiché tutte le configurazioni disponibili sono state progettate tenendo conto della compatibilità con MIG. Per abilitare MIG, è necessario eseguire comandi specifici. Se si utilizzano i servizi NVIDIA® System Management e Data Center GPU Manager, assicurarsi di arrestarli prima:
sudo systemctl stop nvsm dcgm
Dopo essersi assicurati che non vi siano lavori attivi sulla GPU, procedere con il cambio di modalità. Ad esempio, il comando seguente abilita MIG su GPU ID 0:
sudo nvidia-smi -i 0 -mig 1
Ripetere questo comando per ogni GPU che si desidera dividere in istanze. Successivamente, esaminiamo i profili disponibili per questa divisione:
sudo nvidia-smi mig -lgip
Selezionare i profili desiderati e prendere nota dei loro ID. Supponiamo di avere una GPU NVIDIA® A100. Divideremo la scheda in quattro istanze GPU: la prima avrà tre istanze Compute e 20 GB di memoria video, mentre le altre tre istanze GPU avranno un'istanza Compute e 5 GB di memoria video.
Si noti che il sistema applica i profili in modo sequenziale. Per evitare potenziali errori, specificare sempre per primo il profilo con il maggior numero di istanze di calcolo e di memoria:
sudo nvidia-smi mig -cgi 9,19,19,19 -C
Successfully created GPU instance ID 2 on GPU 0 using profile MIG 3g.20gb (ID 9) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 2 using profile MIG 3g.20gb (ID 2) Successfully created GPU instance ID 7 on GPU 0 using profile MIG 1g.5gb (ID 19) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 7 using profile MIG 1g.5gb (ID 0) Successfully created GPU instance ID 8 on GPU 0 using profile MIG 1g.5gb (ID 19) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 8 using profile MIG 1g.5gb (ID 0) Successfully created GPU instance ID 9 on GPU 0 using profile MIG 1g.5gb (ID 19) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 9 using profile MIG 1g.5gb (ID 0)
In caso contrario, si potrebbe verificare un errore:
Failed to create GPU instances: Insufficient Resources
Dopo aver applicato il profilo, controllare le istanze GPU disponibili:
sudo nvidia-smi mig -lgi
+-------------------------------------------------------+ | GPU instances: | | GPU Name Profile Instance Placement | | ID ID Start:Size | |=======================================================| | 0 MIG 1g.5gb 19 7 0:1 | +-------------------------------------------------------+ | 0 MIG 1g.5gb 19 8 1:1 | +-------------------------------------------------------+ | 0 MIG 1g.5gb 19 9 2:1 | +-------------------------------------------------------+ | 0 MIG 3g.20gb 9 2 4:4 | +-------------------------------------------------------+
È ora possibile ripristinare il funzionamento di NVSM e DCGM:
sudo systemctl start nvsm dcgm
Gestione alternativa
Il metodo di gestione standard che utilizza l'utilità nvidia-smi presenta diversi svantaggi. Innanzitutto, divide le risorse solo in un numero fisso di istanze. In secondo luogo, la riconfigurazione richiede lo scarico di tutte le attività di calcolo dalla memoria e l'arresto delle applicazioni. Questo approccio non è adatto al cloud computing, in quanto limita la scalabilità automatica. Per utilizzare appieno MIG, è necessario un software aggiuntivo come Run:ai.
Questa piattaforma offre una gestione più flessibile dell'utilizzo delle GPU, integrando MIG con la propria tecnologia di frazionamento. Garantisce che ogni applicazione in esecuzione riceva la sua quota di potenza di calcolo. Attraverso un'applicazione di monitoraggio specializzata, la piattaforma assegna risorse di calcolo uguali a ogni applicazione e ridistribuisce le risorse inutilizzate tra le altre applicazioni attive.
Run:ai garantisce anche l'esecuzione parallela dei carichi di lavoro, massimizzando l'utilizzo delle risorse. Poiché la divisione è basata sul software, viene prestata particolare attenzione alla gestione della VRAM per evitare collisioni.
Oltre alla gestione dinamica, la piattaforma consente di riservare risorse di calcolo specifiche per particolari applicazioni. Questo elimina la necessità di scaricare tutte le altre applicazioni, poiché il partizionamento avviene al volo. La piattaforma garantisce che questo processo non interrompa le applicazioni GPU in esecuzione.
Vedi anche:
Aggiornato: 28.03.2025
Pubblicato: 04.10.2024