Inizia con EFA e NCCL per carichi di lavoro ML su Amazon EC2 - Amazon Elastic Compute Cloud

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 collettive standard per più GPUs su un singolo nodo o su più nodi. NCCLpuò essere utilizzato conEFA, Libfabric e MPI per supportare diversi carichi di lavoro machine learning. Per maggiori informazioni, consulta il NCCLsito Web.

Le fasi 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.24xlargee p5.48xlarge sono supportati.

  • Sono supportati solo Amazon Linux 2 e Ubuntu 20.04/22.04 baseAMIs.

  • Solo NCCL 2.4.2 e versioni successive sono supportate EFA da.

  • Per ulteriori informazioni sull'esecuzione di carichi di lavoro di machine learning con EFA e sull'NCCLutilizzo di un AWS Deep Learning AMIs, consulta Using EFA on the DLAMI nella AWS Deep Learning AMIs Developer Guide.

Fase 1: preparare un gruppo di sicurezza EFA abilitato per

An 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 SSH traffico in entrata da qualsiasi IPv4 indirizzo 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 SSH regola 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.

Per altri scenari, consulta Regole del gruppo di sicurezza per diversi casi d'uso.

Per creare un gruppo di sicurezza EFA abilitato per
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, scegliere Security Groups (Gruppi di sicurezza) e quindi Create Security Group (Crea gruppo di sicurezza).

  3. Nella finestra Create Security Group (Crea gruppo di sicurezza) effettuare le operazioni seguenti:

    1. In Nome gruppo di sicurezza, immettere un nome descrittivo per il gruppo di sicurezza, ad esempio EFA-enabled security group.

    2. (Facoltativo) In Description (Descrizione), inserire una breve descrizione del gruppo di sicurezza.

    3. Per VPC, seleziona le istanze VPC in cui intendi avviare le istanze EFA abilitate.

    4. Scegliere Create Security Group (Crea gruppo di sicurezza).

  4. Seleziona il gruppo di sicurezza creato e nella scheda Details (Dettagli) copia il valore Security group ID (ID gruppo di sicurezza).

  5. Dopo aver selezionato il gruppo di sicurezza, scegli Actions (Operazioni), Edit inbound rules (Modifica le regole in entrata) ed esegui le operazioni di seguito:

    1. Scegliere Add rule (Aggiungi regola).

    2. In Type (Tipo), selezionare All traffic (Tutto il traffico).

    3. Per Source type (Tipo di origine), scegli Custom (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.

    4. Scegli Aggiungi regola.

    5. Per Tipo, scegliete. SSH

    6. Per Tipo di sorgente, scegliete Anywhere- IPv4.

    7. Scegliere Salva regole.

  6. Dopo aver selezionato il gruppo di sicurezza, scegli Actions (Operazioni), Edit outbound rules (Modifica le regole in uscita) ed esegui le operazioni di seguito:

    1. Scegliere Add rule (Aggiungi regola).

    2. In Type (Tipo), selezionare All traffic (Tutto il traffico).

    3. Per Destination type (Tipo di destinazione), scegli Custom (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.

    4. Scegliere Salva regole.

Fase 2: avviare un'istanza temporanea

Avvia un'istanza temporanea da utilizzare per installare e configurare i componenti EFA software. L'istanza serve anche per creare un'EFAabilitata per AMI da cui avviare le istanze EFA abilitate per.

Per avviare un'istanza temporanea
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, scegli Instances (Istanze) e quindi scegli Launch instances (Avvia istanze) per aprire la nuova procedura guidata di avvio dell'istanza.

  3. (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).

  4. 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.

  5. Nella sezione Tipo di istanza seleziona p3dn.24xlarge, p4d.24xlarge o p5.48xlarge.

  6. Nella sezione Key pair (Coppia di chiavi), seleziona la coppia di chiavi da utilizzare per l'istanza.

  7. Nella sezione Network settings (Impostazioni di rete), scegli Edit (Modifica) e quindi esegui le operazioni qui descritte:

    1. Per Subnet (Sottorete) seleziona la subnet in cui avviare l'istanza. Se non selezioni una sottorete, non puoi abilitare l'istanza perEFA.

    2. 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.

    3. Espandi la sezione Configurazione di rete avanzata.

      Per Interfaccia di rete 1, selezionare Indice della scheda di rete = 0, Indice del dispositivo = 0 e Tipo di interfaccia = EFA con ENA.

      (Facoltativo) Se utilizzi un tipo di istanza multischeda, ad esempio p4d.24xlarge op5.48xlarge, per ogni interfaccia di rete aggiuntiva richiesta, scegli Aggiungi interfaccia di rete, per Indice della scheda di rete seleziona l'indice successivo non utilizzato, quindi seleziona Indice dispositivo = 1 e Tipo di interfaccia = EFA con ENA o EFA -only.

  8. Nella sezione Storage (Archiviazione), configura i volumi secondo necessità.

    Nota

    Devi effettuare un provisioning aggiuntivo di 10-20 GiB di spazio di archiviazione per CUDA Nvidia Toolkit. Se non effettui il provisioning di uno spazio di archiviazione sufficiente, riceverai un insufficient disk space errore di installazione dei driver e CUDA del toolkit Nvidia.

  9. Nel pannello Summary (Riepilogo) a destra, scegli Launch instance (Avvia istanza).

Fase 3: installare GPU driver Nvidia, il CUDA kit di strumenti Nvidia e cu DNN

Amazon Linux 2
Per installare driver NvidiaGPU, il CUDA kit di strumenti Nvidia e cu DNN
  1. Per verificare che tutti i pacchetti software siano aggiornati, eseguire un aggiornamento rapido del software sull'istanza.

    $ sudo yum upgrade -y && sudo reboot

    Dopo il riavvio, riconnettersi all'istanza.

  2. Installare le utilità che sono richieste per installare i GPU driver Nvidia e il toolkit CUDA Nvidia.

    $ sudo yum groupinstall 'Development Tools' -y
  3. Disabilitare i driver open source nouveau.

    1. Installare le utility richieste e il pacchetto delle intestazioni kernel per la versione del kernel attualmente in esecuzione.

      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    2. Aggiungere nouveau al file dell'elenco dei /etc/modprobe.d/blacklist.conf negati.

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. Aggiungere GRUB_CMDLINE_LINUX="rdblacklist=nouveau" al file grub e ricompilare il file di configurazione di Grub.

      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \ && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Riavviare l'istanza e riconnettersi a essa.

  5. Preparare i repository richiesti

    1. Installare il EPEL repository per DKMS e abilitare qualsiasi repository opzionale per la distribuzione Linux.

      $ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    2. Installa la chiave pubblica del CUDA repository. GPG

      $ distribution='rhel7'
    3. Impostare l'archivio CUDA di rete e aggiornare la cache del repository.

      $ ARCH=$( /bin/arch ) \ && sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo \ && sudo yum clean expire-cache
    4. (Solo kernel versione 5.10) Eseguire questi passaggi solo se si utilizza Amazon Linux 2 con kernel versione 5.10. Se si utilizza Amazon Linux 2 con kernel versione 4.12, saltare questi passaggi. Per controllare la versione del kernel, eseguire uname -r.

      1. Creare il file di configurazione del driver Nvidia denominato /etc/dkms/nvidia.conf.

        $ sudo mkdir -p /etc/dkms \ && echo "MAKE[0]=\"'make' -j2 module SYSSRC=\${kernel_source_dir} IGNORE_XEN_PRESENCE=1 IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_CC_MISMATCH=1 CC=/usr/bin/gcc10-gcc\"" | sudo tee /etc/dkms/nvidia.conf
      2. (Solo p4d.24xlarge e p5.48xlarge) Copia il file di configurazione del driver Nvidia.

        $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
  6. Installa i GPU driver, il NVIDIA CUDA toolkit e cu di Nvidia. DNN

    • p3dn.24xlarge

      $ sudo yum clean all \ && sudo yum -y install kmod-nvidia-latest-dkms nvidia-driver-latest-dkms \ && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
    • p4d.24xlarge e p5.48xlarge

      $ sudo yum clean all \ && sudo yum -y install kmod-nvidia-open-dkms nvidia-driver-latest-dkms \ && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
  7. Riavviare l'istanza e riconnettersi a essa.

  8. (Solo p4d.24xlarge e p5.48xlarge) Avviare il servizio Nvidia Fabric Manager e assicurarsi che venga avviato automaticamente all'avvio dell'istanza. Nvidia Fabric Manager è necessario per la gestione degli switch NV.

    $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
  9. Assicurarsi che i CUDA percorsi siano impostati ogni volta che viene avviata l'istanza.

    • Per le shell bash, aggiungere le seguenti istruzioni a /home/username/.bashrc e /home/username/.bash_profile.

      export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
    • Per le shell tcsh, aggiungere le seguenti istruzioni a /home/username/.cshrc.

      setenv PATH=/usr/local/cuda/bin:$PATH setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
  10. Per confermare che i GPU driver di Nvidia GPU siano funzionanti, eseguire questo comando.

    $ nvidia-smi -q | head

    Il comando deve restituire le informazioni sui GPU driver NvidiaGPUs, Nvidia e su Nvidia toolkit CUDA Nvidia.

Ubuntu 20.04/22.04
Per installare driver NvidiaGPU, il CUDA kit di strumenti Nvidia e cu DNN
  1. Per verificare che tutti i pacchetti software siano aggiornati, eseguire un aggiornamento rapido del software sull'istanza.

    $ sudo apt-get update && sudo apt-get upgrade -y
  2. Installare le utilità che sono richieste per installare i GPU driver Nvidia e il toolkit CUDA Nvidia.

    $ sudo apt-get update && sudo apt-get install build-essential -y
  3. Per utilizzare il GPU driver Nvidia, è necessario prima disabilitare i driver nouveau open source.

    1. Installare le utility richieste e il pacchetto delle intestazioni kernel per la versione del kernel attualmente in esecuzione.

      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
    2. Aggiungere nouveau al file dell'elenco dei /etc/modprobe.d/blacklist.conf negati.

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. Aprire il file /etc/default/grub utilizzando qualsiasi editor di testo e aggiungere il seguente script.

      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
    4. Ricompilare il file di configurazione di Grub.

      $ sudo update-grub
  4. Riavviare l'istanza e riconnettersi a essa.

  5. Aggiungi il CUDA repository e installa i GPU driver, il NVIDIA CUDA toolkit e cu di Nvidia. DNN

    • p3dn.24xlarge

      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \ && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \ && sudo dpkg -i /tmp/deeplearning.deb \ && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \ && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \ && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \ && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \ && sudo apt update \ && sudo apt install nvidia-dkms-535 \ && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
    • p4d.24xlarge e p5.48xlarge

      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \ && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \ && sudo dpkg -i /tmp/deeplearning.deb \ && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \ && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \ && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \ && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \ && sudo apt update \ && sudo apt install nvidia-kernel-open-535 \ && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
  6. Riavviare l'istanza e riconnettersi a essa.

  7. (Solo p4d.24xlarge e p5.48xlarge) Installare Nvidia Fabric Manager.

    1. È necessario installare la versione di Nvidia Fabric Manager che corrisponde alla versione del modulo del kernel Nvidia installata al passaggio precedente.

      Eseguire questo comando per determinare la versione del modulo del kernel Nvidia.

      $ cat /proc/driver/nvidia/version | grep "Kernel Module"

      Di seguito è riportato un output di esempio.

      NVRM version: NVIDIA UNIX x86_64 Kernel Module 450.42.01 Tue Jun 15 21:26:37 UTC 2021

      Nell'esempio precedente, è stata installata la versione principale 450 del modulo del kernel. Ciò significa che è necessario installare la versione 450 di Nvidia Fabric Manager.

    2. Installare Nvidia Fabric Manager. Eseguire questo comando e specificare la versione principale identificata nella fase precedente.

      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number

      Ad esempio, se è stata installata la versione principale 450 del modulo del kernel, utilizzare il seguente comando per installare la versione corrispondente di Nvidia Fabric Manager.

      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
    3. Avviare il servizio e assicurarsi che venga avviato automaticamente all'avvio dell'istanza. Nvidia Fabric Manager è necessario per la gestione degli switch NV.

      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
  8. Assicurarsi che i CUDA percorsi siano impostati ogni volta che viene avviata l'istanza.

    • Per le shell bash, aggiungere le seguenti istruzioni a /home/username/.bashrc e /home/username/.bash_profile.

      export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
    • Per le shell tcsh, aggiungere le seguenti istruzioni a /home/username/.cshrc.

      setenv PATH=/usr/local/cuda/bin:$PATH setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
  9. Per confermare che i GPU driver di Nvidia GPU siano funzionanti, eseguire questo comando.

    $ nvidia-smi -q | head

    Il comando deve restituire le informazioni sui GPU driver NvidiaGPUs, Nvidia e su Nvidia toolkit CUDA Nvidia.

Fase 4: installare GDRCopy

GDRCopyInstalla per migliorare le prestazioni di Libfabric. Per ulteriori informazioni suGDRCopy, consulta il GDRCopyrepository.

Amazon Linux 2
Per installare GDRCopy
  1. Installare le dipendenze richieste.

    $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
  2. Scarica ed estrai il GDRCopy pacchetto.

    $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \ && tar xf v2.4.tar.gz ; cd gdrcopy-2.4/packages
  3. Compila il GDRCopy RPM pacchetto.

    $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
  4. Installa il GDRCopy RPM pacchetto.

    $ sudo rpm -Uvh gdrcopy-kmod-2.4-1dkms.noarch*.rpm \ && sudo rpm -Uvh gdrcopy-2.4-1.x86_64*.rpm \ && sudo rpm -Uvh gdrcopy-devel-2.4-1.noarch*.rpm
Ubuntu 20.04/22.04
Per installare GDRCopy
  1. Installare le dipendenze richieste.

    $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
  2. Scarica ed estrai il GDRCopy pacchetto.

    $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \ && tar xf v2.4.tar.gz \ && cd gdrcopy-2.4/packages
  3. Compila il GDRCopy RPM pacchetto.

    $ CUDA=/usr/local/cuda ./build-deb-packages.sh
  4. Installa il GDRCopy RPM pacchetto.

    $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \ && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb

Fase 5: installazione del EFA software

Installare il kernel EFA abilitato per l', EFA i driver, Libfabric e MPI lo stack Open necessari per il supporto EFA sull'istanza temporanea.

Per installare il software EFA
  1. Connettersi all'istanza avviata. Per ulteriori informazioni, consulta Connect alla tua istanza Linux usando SSH.

  2. 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.

    $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.37.0.tar.gz

    È inoltre possibile ottenere l'ultima versione sostituendo il numero della versione con latest nel comando qui sopra.

  3. (Facoltativo) Verifica l'autenticità e l'integrità del file EFA tarball (.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 SHA256 checksum MD5 or, consulta. Verifica del EFA programma di installazione utilizzando un checksum

    1. Scarica la GPG chiave pubblica e importala nel tuo keyring.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key

      Il comando dovrebbe restituire un valore di chiave. Prendere nota del valore della chiave poiché sarà necessario nella fase successiva.

    2. Verifica l'impronta digitale della GPG chiave. Esegui questo comando e specifica la chiave valore creata nella fase precedente.

      $ gpg --fingerprint key_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.

    3. Scarica il file di firma e verifica la firma del file EFA tarball.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.37.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.37.0.tar.gz.sig

      Di 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 eseguire lo script di EFA installazione e contatta AWS Support.

  4. Estrarre i file dal file .tar.gz compresso e andare alla directory estratta.

    $ tar -xf aws-efa-installer-1.37.0.tar.gz && cd aws-efa-installer
  5. 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, consigliamo di installare solo Open MPI 4. Il seguente comando installa solo Open MPI 4. Se si desidera installare sia Open MPI 4 che Open MPI 5, rimuovere--mpi=openmpi4.

    $ sudo ./efa_installer.sh -y --mpi=openmpi4

    Libfabric è installato nella /opt/amazon/efa directory, mentre Open MPI è installato nella /opt/amazon/openmpi directory.

  6. Se il EFA programma di installazione 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.

  7. Verificare la corretta installazione dei componenti EFA software.

    $ fi_info -p efa -t FI_EP_RDM

    Il comando deve restituire informazioni sulle EFA interfacce Libfabric. L'esempio seguente mostra l'output del comando.

    • p3dn.24xlarge con interfaccia di rete singola

      provider: 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 e p5.48xlarge con più interfacce di rete

      provider: 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

Passaggio 6: installazione NCCL

InstallareNCCL. Per ulteriori informazioni suNCCL, consulta il NCCLrepository.

Per installare NCCL
  1. Passa alla directory /opt.

    $ cd /opt
  2. Clonare il NCCL repository ufficiale sull'istanza e navigare nel repository clonato locale.

    $ sudo git clone https://github.com/NVIDIA/nccl.git && cd nccl
  3. Creare e installare NCCL e specificare la directory CUDA di installazione.

    $ sudo make -j src.build CUDA_HOME=/usr/local/cuda

Fase 7: installazione del aws-ofi-nccl plugin

Il aws-ofi-nccl plugin mappa NCCL il trasporto orientato alla connessione all'interfaccia APIs attendibile connection-less di Libfabric. Ciò consente di utilizzare Libfabric come provider di rete mentre si eseguono applicazioni NCCL basate su Libfabric. Per ulteriori informazioni sul aws-ofi-nccl plugin, consulta il aws-ofi-nccl repository.

Per installare il plugin aws-ofi-nccl
  1. Passare alla home directory.

    $ cd $HOME
  2. Installare le utilità richieste.

    • Amazon Linux 2

      $ sudo yum install hwloc-devel
    • Ubuntu

      $ sudo apt-get install libhwloc-dev
  3. 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.13.0-aws/aws-ofi-nccl-1.13.0.tar.gz
  4. Estrai i file dal file .tar.gz compresso e vai alla directory estratta.

    $ tar -xf aws-ofi-nccl-1.13.0.tar.gz && cd aws-ofi-nccl-1.13.0
  5. Per generare i file make, eseguire lo configure script e specificare le directoryMPI, 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
  6. Aggiungi la MPI directory Open alla PATH variabile.

    $ export PATH=/opt/amazon/openmpi/bin/:$PATH
  7. Installa il plugin aws-ofi-nccl.

    $ make && sudo make install

Fase 8: installazione dei NCCL test

Installa i NCCL test. I NCCL test consentono di confermare che NCCL sia installato correttamente e che funzioni come previsto. Per ulteriori informazioni sui NCCL test, consulta il repository nccl-tests.

Per installare i NCCL test
  1. Passare alla home directory.

    $ cd $HOME
  2. 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
  3. 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
  4. 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: test EFA della NCCL configurazione

Eseguire un test per accertare che l'istanza temporanea sia configurata adeguatamente per EFA eNCCL.

Per testare la tua EFA NCCL configurazione
  1. 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.

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
  2. Eseguite il test e specificate il file host (--hostfile) e il numero di GPUs da utilizzare (-n). Il comando seguente effettua il all_reduce_perf test su 8 GPUs sull'istanza stessa e specifica le variabili d'ambiente seguenti.

    • FI_EFA_USE_DEVICE_RDMA=1: utilizza (p4d.24xlargesolo) le RDMA funzionalità del dispositivo per il trasferimento unilaterale e bilaterale.

    • NCCL_DEBUG=INFO: consente un output di debug dettagliato. È possibile inoltre specificare VERSION di stampare solo la NCCL versione all'inizio del test o di WARN ricevere solo i messaggi di errore.

    Per ulteriori informazioni sugli argomenti di NCCL test, consulta NCCLTest 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 e p5.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
  3. È possibile confermare che EFA sia attivo come provider sottostante per NCCL quando viene stampato il NCCL_DEBUG log.

    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 di software sull'istanza Linux, consulta Gestione del software su un'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 necessari, procedi con la creazione dei componenti software necessari, procedi con la creazione di istanze EFA abilitate per. AMI

Per creare AMI un'istanza temporanea
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, seleziona Instances (Istanze).

  3. Seleziona l'istanza temporanea creata e seleziona Actions (Operazioni), Image (Immagine), Create Image (Crea immagine).

  4. Per Create image (Crea immagine), effettua le seguenti operazioni:

    1. In Image name (Nome immagine), immettere un nome descrittivo per l'AMI.

    2. (Facoltativo) In Image description (Descrizione immagine), inserire una breve descrizione delloAMI.

    3. Scegliere Create Image (Crea immagine).

  5. Nel riquadro di navigazione scegliere AMIs.

  6. Individuare nell'elenco AMI quella creata. Prima di procedere con la fase seguente, attendi che lo stato passi da pending a available.

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
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, seleziona Instances (Istanze).

  3. Selezionare l'istanza temporanea creata, quindi scegliere Actions (Operazioni), Instance state (Stato istanza), Terminate instance (Termina istanza).

  4. Quando viene richiesta la conferma, seleziona Termina.

Fase 13: avviare le istanze EFA e NCCL abilitate in un gruppo di collocazione cluster

Avvia EFA le istanze NCCL abilitate per in un gruppo di collocazione cluster tramite il gruppo EFA di sicurezza AMI EFA abilitato per creato in precedenza.

Nota
  • Avviare le istanze EFA abilitate per l'in un gruppo di collocazione cluster non è un requisito in assoluto. È tuttavia consigliabile eseguire le istanze EFA abilitate per in un gruppo di collocazione cluster perché le istanze vengono così avviate in gruppo a bassa latenza in un'unica 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 Creazione di prenotazioni di capacità in gruppi di collocazione cluster.

New console
Per avviare un'istanza temporanea
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, scegli Instances (Istanze) e quindi scegli Launch instances (Avvia istanze) per aprire la nuova procedura guidata di avvio dell'istanza.

  3. (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).

  4. Nella sezione Immagini dell'applicazione e del sistema operativoAMIs, scegli Le mie, quindi seleziona AMI quelle che hai creato nel passaggio precedente.

  5. Nella sezione Instance type (Tipo di istanza), seleziona p3dn.24xlarge o p4d.24xlarge.

  6. Nella sezione Key pair (Coppia di chiavi), seleziona la coppia di chiavi da utilizzare per l'istanza.

  7. Nella sezione Network settings (Impostazioni di rete), scegli Edit (Modifica) e quindi esegui le operazioni qui descritte:

    1. Per Subnet (Sottorete) seleziona la subnet in cui avviare l'istanza. Se non selezioni una sottorete, non puoi abilitare l'istanza perEFA.

    2. 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.

    3. Espandi la sezione Configurazione di rete avanzata.

      Per Interfaccia di rete 1, selezionare Indice della scheda di rete = 0, Indice del dispositivo = 0 e Tipo di interfaccia = EFA con ENA.

      (Facoltativo) Se utilizzi un tipo di istanza multischeda, ad esempio p4d.24xlarge op5.48xlarge, per ogni interfaccia di rete aggiuntiva richiesta, scegli Aggiungi interfaccia di rete, per Indice della scheda di rete seleziona l'indice successivo non utilizzato, quindi seleziona Indice dispositivo = 1 e Tipo di interfaccia = EFA eith ENA o -only. EFA

  8. (Opzionale) Nella sezione Storage (Archiviazione), configura i volumi secondo necessità.

  9. Nella sezione Advanced details (Dettagli avanzati), per Placement group name (Nome del gruppo di collocazione), seleziona il gruppo di collocazione cluster in cui avviare l'istanza. Se occorre creare un nuovo gruppo di collocazione cluster, scegli Create new placement group (Crea nuovo gruppo di collocazione).

  10. Nel pannello Riepilogo a destra, per Numero di istanze, inserisci il numero di istanze EFA abilitate che desideri avviare, quindi scegli Avvia istanza.

Old console
Per avviare le EFA istanze NCCL abilitate per in un gruppo di collocazione cluster
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Scegliere Launch Instance (Avvia istanza).

  3. Nella pagina Scegli una AMI pagina, scegli Mio AMIs, trova AMI quello che hai creato in precedenza, quindi scegli Seleziona.

  4. Nella pagina Choose an Instance Type (Scegli il tipo di istanza), seleziona p3dn.24xlarge e scegli Next: Configure Instance Details (Fase successiva: configurazione dei dettagli dell'istanza).

  5. Nella pagina Configure Instance Details (Configura i dettagli dell'istanza), procedere come segue:

    1. In Number of instances (Numero di istanze), immettere il numero di EFA istanze NCCL abilitate per che si desidera avviare.

    2. Per Rete e sottorete, seleziona la sottorete VPC e in cui avviare le istanze.

    3. In Placement group (Gruppo di posizionamento), selezionare la casella Add instance to placement group (Aggiungi istanza a gruppo di posizionamento).

    4. In Placement group name (Nome del gruppo di posizionamento), selezionare Add to a new placement group (Aggiungi a un nuovo gruppo di posizionamento) e immettere un nome descrittivo per il gruppo di posizionamento. Quindi, in Placement group strategy (Strategia gruppo di posizionamento), selezionare Cluster.

    5. In EFA, scegliere Enable (Abilita).

    6. Nella sezione Network Interfaces (Interfacce di rete), per il dispositivo eth0 scegliere New network interface (Nuova interfaccia di rete). Facoltativamente, è possibile specificare un IPv4 indirizzo primario e uno o più IPv4 indirizzi secondari. Se l'istanza viene lanciata in una sottorete alla quale è associato un IPv6 CIDR blocco, è possibile specificare un IPv6 indirizzo primario e uno o più indirizzi secondari. IPv6

    7. Scegli Passaggio successivo: aggiunta dello storage.

  6. Nella pagina Add Storage (Aggiungi storage), specificare i volumi da collegare all'istanza, oltre a quelli specificati da AMI (ad esempio il volume dispositivo root). Quindi selezionare Next: Add Tags (Fase successiva: aggiungere tag).

  7. Nella pagina Add Tags (Aggiungi tag) specificare i tag per l'istanza, ad esempio un nome intuitivo, quindi selezionare Next: Configure Security Group (Successivo: configurazione del gruppo di sicurezza).

  8. Nella pagina Configure Security Group (Configura gruppo di sicurezza), scegliere Assign a security group (Assegna un gruppo di sicurezza), selezionare Select an existing security group (Seleziona un gruppo di sicurezza esistente) e quindi selezionare il gruppo di sicurezza creato in precedenza.

  9. Scegliere Review and Launch (Analizza e avvia).

  10. Nella pagina Review Instance Launch (Verifica avvio istanza) controllare le impostazioni e selezionare Launch (Avvia) per scegliere una coppia di chiavi e avviare l'istanza.

Fase 14: abilitazione senza password SSH

Per consentire l'esecuzione delle applicazioni in tutte le istanze del cluster, è necessario abilitare SSH l'accesso 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 l'utilizzo senza password SSH tra le istanze del cluster
  1. Selezionare un'istanza nel cluster come nodo principale e connettersi a essa.

  2. Disabilita strictHostKeyChecking e abilita ForwardAgent sul nodo principale. Aprire il file ~/.ssh/config utilizzando qualsiasi editor di testo e aggiungere il seguente script.

    Host * ForwardAgent yes Host * StrictHostKeyChecking no
  3. Generare una RSA key pair.

    $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

    La coppia di chiavi viene creata nella directory $HOME/.ssh/.

  4. Modifica le autorizzazioni della chiave privata sul nodo principale.

    $ chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config
  5. Aprire ~/.ssh/id_rsa.pub utilizzando l'editor di testo preferito e copiare la chiave.

  6. Per ogni nodo membro nel cluster, procedere nel modo seguente:

    1. Collegarsi all'istanza.

    2. Aprire ~/.ssh/authorized_keys utilizzando qualsiasi editor di testo e aggiungere la chiave pubblica copiata in precedenza.

  7. Per verificare che il senza password SSH funzioni come previsto, connettersi al nodo leader ed eseguire il seguente comando.

    $ ssh member_node_private_ip

    La connessione al nodo membro non dovrebbe richiedere una chiave o una password.