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.
Servizio Azure Kubernetes (AKS) supporta pool di nodi abilitati per GPU NVIDIA per eseguire carichi di lavoro a elevato utilizzo di calcolo, tra cui training di intelligenza artificiale/Machine Learning, inferenza in tempo reale e analisi dei dati su larga scala. In genere, le GPU vengono allocate in un modello uno-a-uno, in cui un singolo pod Kubernetes usa un intero dispositivo GPU all'interno di una macchina virtuale (VM) Azure. Sebbene questo modello offra semplicità e isolamento sicuro, può causare sottoutilizzo negli scenari in cui i carichi di lavoro non consumano completamente le risorse GPU disponibili nel cluster.
Per migliorare l'utilizzo e supportare carichi di lavoro simultanei, i clienti possono integrare diverse strategie di partizionamento GPU nei pool di nodi. Questi approcci consentono a più carichi di lavoro di condividere una singola GPU fisica dividendla in unità logiche più piccole o espandendo l'accesso a livello di driver software o GPU.
In questo articolo vengono fornite informazioni sulle tre strategie di partizionamento dei nodi principali per GPU NVIDIA nel servizio Azure Kubernetes: GPU a istanza multipla (MIG),time-slicing e Multi-Process Service (MPS).
Panoramica delle strategie per il partizionamento dei nodi GPU in AKS
Le tre strategie principali disponibili negli ambienti AKS sono GPU multiistanza (MIG), time-slicing e servizio multi-processo (MPS). Ogni approccio si differenzia in termini di gestione della piattaforma del Servizio Azure Kubernetes (AKS), tipi di isolamento e casi d'uso di distribuzione.
| Strategy | Gestito o consentito su AKS | Tipo di condivisione GPU | Consigliati per |
|---|---|---|---|
| GPU a istanze multiple (MIG) | Gestito (o gestito dall'utente tramite GPU Operator) | Partizionamento dell'hardware | Carichi di lavoro di produzione |
| Suddivisione temporale (via NVIDIA GPU Operator) | Gestito dall'utente, AKS consentito | Pianificazione del software | Sperimentazione con carichi GPU variabili |
| Servizio multiprocessore (MPS, operatore GPU NVIDIA) | Gestito dall'utente, AKS consentito | Multiplexing dei processi a livello CUDA | Carichi di lavoro a bassa latenza e velocità effettiva elevata |
GPU multiistanza gestita (MIG) in AKS
GPU a istanze multipla (MIG) è una funzionalità di partizionamento basata su hardware disponibile nelle architetture GPU NVIDIA selezionate, ad esempio A100, H100 e serie H200. MIG consente di suddividere una singola GPU fisica in più istanze isolate, ognuna con core di calcolo, memoria e cache dedicati. Ciò garantisce un forte isolamento del carico di lavoro e caratteristiche di prestazioni prevedibili, rendendo MIG adatto per gli ambienti di produzione.
In AKS, MIG è una funzionalità gestita. Quando viene effettuato il provisioning di un pool di nodi abilitato per MIG, Azure configura l'hardware GPU, installa e gestisce lo stack di driver richiesto e integra le istanze MIG con Kubernetes tramite il plug-in del dispositivo NVIDIA. Ogni partizione MIG viene esposta allo scheduler di Kubernetes come una risorsa allocabile distinta, consentendo ai pod di richiedere capacità GPU in modo granulare e deterministico.
Questo approccio offre diversi vantaggi per le distribuzioni aziendali. Fornisce un isolamento di livello enterprise tramite il partizionamento a livello hardware e riduce il sovraccarico operativo affidando ad AKS la gestione del ciclo di vita, inclusi gli aggiornamenti dei driver e la configurazione. Inoltre, le istanze MIG si comportano come dispositivi GPU indipendenti dal punto di vista dello scheduler, consentendo un posizionamento prevedibile e un'allocazione delle risorse.
Tuttavia, MIG introduce anche determinati vincoli: le configurazioni di partizionamento sono statiche a livello di pool di nodi, ovvero le modifiche richiedono il reprovisioning dei nodi. La flessibilità è limitata ai profili MIG predefiniti supportati dall'hardware GPU sottostante.
Suddivisione temporale con NVIDIA GPU Operator (gestito dall'utente)
Il time-slicing è un meccanismo software di condivisione della GPU che consente a più pod Kubernetes di condividere una singola GPU alternando l'esecuzione nel tempo. Questo approccio viene implementato tramite l'operatore GPU NVIDIA, che gestisce i driver GPU, il plug-in del dispositivo Kubernetes e la configurazione del runtime del contenitore.
Il time-slicing può essere configurato nei pool di nodi di AKS, ma non è gestito dalla piattaforma. Gli operatori del cluster sono responsabili della distribuzione e della configurazione di NVIDIA GPU Operator, in genere tramite Helm, e dell'attivazione del time-slicing tramite le impostazioni del plug-in del dispositivo. Una volta configurati, più pod possono richiedere l'accesso alla stessa risorsa GPU e i relativi carichi di lavoro vengono pianificati in modo condiviso nel tempo.
Il time-slicing offre flessibilità e compatibilità generale, in quanto non dipende da funzionalità hardware GPU specifiche e può essere usato con la maggior parte delle GPU NVIDIA supportate da CUDA. È utile per lo sviluppo, i test o i carichi di lavoro con modelli di utilizzo della GPU intermittenti o variabili.
Nonostante la sua flessibilità, il time-slicing non fornisce isolamento a livello hardware. Tutti i carichi di lavoro condividono la stessa memoria GPU e le stesse risorse di calcolo, con conseguente contesa e prestazioni imprevedibili. Poiché la configurazione e la gestione del ciclo di vita sono guidate dall'utente, gli operatori devono gestire anche gli aggiornamenti, la compatibilità e l'ottimizzazione dei driver. Di conseguenza, il time-slicing in genere non è consigliato per i workload di produzione che richiedono rigorosi requisiti di livello di servizio (SLA).
Servizio multiprocessore (MPS) con operatore GPU NVIDIA (gestito dall'utente)
NVIDIA Multi-Process Service (MPS) è una funzionalità a livello di driver che consente l'esecuzione simultanea di più applicazioni CUDA su una singola GPU. A differenza del time-slicing, che alterna l'esecuzione tra carichi di lavoro, MPS consente l'esecuzione simultanea di kernel di processi diversi, migliorando l'utilizzo complessivo della GPU e riducendo la latenza per i carichi di lavoro compatibili.
In AKS, è possibile configurare MPS tramite la distribuzione gestita dall'utente di NVIDIA GPU Operator. Gli operatori devono configurare l'ambiente driver GPU per abilitare MPS e gestire il ciclo di vita del daemon di controlli MPS. I carichi di lavoro che si connettono allo stesso server MPS possono condividere la GPU e trarre vantaggio dall'esecuzione simultanea del kernel.
MPS è utile per scenari con velocità effettiva elevata e bassa latenza, ad esempio processi batch o carichi di lavoro paralleli strettamente associati. Offre un controllo granulare sulla condivisione GPU e può migliorare significativamente l'utilizzo quando i carichi di lavoro sono progettati per sfruttare i vantaggi dell'esecuzione simultanea.
Tuttavia, MPS introduce una maggiore complessità operativa. La configurazione è manuale e la risoluzione dei problemi può essere più coinvolta rispetto ad altri approcci. Analogamente al time-slicing, MPS non offre un isolamento sicuro, perché tutti i processi condividono la memoria GPU e le risorse di calcolo. Di conseguenza, MPS in genere non è consigliato per i carichi di lavoro di produzione che richiedono contratti di servizio rigorosi.
Come scegliere una strategia di partizionamento GPU
La scelta della strategia di partizionamento GPU appropriata nel servizio Azure Kubernetes dipende dai requisiti del carico di lavoro, dalle preferenze operative e dalle aspettative sulle prestazioni. MIG è l'approccio consigliato per gli ambienti di produzione che richiedono un forte isolamento e prestazioni prevedibili. Come funzionalità di un pool di nodi di AKS, MIG semplifica le operazioni e riduce il sovraccarico amministrativo.
Il time-slicing è utile per ambienti non di produzione o carichi di lavoro con una domanda DI GPU fluttuante, in cui l'ottimizzazione dell'utilizzo è più importante della coerenza. Offre una soluzione indipendente dall'hardware, ma richiede un'attenta gestione e non garantisce l'isolamento delle prestazioni.
MPS è ideale per carichi di lavoro specializzati che traggono vantaggio dall'esecuzione simultanea della GPU e dalla bassa latenza. Offre la massima efficienza di utilizzo potenziale, ma presenta una maggiore complessità e un isolamento minimo, rendendolo più appropriato per gli utenti avanzati con applicazioni con riconoscimento CUDA.
In pratica, le organizzazioni possono adottare strategie diverse in ambienti diversi, usando MIG per i cluster di produzione sfruttando il time-slicing o MPS in scenari di sviluppo o sperimentali. Un'attenta valutazione delle caratteristiche del carico di lavoro GPU e dei vincoli operativi è essenziale per selezionare l'approccio di partizionamento a lungo termine più efficace.
Contenuti correlati
- Iniziare a usare i pool di nodi GPU multiistanza in AKS.
- Informazioni sulle procedure consigliate per la gestione del ciclo di vita dei nodi abilitata per GPU.
- Ottimizzare l'utilizzo e le prestazioni dei nodi GPU configurando la compressione del contenitore dei nodi nel cluster.