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à.
Nozioni di base su EFA e NCCL per i carichi di lavoro ML su Amazon EC2
NVIDIA Collective Communications Library (NCCL) è una libreria di routine di comunicazione collettive standard per più GPU su un singolo nodo o su più nodi. Puoi utilizzare NCCL insieme a EFA, Libfabric e MPI per supportare vari carichi di lavoro di machine learning. Per ulteriori informazioni, consulta il sito Web NCCL
Requisiti
-
I tipi di istanza supportati includono i tipi di istanze della serie EFA-supported P e della serie G. Per ulteriori informazioni, consulta Istanze a calcolo accelerato Amazon EC2.
-
AMI di base supportate: Amazon Linux 2023, Ubuntu 26.04, Ubuntu 24.04, Ubuntu 22.04, Debian 12 e RHEL 10.
-
L'EFA supporta solo NCCL 2.4.2 e versioni successive.
Per ulteriori informazioni sull'esecuzione di carichi di lavoro di machine learning con EFA e NCCL utilizzando un AWS Deep Learning AMIs, consulta Using EFA on the DLAMI nella Developer Guide. AWS Deep Learning AMIs
Fasi
Fase 1: Preparare un gruppo di sicurezza EFA-enabled
Un EFA richiede un gruppo di sicurezza in cui sia consentito tutto il traffico in entrata e in uscita dal gruppo stesso. La procedura seguente crea un gruppo di sicurezza che consente tutto il traffico in entrata e in uscita da e verso se stesso e che consente il traffico SSH in entrata da qualsiasi indirizzo IPv4 per la connettività SSH.
Importante
-
Questo gruppo di sicurezza è destinato esclusivamente a scopi di test. Per i tuoi ambienti di produzione, consigliamo di creare una regola SSH in entrata che consenta il traffico solo dall'indirizzo IP da cui ti connetti, ad esempio l'indirizzo IP del tuo computer o un intervallo di indirizzi IP nella tua rete locale.
-
Le regole autoreferenziali in entrata e in uscita (che consentono tutto il traffico da e verso il gruppo di sicurezza stesso) sono obbligatorie per il funzionamento dell'EFA. Senza queste regole, il traffico EFA tra le istanze verrà bloccato e la comunicazione NCCL fallirà.
Per altri scenari, consulta Regole del gruppo di sicurezza per diversi casi d'uso.
Per creare un gruppo di sicurezza EFA-enabled
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel riquadro di navigazione, scegliere Security Groups (Gruppi di sicurezza) e quindi Create Security Group (Crea gruppo di sicurezza).
-
Nella finestra Create Security Group (Crea gruppo di sicurezza) effettuare le operazioni seguenti:
-
In Nome gruppo di sicurezza, immettere un nome descrittivo per il gruppo di sicurezza, ad esempio
EFA-enabled security group. -
(Facoltativo) In Description (Descrizione), inserire una breve descrizione del gruppo di sicurezza.
-
Per VPC, seleziona il VPC in cui intendi avviare le tue EFA-enabled istanze.
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
-
-
Seleziona il gruppo di sicurezza creato e nella scheda Details (Dettagli) copia il valore Security group ID (ID gruppo di sicurezza).
-
Dopo aver selezionato il gruppo di sicurezza, scegli Actions (Operazioni), Edit inbound rules (Modifica le regole in entrata) ed esegui le operazioni di seguito:
-
Scegliere Add rule (Aggiungi regola).
-
In Type (Tipo), selezionare All traffic (Tutto il traffico).
-
Per Source type (Tipo di origine), scegli Custom (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.
-
Scegli Aggiungi regola.
-
Per Type (Tipo) scegli SSH.
-
Per Source (origine), scegli Anywhere-IPv4.
-
Scegliere Salva regole.
-
-
Dopo aver selezionato il gruppo di sicurezza, scegli Actions (Operazioni), Edit outbound rules (Modifica le regole in uscita) ed esegui le operazioni di seguito:
-
Scegliere Add rule (Aggiungi regola).
-
In Type (Tipo), selezionare All traffic (Tutto il traffico).
-
Per Destination type (Tipo di destinazione), scegli Custom (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.
-
Scegliere Salva regole.
-
Fase 2: avviare un'istanza temporanea
Avvia un'istanza temporanea da utilizzare per installare e configurare i componenti software EFA. Utilizzi questa istanza per creare un' EFA-enabled AMI da cui avviare le tue istanze. EFA-enabled
Per avviare un'istanza temporanea
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione, scegli Instances (Istanze) e quindi scegli Launch instances (Avvia istanze) per aprire la nuova procedura guidata di avvio dell'istanza.
-
(Opzionale) Nella sezione Name and tags (Nome e tag), fornisci un nome per l'istanza, ad esempio
EFA-instance. Il nome viene assegnato all'istanza come tag di risorsa (Name=).EFA-instance -
Nella sezione Immagini di applicazioni e sistema operativo, seleziona un’AMI per uno dei sistemi operativi supportati.
-
Nella sezione Tipo di istanza, seleziona un tipo di istanza supportato.
-
Nella sezione Key pair (Coppia di chiavi), seleziona la coppia di chiavi da utilizzare per l'istanza.
-
Nella sezione Network settings (Impostazioni di rete), scegli Edit (Modifica) e quindi esegui le operazioni qui descritte:
-
Per Subnet (Sottorete) seleziona la subnet in cui avviare l'istanza.
Importante
È necessario selezionare una sottorete. Se non selezioni una sottorete, non puoi abilitare l'istanza per l'EFA.
-
Per Firewall (security groups) (Firewall [gruppi di sicurezza]), scegli Select existing security group (Seleziona gruppo di sicurezza esistente) e quindi seleziona il gruppo di sicurezza creato nella fase precedente.
-
Espandi la sezione Configurazione avanzata.
Come Interfaccia di rete 1, seleziona Indice della scheda di rete = 0, Indice dispositivo = 0 e Tipo di interfaccia = EFA con ENA.
(Facoltativo) Se utilizzi un tipo di istanza con più schede, per ogni interfaccia di rete aggiuntiva richiesta, scegli Aggiungi interfaccia di rete, per Indice scheda di rete seleziona il successivo indice non utilizzato, quindi seleziona Indice dispositivo = 1 e Tipo di interfaccia = EFA con ENA o. EFA-only
-
-
Nella sezione Storage (Archiviazione), configura i volumi secondo necessità.
Nota
È necessario fornire ulteriori 10-20 GiB di spazio di archiviazione per NVIDIA CUDA Toolkit. Se non fornisci spazio di archiviazione sufficiente, riceverai un
insufficient disk spacemessaggio di errore quando tenti di installare i driver NVIDIA e il toolkit CUDA. -
Nel pannello Summary (Riepilogo) a destra, scegli Launch instance (Avvia istanza).
Passaggio 3: installa i driver GPU NVIDIA, NVIDIA CUDA Toolkit e cuDNN
Fase 4: installazione del GDRCopy
Installa GDRCopy per migliorare le prestazioni di Libfabric. Per ulteriori informazioni su GDRCopy, consulta il repository GDRCopy
Fase 5: installazione del software EFA
Installa il EFA-enabled kernel, i driver EFA, Libfabric, il plugin aws-ofi-nccl e lo stack Open MPI necessari per supportare l'EFA sulla tua istanza.
Per installare il software EFA
-
Connettersi all'istanza avviata. Per ulteriori informazioni, consulta Connessione a un’istanza Linux tramite SSH.
-
Scarica i file di installazione del software. I file di installazione del software sono costituiti da un file tarball () compresso.
.tar.gzPer scaricare l'ultima versione stabile, utilizzare il comando seguente.$curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.50.0.tar.gzÈ inoltre possibile ottenere l'ultima versione sostituendo il numero della versione con
latestnel comando qui sopra. (Opzionale) Verifica l'autenticità e l'integrità del file tarball EFA (
.tar.gz).È consigliabile eseguire questa operazione per verificare l'identità dell'autore del software e che il file non sia stato alterato o danneggiato dopo la pubblicazione. Se non desideri verificare il file tarball, ignora questo passaggio.
Nota
In alternativa, se preferisci verificare il file tarball utilizzando un checksum MD5 o SHA256, consulta Verifica del programma di installazione EFA utilizzando un checksum.
-
Scarica la chiave pubblica GPG e importala nel tuo keyring.
$wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.keyIl comando dovrebbe restituire un valore di chiave. Prendere nota del valore della chiave poiché sarà necessario nella fase successiva.
-
Verifica l'impronta digitale della chiave GPG. Esegui questo comando e specifica la chiave valore creata nella fase precedente.
$gpg --fingerprintkey_valueIl comando dovrebbe restituire un'impronta digitale identica a
4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC. Se l'impronta digitale non corrisponde, non eseguire lo script di installazione EFA e contatta Supporto. -
Scarica il file di firma e verifica la firma del file tarball EFA.
$wget https://efa-installer.amazonaws.com/aws-efa-installer-1.50.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.50.0.tar.gz.sigDi seguito viene mostrato l'output di esempio.
gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCCSe il risultato include
Good signaturee se l'impronta digitale corrisponde a quella restituita nel passaggio precedente, procedi alla fase successiva. In caso contrario, non eseguire lo script di installazione EFA e contatta Supporto.
-
-
Estrarre i file dal file
.tar.gzcompresso e andare alla directory estratta.$tar -xf aws-efa-installer-1.50.0.tar.gz && cd aws-efa-installer (Facoltativo) Verificate le firme dei singoli pacchetti durante l'installazione.
A partire da EFA installer 1.48.0, l'installatore include GPG-signed singoli pacchetti RPM e DEB. Per verificare l'autenticità e l'integrità di ogni singolo pacchetto durante l'installazione, usa il flag.
--check-signaturesQuando abiliti questo flag, il programma di installazione verifica prima tutte le firme dei pacchetti e procede con l'installazione solo se ogni pacchetto supera la verifica. Se un pacchetto non supera la verifica, il programma di installazione esce immediatamente senza installare nulla.-
Scarica la chiave pubblica GPG.
$wget https://efa-installer.amazonaws.com/aws-efa-installer.key -
Esporta il percorso chiave. Quindi, nel passaggio successivo, aggiungete
--check-signaturesal comando di installazione e usatesudo -Einvece chesudoper preservare la variabile di ambiente.$export EFA_INSTALLER_KEY=$(pwd)/aws-efa-installer.key
RPM-based Sui sistemi (Amazon Linux 2023, RHEL, Rocky Linux e SUSE), il programma di installazione verifica ogni RPM utilizzando.
rpm --checksigDEB-based Sui sistemi (Ubuntu, Debian), l'installatore verifica ogni DEB utilizzando la verifica della firma GPG. Se la verifica di un pacchetto fallisce, l'installazione si interrompe immediatamente.Nota
Il
--check-signaturescontrassegno è opzionale. Senza di esso, l'installatore non esegue la verifica della firma individuale.-
-
Eseguire lo script di installazione del software EFA.
Nota
Se avete completato il passaggio opzionale precedente per impostare la verifica della firma del pacchetto, aggiungetelo
--check-signaturesal comando di installazione e usatesudo -Eal posto di.sudoAd esempio:sudo -E ./efa_installer.sh -y --mpi=openmpi5 --check-signatures.Nota
A partire da EFA 1.30.0, sia Open MPI 4.1 che Open MPI 5 sono installati per impostazione predefinita. A meno che tu non abbia bisogno di Open MPI 4.1, installa solo Open MPI 5. Il comando seguente installa solo Open MPI 5. Se desideri installare Open MPI 4.1 e Open MPI 5, rimuovi.
--mpi=openmpi5$sudo ./efa_installer.sh -y --mpi=openmpi5Libfabric è installato nella directory
/opt/amazon/efa. Il plug-in aws-ofi-nccl è installato nella directory/opt/amazon/ofi-nccl. Open MPI è installato nella directory/opt/amazon/openmpi. -
Se il programma di installazione di EFA richiede il riavvio dell'istanza, eseguire questa operazione e riconnettersi all'istanza. In caso contrario, disconnettersi dall'istanza e quindi accedere di nuovo per completare l'installazione.
-
Verificare che il software EFA sia stato installato correttamente.
$fi_info -p efa -t FI_EP_RDMIl comando deve restituire informazioni sulle interfacce EFA Libfabric.
Fase 6: installare NCCL
Installare NCCL. Per ulteriori informazioni su NCCL, consulta il repository NCCL
Per installare NCCL
-
Passa alla directory
/opt.$cd /opt -
Clonare il repository NCCL ufficiale sull'istanza e navigare nel repository clonato locale.
$sudo git clone https://github.com/NVIDIA/nccl.git -b v2.30.4-1 && cd nccl -
Creare e installare NCCL e specificare la directory di installazione CUDA.
$sudo make -j src.build CUDA_HOME=/usr/local/cuda-13
Fase 7: installare i test NCCL
Installare i test NCCL. I test NCCL consentono di confermare che NCCL sia installato correttamente e che funzioni come previsto. Per ulteriori informazioni sui test NCCL, consulta il repository nccl-tests
Per installare i test NCCL
-
Passare alla home directory.
$cd $HOME -
Clonare il repository nccl-tests ufficiale sull'istanza e navigare nel repository clonato locale.
$git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests -
Aggiungere la directory Libfabric alla variabile
LD_LIBRARY_PATH.-
Amazon Linux 2023
$export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH -
Ubuntu e Debian
$export LD_LIBRARY_PATH=/opt/amazon/efa/lib:$LD_LIBRARY_PATH -
REGOLA 10
$export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH
-
-
Installare i test NCCL e specificare le directory di installazione MPI, NCCL e CUDA.
$make MPI=1 MPI_HOME=/opt/amazon/openmpiNCCL_HOME=/opt/nccl/buildCUDA_HOME=/usr/local/cuda-13
Fase 8: testare la configurazione EFA e NCCL
Eseguire un test per accertare che l'istanza temporanea sia configurata adeguatamente per EFA e NCCL.
Per testare la configurazione EFA ed NCCL
-
Creare un file host che specifichi gli host su cui eseguire i test. Il comando seguente crea un file di host denominato
my-hostsche include un riferimento all'istanza stessa. -
Esegui il test NCCL. Il comando seguente presuppone che siano presenti 8 GPU per istanza. Regola i
-Nvalori-ne in base al tipo di istanza.$/opt/amazon/openmpi/bin/mpirun \ -x FI_EFA_USE_DEVICE_RDMA=1 \ -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \ -x NCCL_DEBUG=INFO \ --hostfile my-hosts -n 8 -N 8 \ --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \ $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100 -
È possibile confermare che EFA sia attivo come provider sottostante per NCCL quando viene stampato il log
NCCL_DEBUG.ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*Le seguenti informazioni aggiuntive vengono visualizzate quando si utilizza un'istanza
p4d.24xlarge.ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Running on P4d platform, Setting NCCL_TOPO_FILE environment variable to /home/ec2-user/install/plugin/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
Fase 9: installare applicazioni di machine learning
Installa le applicazioni di machine learning sull'istanza temporanea. La procedura di installazione varia in base alla specifica applicazione di machine learning. Per ulteriori informazioni sull'installazione del software sulla tua istanza Linux, consulta Gestire gli aggiornamenti del sistema operativo nella Guida per l'utente di Amazon Linux 2023.
Nota
Per le istruzioni di installazione, consulta la documentazione dell'applicazione di machine learning.
Passaggio 10: creare un EFA e un'AMI NCCL-enabled
Dopo aver installato i componenti software richiesti, crei un'AMI che puoi riutilizzare per avviare le tue EFA-enabled istanze.
Per creare un'AMI dall'istanza temporanea
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel riquadro di navigazione, scegliere Instances (Istanze).
-
Seleziona l'istanza temporanea creata e seleziona Actions (Operazioni), Image (Immagine), Create Image (Crea immagine).
-
Per Create image (Crea immagine), effettua le seguenti operazioni:
-
In Image name (Nome immagine), immettere un nome descrittivo per l'AMI.
-
(Facoltativo) In Image description (Descrizione immagine), inserire una breve descrizione dell'AMI.
-
Scegliere Create Image (Crea immagine).
-
-
Nel riquadro di navigazione scegliere AMIs (AMI).
-
Individua l'AMI che hai creato nell'elenco. Prima di procedere con la fase seguente, attendere che lo stato passi da
pendingaavailable.
Fase 11: terminare l'istanza temporanea
A questo punto l'istanza temporanea avviata non è più necessaria. È possibile terminare l'istanza per evitare di incorrere in costi aggiuntivi.
Per terminare l'istanza temporanea
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel riquadro di navigazione, scegliere Instances (Istanze).
-
Selezionare l'istanza temporanea creata, quindi scegliere Actions (Operazioni), Instance state (Stato istanza), Terminate instance (Termina istanza).
-
Quando viene richiesta la conferma, seleziona Termina.
Fase 12: Avvia l'EFA e NCCL-enabled le istanze in un gruppo di collocamento del cluster
Avvia l'EFA e NCCL-enabled le istanze in un gruppo di posizionamento del cluster utilizzando l' EFA-enabledAMI e il gruppo di EFA-enabled sicurezza che hai creato in precedenza.
Nota
-
Non è un requisito assoluto avviare le EFA-enabled istanze in un gruppo di collocamento del cluster. Tuttavia, consigliamo di eseguire le EFA-enabled istanze in un gruppo di posizionamento del cluster in quanto avvia le istanze in un gruppo a bassa latenza in una singola zona di disponibilità.
-
Per garantire che la capacità sia disponibile durante il dimensionamento delle istanze del cluster, è possibile creare una prenotazione della capacità per il gruppo di collocazione cluster. Per ulteriori informazioni, consulta Utilizza Capacity Reservations con gruppi di collocamento.
Fase 13: abilitare SSH senza password
Nota
L'utente SSH predefinito varia in base al sistema operativo: ubuntu per Ubuntu, per Debian, admin ec2-user per Amazon Linux e RHEL.
Per consentire l'esecuzione delle applicazioni in tutte le istanze del cluster, è necessario abilitare l'accesso SSH senza password dal nodo leader ai nodi membro. Il nodo principale è l'istanza da cui vengono eseguite le applicazioni. Le restanti istanze del cluster sono i nodi membro.
Per abilitare SSH senza password tra le istanze del cluster
-
Selezionare un'istanza nel cluster come nodo principale e connettersi a essa.
-
Disabilita
strictHostKeyCheckinge abilitaForwardAgentsul nodo principale. Aprire il file~/.ssh/configutilizzando qualsiasi editor di testo e aggiungere il seguente script.Host * ForwardAgent yes Host * StrictHostKeyChecking no -
Generare una coppia di chiavi RSA.
$ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsaLa coppia di chiavi viene creata nella directory
$HOME/.ssh/. -
Modifica le autorizzazioni della chiave privata sul nodo principale.
$chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config -
Aprire
~/.ssh/id_rsa.pubutilizzando l'editor di testo preferito e copiare la chiave. -
Per ogni nodo membro nel cluster, procedere nel modo seguente:
-
Collegarsi all'istanza.
-
Aprire
~/.ssh/authorized_keysutilizzando qualsiasi editor di testo e aggiungere la chiave pubblica copiata in precedenza.
-
-
Per verificare che SSH senza password funzioni come previsto, connettersi al nodo leader ed eseguire il seguente comando.
$sshmember_node_private_ipLa connessione al nodo membro non dovrebbe richiedere una chiave o una password.