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à.
Inizia con EFA e NCCL per carichi di lavoro ML su Amazon EC2
La NVIDIA Collective Communications Library (NCCL) è una libreria di routine di comunicazione collettiva standard per più utenti GPUs su uno o più nodi. NCCLpuò essere utilizzata insieme EFA a Libfabric e MPI per supportare vari carichi di lavoro di machine learning. Per ulteriori informazioni, consulta il NCCL
I passaggi seguenti consentono di iniziare a NCCL utilizzare EFA e utilizzare una base AMI per uno dei sistemi operativi supportati.
Nota
-
Solo i tipi di istanza
p3dn.24xlarge
,p4d.24xlarge
ep5.48xlarge
sono supportati. -
Sono supportati solo Amazon Linux 2 e Ubuntu 20.04/22.04 baseAMIs.
-
È supportato solo la NCCL versione 2.4.2 e successive con. EFA
Per ulteriori informazioni sull'esecuzione di carichi di lavoro di machine learning con EFA e sull'NCCLutilizzo di un AWS Deep Learning AMI, consulta Using EFA on the DLAMI nella AWS Deep Learning AMI Developer Guide.
Fasi
- Fase 1: Preparare un gruppo di EFA sicurezza abilitato
- Fase 2: avviare un'istanza temporanea
- Passaggio 3: installa i driver NvidiaGPU, il toolkit Nvidia e cu CUDA DNN
- Fase 4: Installazione GDRCopy
- Fase 5: Installare il EFA software
- Fase 6: Installazione NCCL
- Passaggio 7: installa il aws-ofi-nccl plugin
- Fase 8: Installare i NCCL test
- Fase 9: Verificare EFA la configurazione NCCL
- Fase 10: installare applicazioni di Machine Learning
- Passaggio 11: creare un file EFA NCCL abilitato AMI
- Fase 12: terminare l'istanza temporanea
- Fase 13: Avvio EFA e NCCL attivazione delle istanze in un gruppo di posizionamento del cluster
- Passaggio 14: abilitare la modalità senza password SSH
Fase 1: Preparare un gruppo di EFA sicurezza abilitato
An EFA richiede un gruppo di sicurezza che consenta tutto il traffico in entrata e in uscita da e verso il gruppo di sicurezza 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 in entrata da qualsiasi indirizzo per la SSH connettività. IPv4 SSH
Importante
Questo gruppo di sicurezza è destinato esclusivamente a scopi di test. Per gli ambienti di produzione, si consiglia di creare una SSH regola in entrata che consenta il traffico solo dall'indirizzo IP da cui ci si connette, ad esempio l'indirizzo IP del computer o un intervallo di indirizzi IP nella rete locale.
Per altri scenari, consulta Regole del gruppo di sicurezza per diversi casi d'uso.
Per creare un gruppo di EFA sicurezza abilitato
Apri la EC2 console Amazon 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 le istanze VPC in cui intendi avviare le istanze EFA abilitate.
-
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 Tipo, scegliete. SSH
-
Per Tipo di sorgente, scegliete 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 EFA software. Questa istanza viene utilizzata per creare un'istanza EFA -enabled AMI da cui avviare le istanze EFA -enabled.
Per avviare un'istanza temporanea
Apri la EC2 console Amazon 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 dell'applicazione e del sistema operativo, seleziona uno AMI per uno dei sistemi operativi supportati. Sono supportati solo Amazon Linux 2, Ubuntu 20.04 e Ubuntu 22.04.
-
Nella sezione Tipo di istanza seleziona
p3dn.24xlarge
,p4d.24xlarge
op5.48xlarge
. -
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. Se non si seleziona una sottorete, non è possibile abilitare l'istanza per. 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 Advanced network configuration (Configurazione di rete avanzata) e per Elastic Fabric Adapter seleziona Enable (Abilita).
-
-
Nella sezione Storage (Archiviazione), configura i volumi secondo necessità.
Nota
È necessario fornire da 10 a 20 GiB di spazio di archiviazione aggiuntivi per CUDA Nvidia Toolkit. Se non fornisci spazio di archiviazione sufficiente, riceverai un
insufficient disk space
errore durante il tentativo di installare i driver e il toolkit Nvidia. CUDA -
Nel pannello Summary (Riepilogo) a destra, scegli Launch instance (Avvia istanza).
Passaggio 3: installa i driver NvidiaGPU, il toolkit Nvidia e cu CUDA DNN
Fase 4: Installazione GDRCopy
GDRCopyInstalla per migliorare le prestazioni di Libfabric. Per ulteriori informazioni suGDRCopy, consulta il GDRCopyrepository
Fase 5: Installare il EFA software
Installa il kernel, EFA i driver, Libfabric e lo MPI stack Open EFA abilitati per il supporto EFA sulla tua istanza temporanea.
Per installare il software EFA
-
Connettersi all'istanza avviata. Per ulteriori informazioni, consulta Connect alla tua istanza Linux usando SSH.
-
Scaricare i file di installazione del software EFA. I file di installazione del software sono riuniti in un file (
.tar.gz
) tarball compresso. Per scaricare l'ultima versione stabile, utilizzare il comando seguente.$
C:\>
curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.34.0.tar.gzÈ inoltre possibile ottenere l'ultima versione sostituendo il numero della versione con
latest
nel comando qui sopra. (Facoltativo) 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 preferite verificare il file tarball utilizzando invece un SHA256 checksum MD5 o, vedete. Verifica il EFA programma di installazione utilizzando un checksum
-
Scaricate la GPG chiave pubblica e importatela nel vostro portachiavi.
$
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 GPG chiave. Esegui questo comando e specifica la chiave valore creata nella fase precedente.
$
gpg --fingerprintkey_value
Il 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 EFA installazione e contatta. AWS Support -
Scaricate il file della firma e verificate la firma del file EFA tarball.
$
wget https://efa-installer.amazonaws.com/aws-efa-installer-1.34.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.34.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 3CCC
Se il risultato include
Good signature
e se l'impronta digitale corrisponde a quella restituita nel passaggio precedente, procedi alla fase successiva. In caso contrario, non eseguite lo script EFA di installazione e AWS Support contattate.
-
-
Estrarre i file dal file
.tar.gz
compresso e andare alla directory estratta.$
C:\>
tar -xf aws-efa-installer-1.34.0.tar.gz && cd aws-efa-installer -
Eseguire lo script di installazione del software EFA.
Nota
A partire dalla EFA 1.30.0, per impostazione predefinita vengono installati sia Open MPI 4 che Open MPI 5. A meno che non sia necessario Open MPI 5, si consiglia di installare solo Open MPI 4. Il comando seguente installa solo Open MPI 4. Se desideri installare Open MPI 4 e Open MPI 5, rimuovi
--mpi=openmpi4
.$
sudo ./efa_installer.sh -y --mpi=openmpi4Libfabric è installato nella
/opt/amazon/efa
directory, mentre Open MPI è installato nella/opt/amazon/openmpi
directory. -
Se il EFA programma di installazione richiede di riavviare l'istanza, fallo e poi riconnettiti all'istanza. In caso contrario, disconnettersi dall'istanza e quindi accedere di nuovo per completare l'installazione.
-
Verificate che i componenti EFA software siano stati installati correttamente.
$
fi_info -p efa -t FI_EP_RDMIl comando dovrebbe restituire informazioni sulle EFA interfacce Libfabric. L'esempio seguente mostra l'output del comando.
-
p3dn.24xlarge
con interfaccia di rete singolaprovider: efa fabric: EFA-fe80::94:3dff:fe89:1b70 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA
-
p4d.24xlarge
ep5.48xlarge
con più interfacce di reteprovider: efa fabric: EFA-fe80::c6e:8fff:fef6:e7ff domain: efa_0-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c34:3eff:feb2:3c35 domain: efa_1-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c0f:7bff:fe68:a775 domain: efa_2-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::ca7:b0ff:fea6:5e99 domain: efa_3-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA
-
Fase 6: Installazione NCCL
InstallareNCCL. Per ulteriori informazioni suNCCL, consulta il NCCLrepository.
Per installare NCCL
-
Passa alla directory
/opt
.$
cd /opt -
Clona il NCCL repository ufficiale sull'istanza e accedi al repository clonato locale.
$
sudo git clone https://github.com/NVIDIA/nccl.git && cd nccl -
Compila e installa NCCL e specifica la directory di installazione. CUDA
$
sudo make -j src.build CUDA_HOME=/usr/local/cuda
Passaggio 7: installa il aws-ofi-nccl plugin
Il aws-ofi-nccl plugin mappa NCCL il trasporto orientato alla connessione all'interfaccia APIs affidabile senza connessione di Libfabric. Ciò consente di utilizzare Libfabric come provider di rete durante l'esecuzione di applicazioni basate. NCCL Per ulteriori informazioni sul aws-ofi-nccl plugin, consulta il aws-ofi-nccl repository
Per installare il plugin aws-ofi-nccl
-
Passare alla home directory.
$
cd $HOME -
Installa le utilità richieste.
-
Amazon Linux 2
$
sudo yum install hwloc-devel -
Ubuntu
$
sudo apt-get install libhwloc-dev
-
-
Scarica i file del aws-ofi-nccl plugin. I file sono riuniti in un file tarball compresso (
.tar.gz
).$
wget https://github.com/aws/aws-ofi-nccl/releases/download/v1.10.0-aws/aws-ofi-nccl-1.10.0-aws.tar.gz -
Estrai i file dal file .tar.gz compresso e vai alla directory estratta.
$
tar -xf aws-ofi-nccl-1.10.0-aws.tar.gz && cd aws-ofi-nccl-1.10.0-aws -
Per generare i make file, esegui
configure
lo script e specifica MPI le directory Libfabric e di CUDA installazione. NCCL$
./configure --prefix=/opt/aws-ofi-nccl --with-mpi=/opt/amazon/openmpi \ --with-libfabric=/opt/amazon/efa \ --with-cuda=/usr/local/cuda \ --enable-platform-aws -
Aggiungi la MPI cartella Open alla
PATH
variabile.$
export PATH=/opt/amazon/openmpi/bin/:$PATH -
Installa il aws-ofi-nccl plugin.
$
make && sudo make install
Fase 8: Installare i NCCL test
Installa i NCCL test. I NCCL test consentono di verificare che NCCL sia installato correttamente e che funzioni come previsto. Per ulteriori informazioni sui NCCL test, consulta il repository nccl-tests
Per NCCL installare i test
-
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 2
$
export LD_LIBRARY_PATH=/opt/amazon/efa/lib64
:$LD_LIBRARY_PATH -
Ubuntu
$
export LD_LIBRARY_PATH=/opt/amazon/efa/lib
:$LD_LIBRARY_PATH
-
-
Installa NCCL i test e specifica MPI NCCL le directory e CUDA di installazione.
$
make MPI=1 MPI_HOME=/opt/amazon/openmpi
NCCL_HOME=/opt/nccl/build
CUDA_HOME=/usr/local/cuda
Fase 9: Verificare EFA la configurazione NCCL
Esegui un test per assicurarti che l'istanza temporanea sia configurata correttamente per EFA eNCCL.
Per testare la tua EFA NCCL configurazione
-
Creare un file host che specifichi gli host su cui eseguire i test. Il comando seguente crea un file di host denominato
my-hosts
che include un riferimento all'istanza stessa. -
Eseguite il test e specificate il file host (
--hostfile
) e il numero di GPUs da utilizzare (-n
). Il comando seguente esegue ilall_reduce_perf
test su 8 GPUs sull'istanza stessa e specifica le seguenti variabili di ambiente.-
FI_EFA_USE_DEVICE_RDMA=1
— (p4d.24xlarge
solo) utilizza la RDMA funzionalità del dispositivo per il trasferimento unilaterale e bilaterale. -
NCCL_DEBUG=INFO
: consente un output di debug dettagliato. È inoltre possibile specificareVERSION
di stampare solo la NCCL versione all'inizio del test o di ricevere solo messaggi diWARN
errore.
Per ulteriori informazioni sugli argomenti del NCCL test, consulta NCCLi test README nel repository
ufficiale nccl-tests. -
p3dn.24xlarge
$
/opt/amazon/openmpi/bin/mpirun \ -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/aws-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 -
p4d.24xlarge
ep5.48xlarge
$
/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/aws-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 è attivo come provider sottostante per NCCL la stampa del registro.
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 10: 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 il software sull'istanza Amazon Linux 2.
Nota
Per le istruzioni di installazione, consulta la documentazione dell'applicazione di machine learning.
Passaggio 11: creare un file EFA NCCL abilitato AMI
Dopo aver installato i componenti software richiesti, ne crei uno AMI da riutilizzare per avviare le istanze EFA abilitate.
Per creare un'istanza AMI temporanea
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione, seleziona 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:
-
Per Nome immagine, inserisci un nome descrittivo per. AMI
-
(Facoltativo) Per Descrizione dell'immagine, inserire una breve descrizione dello scopo di. AMI
-
Scegliere Create Image (Crea immagine).
-
-
Nel riquadro di navigazione, scegli AMIs.
-
Individua AMI quello che hai creato nell'elenco. Prima di procedere con la fase seguente, attendi che lo stato passi da
pending
aavailable
.
Fase 12: 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 EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione, seleziona 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 13: Avvio EFA e NCCL attivazione delle istanze in un gruppo di posizionamento del cluster
Avvia le tue istanze abilitate EFA e NCCL abilitate in un gruppo di posizionamento del cluster utilizzando il gruppo di sicurezza EFA -enabled AMI e il gruppo di sicurezza EFA -enabled che hai creato in precedenza.
Nota
-
Non è un requisito assoluto avviare le istanze EFA -enabled in un gruppo di posizionamento del cluster. Tuttavia, consigliamo di eseguire le istanze EFA abilitate in un gruppo di collocamento di 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 Crea prenotazioni di capacità nei gruppi di collocamento dei cluster.
Passaggio 14: abilitare la modalità senza password SSH
Per consentire l'esecuzione delle applicazioni su tutte le istanze del cluster, è necessario abilitare l'SSHaccesso senza password dal nodo leader ai nodi membri. Il nodo principale è l'istanza da cui vengono eseguite le applicazioni. Le restanti istanze del cluster sono i nodi membro.
Per abilitare la modalità senza password SSH tra le istanze del cluster
-
Selezionare un'istanza nel cluster come nodo principale e connettersi a essa.
-
Disabilita
strictHostKeyChecking
e abilitaForwardAgent
sul nodo principale. Aprire il file~/.ssh/config
utilizzando qualsiasi editor di testo e aggiungere il seguente script.Host * ForwardAgent yes Host * StrictHostKeyChecking no
-
Genera una RSA key pair.
$
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.pub
utilizzando 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_keys
utilizzando qualsiasi editor di testo e aggiungere la chiave pubblica copiata in precedenza.
-
-
Per verificare che il sistema senza password SSH funzioni come previsto, connettiti al tuo nodo leader ed esegui il comando seguente.
$
sshmember_node_private_ip
La connessione al nodo membro non dovrebbe richiedere una chiave o una password.