Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo della pianificazione basata sulla topologia in Amazon SageMaker HyperPod
L'efficienza del trasferimento dei dati è un fattore critico nei carichi di lavoro di calcolo ad alte prestazioni (HPC) e apprendimento automatico. Quando lo utilizzi UltraServers con Amazon SageMaker HyperPod, applica SageMaker HyperPod automaticamente le etichette della topologia alle tue risorse. La pianificazione basata sulla topologia aiuta ad allocare le risorse per ridurre al minimo i costi generali di trasferimento dei dati considerando sia la topologia dell'istanza (come le risorse sono connesse all'interno di un'istanza) che la topologia di rete (come le istanze sono collegate tra loro). Per ulteriori informazioni sulla topologia delle istanze, consulta la sezione Topologia delle EC2 istanze Amazon.
La pianificazione basata sulla topologia funziona con entrambi i cluster su Slurm e Amazon EKS. Per informazioni generali su come funziona la topologia con Slurm, consulta la guida alla topologia nella documentazione di Slurm.
In Amazon SageMaker HyperPod, le spese generali di trasferimento dei dati provengono in genere da tre fonti principali:
-
GPU-to-GPU trasferimento dati: tecnologie moderne come gli NVLink NVLink switch consentono il trasferimento di dati ad alta velocità da un paese all'altro GPUs senza coinvolgere altre risorse di elaborazione. Si tratta di una soluzione estremamente efficiente, ma in genere limitata a una singola istanza.
-
GPU-to-CPU trasferimento dati: i sistemi NUMA (Non-Uniform Memory Access) dispongono di più bus di sistema su un'unica scheda madre. In un'architettura tipica EC2 come p5.48xlarge, ci sono due diversi bus di sistema, ciascuno con una CPU e 4. GPUs Per prestazioni ottimali, i processi che caricano o leggono i dati to/from GPUs devono essere eseguiti su una CPU collegata allo stesso bus di sistema della GPU.
-
Comunicazioni di rete tra istanze: le istanze trasferiscono i dati attraverso una catena di switch di rete. Il percorso più breve corrisponde in genere alla latenza più bassa.
UltraServer architettura
SageMaker HyperPod supporta l' UltraServer architettura con istanze p6e-gb200.36xlarge. An UltraServer contiene fino a 18 istanze p6e-gb200.36xlarge, di cui 4 per ogni istanza. GPUs Tutti i nodi sono interconnessi tramite NVLink switch, che consentono il trasferimento di dati GPUs tra due senza utilizzare interfacce di rete. GPUs
Questa architettura offre un notevole incremento delle prestazioni rispetto alle singole istanze. Per sfruttare questa architettura in modo efficace, è necessario inviare i lavori ai nodi di calcolo da un unico nodo. UltraServer
Etichetta topologica EKS
In base alla topologia dell' EC2 istanza, etichetta HyperPod automaticamente i nodi con le seguenti etichette:
-
topology.kubernetes.io/region: la zona in cui risiede il nodo. Regione AWS
-
topology.kubernetes.io/zone: la zona di disponibilità in cui risiede il nodo.
-
network-node-layertopology.k8s.aws/: descrive il set di nodi di rete di un'istanza. NetworkNodes In ogni set di nodi di rete, i nodi di rete sono elencati in ordine gerarchico dall'alto verso il basso. Il nodo di rete connesso all'istanza è l'ultimo nodo di rete nell'elenco. Esistono fino a quattro livelli di nodi di rete e ogni nodo è contrassegnato da un'etichetta. I livelli disponibili sono
topology.k8s.aws/network-node-layer-1
topology.k8s.aws/network-node-layer-2
,topology.k8s.aws/network-node-layer-3
. -
topology.k8s.aws/ultraserver-id - Un identificatore utilizzato per etichettare ciascuna delle istanze appartenenti allo stesso dominio in un Ultraserver. NVLink Per ulteriori informazioni SageMaker HyperPod sull'utilizzo UltraServers con, Utilizzo UltraServers in Amazon SageMaker HyperPod consulta.
Utilizzando queste etichette, è possibile utilizzare la pianificazione basata sulla topologia nella governance delle HyperPod attività per applicare etichette e annotazioni topologiche per ottimizzare l'efficienza della formazione dei carichi di lavoro. Per ulteriori informazioni, consulta Utilizzo della pianificazione basata sulla topologia nella governance delle attività di Amazon SageMaker HyperPod .
Plugin di topologia di rete Slurm
Slurm fornisce plugin integrati per la conoscenza della topologia di rete. UltraServer l'architettura in SageMaker HyperPod supporta il plugin a blocchi.
Utilizzo del topology/block plugin
NVIDIA ha sviluppato un topology/block plug-in che fornisce una pianificazione gerarchica su blocchi di nodi con le seguenti caratteristiche:
Un blocco è un intervallo consecutivo di nodi
I blocchi non possono sovrapporsi
Tutti i nodi di un blocco vengono assegnati a un job prima che venga utilizzato il blocco successivo
La dimensione del blocco di pianificazione è la dimensione del blocco più piccola configurata
Ogni dimensione di livello di blocco superiore corrisponde a una potenza pari a due rispetto a quella precedente
Questo plugin alloca i nodi in base alla topologia di rete definita.
Configurazione
Per configurare una pianificazione basata sulla topologia con il plugin, topology/block
-
SageMaker HyperPod configura automaticamente il plugin. topology/block Se vuoi configurare il plugin, specifica quanto segue nel file topology.conf nella tua directory di configurazione Slurm:
BlockName=us1 Nodes=ultraserver1-[0-17] BlockName=us2 Nodes=ultraserver2-[0-17] BlockSizes=18
-
Assicurati
slurm.conf
che i tuoi includano:TopologyPlugin=topology/block
Utilizzo
Quando invii lavori, puoi utilizzare i seguenti argomenti aggiuntivi con srun
i comandi sbatch
e:
--segment=N
: Specificate il numero di nodi da raggruppare. La dimensione del segmento deve essere inferiore o uguale alla dimensione del blocco di pianificazione.--exclusive=topo
: Richiedi che nessun altro lavoro venga inserito nello stesso blocco. Ciò è utile per il benchmarking e le applicazioni sensibili alle prestazioni.
Di seguito sono riportati alcuni esempi di scenari da prendere in considerazione quando si pensa all'allocazione dei blocchi.
Alloca un intero blocco di nodi su un sistema vuoto
sbatch -N18
Alloca due blocchi di nodi su un sistema vuoto
sbatch -N36
Alloca 18 nodi su un blocco+6 nodi su un altro blocco
sbatch -N24
Alloca 12 nodi su un blocco e 12 nodi su un altro blocco
sbatch -N24 —segment=12
Con —exclusive=topo, il lavoro deve essere inserito in blocco senza altri lavori
sbatch -N12 —exclusive=topo
Le migliori pratiche UltraServer per la topologia
Per prestazioni ottimali con UltraServer un'architettura in SageMaker HyperPod:
-
Imposta le dimensioni dei blocchi appropriate: configura
BlockSizes=18
(o 17 se un nodo è libero) in modo che corrispondano all' UltraServer architettura. -
Usa i segmenti per una maggiore disponibilità: utilizza
--segment=16
o--segment=9
consrun
esbatch
i comandi per migliorare la flessibilità della pianificazione dei lavori.--segment=8
-
Considera le dimensioni del lavoro e le dimensioni del segmento:
Se
BlockSizes=18
, i lavori con un massimo di 18 istanze verranno sempre eseguiti su una singola UltraServer istanza.Se
BlockSizes=16
, i lavori con meno di 16 istanze verranno sempre eseguiti su una singola istanza UltraServer, mentre i lavori con 18 istanze possono essere eseguiti su una o due istanze. UltraServers
Quando pensi alla segmentazione, considera quanto segue
Con
--segment=1
, ogni istanza può essere eseguita su un'istanza separata. UltraServerCon
-N 18 --segment 9
, 9 nodi verranno posizionati su uno UltraServer e altri 9 nodi possono essere posizionati sullo stesso o su un altro UltraServer.Con
-N 24 --segment 8
, il processo può essere eseguito su 2 o 3 UltraServers, con ogni 8 nodi posizionati insieme sullo stesso server.
Limitazioni nella pianificazione SageMaker HyperPod basata sulla topologia
Il topology/block
plugin presenta delle limitazioni con i cluster eterogenei (cluster con diversi tipi di istanze):
Solo i nodi elencati in blocchi sono programmabili da Slurm
Ogni blocco deve avere almeno nodi
BlockSizes[0]
Per i cluster eterogenei, considera queste alternative:
Non utilizzate il plugin a blocchi con cluster eterogenei. Invece, isolate i UltraServer nodi in una partizione diversa.
Crea un cluster separato UltraServers solo nello stesso VPC e usa la configurazione multicluster di Slurm.