Commencez avec EFA et NCCL pour les charges de travail ML sur Amazon EC2 - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencez avec EFA et NCCL pour les charges de travail ML sur Amazon EC2

La bibliothèque de communications NVIDIA collectives (NCCL) est une bibliothèque de routines de communication collective standard pour GPUs plusieurs nœuds sur un ou plusieurs nœuds. NCCLpeut être utilisé avec EFA Libfabric et MPI pour prendre en charge diverses charges de travail d'apprentissage automatique. Pour plus d'informations, consultez le NCCLsite Web.

Les étapes suivantes vous aideront à démarrer EFA et à NCCL utiliser une base AMI pour l'un des systèmes d'exploitation pris en charge.

Note
  • Seuls les types d’instance p3dn.24xlargep4d.24xlargeet p5.48xlarge sont pris en charge.

  • Seuls Amazon Linux 2 et Ubuntu 20.04/22.04 base AMIs sont pris en charge.

  • Seule la NCCL version 2.4.2 et les versions ultérieures sont prises en charge avecEFA.

  • Pour plus d'informations sur l'exécution de charges de travail de machine learning avec EFA et NCCL à l'aide d'un AWS Apprentissage profond (deep learning) AMIs, consultez EFAla DLAMI section Utilisation du manuel du AWS Apprentissage profond (deep learning) AMIs développeur.

Étape 1 : préparer un groupe EFA de sécurité activé

Un EFA nécessite un groupe de sécurité qui autorise tout le trafic entrant et sortant à destination et en provenance du groupe de sécurité lui-même. La procédure suivante crée un groupe de sécurité qui autorise tout le trafic entrant et sortant à destination et en provenance de lui-même, et qui autorise le SSH trafic entrant depuis n'importe quelle IPv4 adresse à des fins de connectivité. SSH

Important

Ce groupe de sécurité n’est destiné qu’à des fins de test. Pour vos environnements de production, nous vous recommandons de créer une SSH règle entrante qui autorise le trafic uniquement en provenance de l'adresse IP à partir de laquelle vous vous connectez, telle que l'adresse IP de votre ordinateur ou d'une plage d'adresses IP de votre réseau local.

Pour d’autres scénarios, consultez Règles de groupe de sécurité pour différents cas d’utilisation.

Pour créer un groupe EFA de sécurité activé
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Security Groups (Groupes de sécurité), puis Create security group (Créer un groupe de sécurité).

  3. Dans la fenêtre Create security group (Créer un groupe de sécurité), procédez comme suit :

    1. Pour Nom du groupe de sécurité, saisissez un nom descriptif pour le groupe de sécurité, tel que EFA-enabled security group.

    2. (Facultatif) Pour Description, saisissez une brève description du groupe de sécurité.

    3. Pour VPC, sélectionnez l'instance VPC dans laquelle vous souhaitez lancer vos instances EFA activées.

    4. Sélectionnez Create security group (Créer un groupe de sécurité).

  4. Sélectionnez le groupe de sécurité que vous avez créé et dans l’onglet Details (Détails), copiez le Security group ID (ID du groupe de sécurité).

  5. En conservant la sélection du groupe de sécurité, choisissez Actions, Edit inbound rules (Modifier les règles entrantes), puis procédez comme suit :

    1. Choisissez Ajouter une règle.

    2. Pour Type, sélectionnez Tout le trafic.

    3. Pour Source type (Type de source), choisissez Custom (Personnalisée) et collez l’ID du groupe de sécurité que vous avez copié dans le champ.

    4. Choisissez Ajouter une règle.

    5. Pour Type, sélectionnez SSH.

    6. Pour Type de source, choisissez N'importe où- IPv4.

    7. Sélectionnez Enregistrer les règles.

  6. En conservant la sélection du groupe de sécurité, choisissez Actions, Edit outbound rules (Modifier les règles sortantes), puis procédez comme suit :

    1. Choisissez Ajouter une règle.

    2. Pour Type, sélectionnez Tout le trafic.

    3. Pour Destination type (Type de destination), choisissez Custom (Personnalisée) et collez l’ID du groupe de sécurité que vous avez copié dans le champ.

    4. Sélectionnez Enregistrer les règles.

Étape 2 : Lancer une instance temporaire

Lancez une instance temporaire que vous pouvez utiliser pour installer et configurer les composants EFA logiciels. Vous utilisez cette instance pour créer une instance EFA activée à AMI partir de laquelle vous pouvez lancer vos instances EFA activées.

Pour lancer une instance temporaire
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Instances, puis Launch Instances (Lancer des instances) pour ouvrir le nouvel assistant de lancement d’instance.

  3. (Facultatif) Dans la section Name and tags (Noms et identifications), fournissez un nom pour l’instance, tel que EFA-instance. Le nom est attribué à l’instance en tant qu’identification de ressource (Name=EFA-instance).

  4. Dans la section Images de l'application et du système d'exploitation, sélectionnez un AMI pour l'un des systèmes d'exploitation pris en charge. Seuls Amazon Linux 2, Ubuntu 20.04 et Ubuntu 22.04 sont pris en charge.

  5. Dans la section Type d’instance, sélectionnez p3dn.24xlargep4d.24xlarge ou p5.48xlarge.

  6. Dans la section Key pair (Paire de clés), sélectionnez la paire de clés à utiliser pour l’instance.

  7. Dans la section Network settings (Paramètres réseau), choisissez Edit (Modifier), puis procédez comme suit :

    1. Pour Sous-réseau, choisissez le sous-réseau dans lequel lancer l’instance. Si vous ne sélectionnez aucun sous-réseau, vous ne pouvez pas activer l'instance pourEFA.

    2. Pour Firewall (security groups) (Pare-feu (groupes de sécurité)), choisissez Sélectionner un groupe de sécurité existant (Select existing security group), puis sélectionnez le groupe de sécurité que vous avez créé à l’étape précédente.

    3. Développez la section Advanced network configuration (Configuration réseau avancée) et pour Elastic Fabric Adapter (EFA), sélectionnez Enable (Activer).

  8. Dans la section Storage (Stockage), configurez les volumes selon vos besoins.

    Note

    Vous devez fournir 10 à 20 GiB de stockage supplémentaires pour le Nvidia CUDA Toolkit. Si vous ne fournissez pas suffisamment de stockage, vous recevrez un insufficient disk space message d'erreur lorsque vous tenterez d'installer les pilotes et le CUDA kit d'outils Nvidia.

  9. Dans le panneau Summary (Récapitulatif) à droite, choisissez Launch instance (Lancer l’instance).

Étape 3 : Installation des GPU pilotes Nvidia, du CUDA kit d'outils Nvidia et du processeur DNN

Amazon Linux 2
Pour installer les GPU pilotes Nvidia, le CUDA kit d'outils Nvidia et cu DNN
  1. Pour vous assurer que tous vos packages logiciels sont mis à jour, effectuez une mise à jour logicielle rapide sur votre instance.

    $ sudo yum upgrade -y && sudo reboot

    Reconnectez-vous à votre instance après son redémarrage.

  2. Installez les utilitaires nécessaires à l'installation des GPU pilotes Nvidia et du CUDA kit d'outils Nvidia.

    $ sudo yum groupinstall 'Development Tools' -y
  3. Désactiver lenouveaupilotes Open Source.

    1. Installez les utilitaires requis et le package d’en-têtes de noyau correspondant à la version du noyau que vous exécutez actuellement.

      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    2. Ajoutez nouveau au fichier de liste de refus /etc/modprobe.d/blacklist.conf .

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. AjouterGRUB_CMDLINE_LINUX="rdblacklist=nouveau"vers legrub fichier et générez à nouveau la configuration Grub.

      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \ && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Redémarrez l’instance et reconnectez-vous à celle-ci.

  5. Préparer les référentiels requis

    1. Installez le EPEL référentiel pour votre distribution Linux DKMS et activez tous les dépôts facultatifs pour celle-ci.

      $ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    2. Installez la GPG clé publique du CUDA référentiel.

      $ distribution='rhel7'
    3. Configurez le référentiel CUDA réseau et mettez à jour le cache du référentiel.

      $ 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. (Noyau version 5.10 uniquement) Effectuez ces étapes uniquement si vous utilisez Amazon Linux 2 avec le noyau version 5.10. Si vous utilisez Amazon Linux 2 avec le noyau version 4.12, ignorez ces étapes. Pour vérifier la version de votre noyau, exécutezuname -r.

      1. Créez le fichier de configuration du pilote Nvidia nommé/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. (p4d.24xlarge et p5.48xlarge uniquement) Copiez le fichier de configuration du pilote Nvidia.

        $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
  6. Installez les GPU pilotes, le kit d'NVIDIACUDAoutils et le processeur NvidiaDNN.

    • 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 et 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. Redémarrez l’instance et reconnectez-vous à celle-ci.

  8. (p4d.24xlarge et p5.48xlarge uniquement) Démarrez le service Nvidia Fabric Manager et assurez-vous qu’il démarre automatiquement au démarrage de l’instance. Nvidia Fabric Manager est requis pour la gestion des commutateurs NV.

    $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
  9. Assurez-vous que les CUDA chemins sont définis à chaque démarrage de l'instance.

    • Pour les shells bash , ajoutez les instructions suivantes à /home/username/.bashrc et /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
    • Pour les shells tcsh , ajoutez les instructions suivantes à /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. Pour vérifier que les GPU pilotes Nvidia fonctionnent, exécutez la commande suivante.

    $ nvidia-smi -q | head

    La commande doit renvoyer des informations sur NvidiaGPUs, les GPU pilotes Nvidia et le CUDA kit d'outils Nvidia.

Ubuntu 20.04/22.04
Pour installer les GPU pilotes Nvidia, le CUDA kit d'outils Nvidia et cu DNN
  1. Pour vous assurer que tous vos packages logiciels sont mis à jour, effectuez une mise à jour logicielle rapide sur votre instance.

    $ sudo apt-get update && sudo apt-get upgrade -y
  2. Installez les utilitaires nécessaires à l'installation des GPU pilotes Nvidia et du CUDA kit d'outils Nvidia.

    $ sudo apt-get update && sudo apt-get install build-essential -y
  3. Pour utiliser le GPU pilote Nvidia, vous devez d'abord désactiver les pilotes nouveau open source.

    1. Installez les utilitaires requis et le package d’en-têtes de noyau correspondant à la version du noyau que vous exécutez actuellement.

      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
    2. Ajoutez nouveau au fichier de liste de refus /etc/modprobe.d/blacklist.conf .

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. Ouvrez le fichier /etc/default/grub à l’aide de l’éditeur de texte de votre choix et ajoutez ce qui suit.

      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
    4. Générez à nouveau la configuration Grub.

      $ sudo update-grub
  4. Redémarrez l’instance et reconnectez-vous à celle-ci.

  5. Ajoutez le CUDA référentiel et installez les GPU pilotes Nvidia, la NVIDIA CUDA boîte à outils et le processeurDNN.

    • 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 et 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. Redémarrez l’instance et reconnectez-vous à celle-ci.

  7. (p4d.24xlarge et p5.48xlarge uniquement) Installez Nvidia Fabric Manager.

    1. Vous devez installer la version de Nvidia Fabric Manager qui correspond à la version du module de noyau Nvidia que vous avez installée à l’étape précédente.

      Exécutez la commande suivante pour déterminer la version du module de noyau Nvidia.

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

      Voici un exemple de sortie.

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

      Dans l’exemple ci-dessus, la version principale 450 du module de noyau a été installée. Cela signifie que vous devez installer la version 450 de Nvidia Fabric Manager.

    2. Installez Nvidia Fabric Manager. Exécutez la commande suivante et spécifiez la version principale identifiée à l’étape précédente.

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

      Par exemple, si la version majeure 450 du module de noyau a été installée, utilisez la commande suivante pour installer la version correspondante de Nvidia Fabric Manager.

      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
    3. Démarrez le service et assurez-vous qu’il démarre automatiquement au démarrage de l’instance. Nvidia Fabric Manager est requis pour la gestion des commutateurs NV.

      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
  8. Assurez-vous que les CUDA chemins sont définis à chaque démarrage de l'instance.

    • Pour les shells bash , ajoutez les instructions suivantes à /home/username/.bashrc et /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
    • Pour les shells tcsh , ajoutez les instructions suivantes à /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. Pour vérifier que les GPU pilotes Nvidia fonctionnent, exécutez la commande suivante.

    $ nvidia-smi -q | head

    La commande doit renvoyer des informations sur NvidiaGPUs, les GPU pilotes Nvidia et le CUDA kit d'outils Nvidia.

Étape 4 : installation de GDRCopy

Installez GDRCopy pour améliorer les performances de Libfabric. Pour plus d'informations à ce sujetGDRCopy, consultez le GDRCopyréférentiel.

Amazon Linux 2
Pour installer GDRCopy
  1. Installez les dépendances obligatoires.

    $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
  2. Téléchargez et extrayez le GDRCopy package.

    $ 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. Créez le GDRCopy RPM package.

    $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
  4. Installez le GDRCopy RPM package.

    $ 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
Pour installer GDRCopy
  1. Installez les dépendances obligatoires.

    $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
  2. Téléchargez et extrayez le GDRCopy package.

    $ 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. Créez le GDRCopy RPM package.

    $ CUDA=/usr/local/cuda ./build-deb-packages.sh
  4. Installez le GDRCopy RPM package.

    $ 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

Étape 5 : Installation du EFA logiciel

Installez le noyau EFA activé, EFA les pilotes, Libfabric et Open MPI Stack nécessaires à la prise en charge de votre EFA instance temporaire.

Pour installer le logiciel EFA
  1. Connectez-vous à l’instance que vous avez lancée. Pour de plus amples informations, veuillez consulter Connectez-vous à votre instance Linux à l'aide de SSH.

  2. Téléchargez les fichiers d'installation du logiciel EFA. Les fichiers d’installation du logiciel sont packagés dans un fichier d’archive compressé (.tar.gz). Pour télécharger la version stable la plus récente, utilisez la commande suivante.

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

    Vous pouvez aussi obtenir la dernière version en remplaçant le numéro de version par latest dans la commande ci-dessus.

  3. (Facultatif) Vérifiez l'authenticité et l'intégrité du fichier EFA tarball (.tar.gz).

    Nous vous recommandons de le faire pour vérifier l’identité de l’éditeur du logiciel et pour vérifier que le fichier n’a pas été modifié ou endommagé depuis sa publication. Si vous ne souhaitez pas vérifier le fichier d’archive, ignorez cette étape.

    Note

    Sinon, si vous préférez vérifier le fichier tarball en utilisant plutôt une SHA256 somme de contrôle MD5 ou, consultez. Vérifiez le EFA programme d'installation à l'aide d'une somme de contrôle

    1. Téléchargez la GPG clé publique et importez-la dans votre trousseau de clés.

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

      La commande doit renvoyer une valeur clé. Notez la valeur clé, car vous en aurez besoin lors de l’étape suivante.

    2. Vérifiez l'empreinte digitale de la GPG clé. Exécutez la commande suivante et spécifiez la valeur clé que vous avez obtenue à l’étape précédente.

      $ gpg --fingerprint key_value

      La commande doit renvoyer une empreinte digitale identique à 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC. Si l'empreinte digitale ne correspond pas, n'exécutez pas le script EFA d'installation et contactez AWS Support.

    3. Téléchargez le fichier de signature et vérifiez la signature du fichier EFA tarball.

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

      Voici un exemple de sortie.

      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

      Si le résultat inclut Good signature et que l’empreinte digitale correspond à l’empreinte digitale renvoyée à l’étape précédente, passez à l’étape suivante. Si ce n'est pas le cas, n'exécutez pas le script EFA d'installation et contactez AWS Support.

  4. Procédez à l’extraction des fichiers à partir du fichier compressé .tar.gz et accédez au répertoire extrait.

    $ tar -xf aws-efa-installer-1.35.0.tar.gz && cd aws-efa-installer
  5. Exécutez le script d'installation du logicielEFA.

    Note

    À partir de la version EFA 1.30.0, Open MPI 4 et Open MPI 5 sont installés par défaut. À moins que vous n'ayez besoin d'Open MPI 5, nous vous recommandons de n'installer qu'Open MPI 4. La commande suivante installe uniquement Open MPI 4. Si vous souhaitez installer Open MPI 4 et Open MPI 5, supprimez-les--mpi=openmpi4.

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

    Libfabric est installé dans le /opt/amazon/efa répertoire, tandis qu'Open MPI est installé dans le /opt/amazon/openmpi répertoire.

  6. Si le EFA programme d'installation vous invite à redémarrer l'instance, faites-le, puis reconnectez-vous à l'instance. Sinon, déconnectez-vous de l’instance, puis reconnectez-vous pour terminer l’installation.

  7. Vérifiez que les composants EFA logiciels ont été correctement installés.

    $ fi_info -p efa -t FI_EP_RDM

    La commande doit renvoyer des informations sur les EFA interfaces Libfabric. L’exemple suivant illustre la sortie de la commande.

    • p3dn.24xlarge avec interface réseau unique

      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 et p5.48xlarge avec plusieurs interfaces réseau

      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

Étape 6 : Installation NCCL

InstallezNCCL. Pour plus d'informations à ce sujetNCCL, consultez le NCCLréférentiel.

Pour installer NCCL
  1. Accédez au répertoire /opt.

    $ cd /opt
  2. Clonez le NCCL référentiel officiel sur l'instance et accédez au référentiel cloné local.

    $ sudo git clone https://github.com/NVIDIA/nccl.git && cd nccl
  3. Compilez, installez NCCL et spécifiez le répertoire CUDA d'installation.

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

Étape 7 : Installation du aws-ofi-nccl plugin

Le aws-ofi-nccl plugin fait correspondre le transport orienté connexion NCCL de Libfabric APIs à l'interface fiable sans connexion de Libfabric. Cela vous permet d'utiliser Libfabric en tant que fournisseur de réseau lors de l'exécution d'applications NCCL basées sur des applications. Pour plus d'informations sur le aws-ofi-nccl plugin, consultez le aws-ofi-nccl référentiel.

Pour installer le plug-in aws-ofi-nccl
  1. Accédez à votre répertoire de base.

    $ cd $HOME
  2. Installez les utilitaires requis.

    • Amazon Linux 2

      $ sudo yum install hwloc-devel
    • Ubuntu

      $ sudo apt-get install libhwloc-dev
  3. Téléchargez les fichiers du aws-ofi-nccl plugin. Les fichiers sont packagés dans un fichier d’archive compressé (.tar.gz).

    $ wget https://github.com/aws/aws-ofi-nccl/releases/download/v1.11.0-aws/aws-ofi-nccl-1.11.0-aws.tar.gz
  4. Procédez à l’extraction des fichiers à partir du fichier compressé .tar.gz et accédez au répertoire extrait.

    $ tar -xf aws-ofi-nccl-1.11.0-aws.tar.gz && cd aws-ofi-nccl-1.11.0-aws
  5. Pour générer les fichiers make, exécutez le configure script et spécifiez les répertoiresMPI, Libfabric NCCL et CUDA d'installation.

    $ ./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. Ajoutez le MPI répertoire Open à la PATH variable.

    $ export PATH=/opt/amazon/openmpi/bin/:$PATH
  7. Installez le plug-in aws-ofi-nccl.

    $ make && sudo make install

Étape 8 : Installation des NCCL tests

Installez les NCCL tests. Les NCCL tests vous permettent de confirmer qu'il NCCL est correctement installé et qu'il fonctionne comme prévu. Pour plus d'informations sur les NCCL tests, consultez le référentiel nccl-tests.

Pour installer les NCCL tests
  1. Accédez à votre répertoire de base.

    $ cd $HOME
  2. Clonez le référentiel officiel nccl-tests dans l’instance et accédez au référentiel cloné local.

    $ git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests
  3. Ajoutez le répertoire Libfabric à la variable 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. Installez les NCCL tests et spécifiez les répertoires CUDA d'installation MPINCCL, et.

    $ make MPI=1 MPI_HOME=/opt/amazon/openmpi NCCL_HOME=/opt/nccl/build CUDA_HOME=/usr/local/cuda

Étape 9 : Testez votre NCCL configuration EFA et

Exécutez un test pour vous assurer que votre instance temporaire est correctement configurée pour EFA etNCCL.

Pour tester votre NCCL configuration EFA et
  1. Créez un fichier hôte qui spécifie les hôtes sur lesquels les tests doivent être exécutés. La commande suivante crée un fichier hôte nommé my-hosts qui inclut une référence à l’instance elle-même.

    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. Exécutez le test et spécifiez le fichier hôte (--hostfile) et le nombre de fichiers GPUs à utiliser (-n). La commande suivante exécute le all_reduce_perf test sur 8 GPUs sur l'instance elle-même et spécifie les variables d'environnement suivantes.

    • FI_EFA_USE_DEVICE_RDMA=1— utilise (p4d.24xlargeuniquement) les RDMA fonctionnalités de l'appareil pour les transferts unilatéraux et recto verso.

    • NCCL_DEBUG=INFO : permet des sorties de débogage détaillées. Vous pouvez également spécifier VERSION d'imprimer uniquement la NCCL version au début du test ou de ne WARN recevoir que des messages d'erreur.

    Pour plus d'informations sur les arguments de NCCL test, consultez les NCCLtests README dans le référentiel officiel 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 et 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. Vous pouvez confirmer qu'il EFA est actif en tant que fournisseur sous-jacent NCCL lorsque le NCCL_DEBUG journal est imprimé.

    ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*

    Les informations supplémentaires suivantes s’affichent lors de l’utilisation d’une instance 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

Étape 10 : Installer vos applications de Machine Learning

Installez les applications de machine learning sur l’instance temporaire. La procédure d’installation varie selon l’application de machine learning spécifique. Pour plus d'informations sur l'installation de logiciels sur votre instance Linux, consultez Gérer le logiciel sur votre instance Amazon Linux 2.

Note

Reportez-vous à la documentation de votre application de machine learning pour obtenir des instructions d’installation.

Étape 11 : Création EFA d'NCCLun AMI

Après avoir installé les composants logiciels requis, vous en créez un AMI que vous pouvez réutiliser pour lancer vos instances EFA compatibles.

Pour créer un fichier AMI à partir de votre instance temporaire
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Instances.

  3. Sélectionnez l’instance temporaire que vous avez créée et choisissez Actions, Image, Créer une image.

  4. Pour Créer une image, procédez comme suit :

    1. Dans Nom de l'image, entrez un nom descriptif pourAMI.

    2. (Facultatif) Dans Description de l'image, entrez une brève description de l'objectif duAMI.

    3. Choisissez Create image (Créer une image).

  5. Dans le volet de navigation, choisissez AMIs.

  6. Localisez le AMI fichier que vous avez créé dans la liste. Attendez que le statut passe de pending à available avant de poursuivre avec l’étape suivante.

Étape 12 : Résilier l’instance temporaire

À ce stade, vous n’avez plus besoin de l’instance temporaire que vous avez lancée. Vous pouvez résilier l’instance pour arrêter d’être facturé pour celle-ci.

Pour résilier l’instance temporaire
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Instances.

  3. Sélectionnez l’instance temporaire que vous avez créée puis choisissez Actions, État de l’instance, Résilier l’instance.

  4. Lorsque vous êtes invité à confirmer, choisissez Terminate (Mettre fin).

Étape 13 : Lancer EFA et NCCL activer des instances dans un groupe de placement de clusters

Lancez vos instances NCCL activées EFA et activées dans un groupe de placement de clusters à l'aide du groupe de sécurité EFA activé AMI et du groupe de sécurité EFA activé que vous avez créés précédemment.

Note
  • Il n'est pas obligatoire de lancer vos instances EFA activées dans un groupe de placement de clusters. Toutefois, nous vous recommandons d'exécuter vos instances EFA activées dans un groupe de placement de clusters, car cela les lance dans un groupe à faible latence dans une seule zone de disponibilité.

  • Pour vous assurer que la capacité est disponible lorsque vous mettez à l’échelle les instances de votre cluster, vous pouvez créer une réserve de capacité pour votre groupe de placement du cluster. Pour plus d’informations, consultez Création de réservations de capacité dans des groupes de placement de clusters.

New console
Pour lancer une instance temporaire
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Instances, puis Launch Instances (Lancer des instances) pour ouvrir le nouvel assistant de lancement d’instance.

  3. (Facultatif) Dans la section Name and tags (Noms et identifications), fournissez un nom pour l’instance, tel que EFA-instance. Le nom est attribué à l’instance en tant qu’identification de ressource (Name=EFA-instance).

  4. Dans la section Images de l'application et du système d'exploitationAMIs, choisissez Mon, puis sélectionnez celle AMI que vous avez créée à l'étape précédente.

  5. Dans la section Instance type (Type d’instance), sélectionnez p3dn.24xlarge ou p4d.24xlarge.

  6. Dans la section Key pair (Paire de clés), sélectionnez la paire de clés à utiliser pour l’instance.

  7. Dans la section Network settings (Paramètres réseau), choisissez Edit (Modifier), puis procédez comme suit :

    1. Pour Sous-réseau, choisissez le sous-réseau dans lequel lancer l’instance. Si vous ne sélectionnez aucun sous-réseau, vous ne pouvez pas activer l'instance pourEFA.

    2. Pour Firewall (security groups) (Pare-feu (groupes de sécurité)), choisissez Sélectionner un groupe de sécurité existant (Select existing security group), puis sélectionnez le groupe de sécurité que vous avez créé à l’étape précédente.

    3. Développez la section Advanced network configuration (Configuration réseau avancée) et pour Elastic Fabric Adapter (EFA), sélectionnez Enable (Activer).

  8. (Facultatif) Dans la section Storage (Stockage), configurez les volumes selon vos besoins.

  9. Dans la section Advanced details (Détails avancés), pour Placement group name (Nom du groupe de placement), sélectionnez le groupe de placement du cluster dans lequel lancer l’instance. Si vous avez besoin de créer un groupe de placement du cluster, choisissez Create new placement group (Créer un groupe de placement).

  10. Dans le panneau Résumé sur la droite, pour Nombre d'instances, entrez le nombre d'instances EFA activées que vous souhaitez lancer, puis choisissez Launch instance.

Old console
Pour lancer vos instances NCCL compatibles EFA et dans un groupe de placement de clusters
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Choisissez Launch Instances (Lancer les instances).

  3. Sur la AMI page Choisir un, choisissez Mon AMIs, recherchez celui AMI que vous avez créé précédemment, puis sélectionnez Sélectionner.

  4. Sur la page Choisir un type d’instance, sélectionnez p3dn.24xlarge, puis choisissez Suivant : configurer les détails d’instance.

  5. Sur la page Configurer les détails de l’instance, procédez de la façon suivante :

    1. Dans le champ Nombre d'instances, entrez le nombre EFA d'instances NCCL activées que vous souhaitez lancer.

    2. Pour Réseau et sous-réseau, sélectionnez le sous-réseau VPC et dans lequel vous souhaitez lancer les instances.

    3. Pour le Groupe de placement, sélectionnez Ajoutez une instance au groupe de placement.

    4. Pour Nom du groupe de placement, sélectionnez Ajouter à un nouveau groupe de placement, puis saisissez un nom descriptif pour le groupe de placement. Ensuite, pour Stratégie du groupe de placement, sélectionnez Cluster.

    5. Pour EFA, choisissez Enable (Activer).

    6. Dans la section Interfaces réseau, pour l’appareil eth0, choisissez Nouvelle interface réseau. Vous pouvez éventuellement spécifier une IPv4 adresse principale et une ou plusieurs IPv4 adresses secondaires. Si vous lancez l'instance dans un sous-réseau associé à un IPv6 CIDR bloc, vous pouvez éventuellement spécifier une IPv6 adresse principale et une ou plusieurs IPv6 adresses secondaires.

    7. Choisissez Next: Add Storage (Suivant : Ajouter le stockage).

  6. Sur la page Ajouter du stockage, spécifiez les volumes à associer aux instances en plus des volumes spécifiés par le AMI (comme le volume du périphérique racine). Choisissez ensuite Suivant : Ajouter des balises.

  7. Sur la page Ajouter des balises, spécifiez des balises pour l’instance, par exemple un nom évocateur, puis sélectionnez Suivant : Configurer le groupe de sécurité.

  8. Sur la page Configurer le groupe de sécurité, cliquez sur Attribuer un groupe de sécurité, choisissez Sélectionner un groupe de sécurité existant, puis le groupe de sécurité que vous avez créé précédemment.

  9. Choisissez Vérifier et lancer.

  10. Sur la page Examiner le lancement de l’instance, vérifiez les paramètres, puis choisissez Lancer pour sélectionner une paire de clés et lancer votre instance.

Étape 14 : activer le mode sans mot de passe SSH

Pour permettre à vos applications de s'exécuter sur toutes les instances de votre cluster, vous devez activer l'SSHaccès sans mot de passe entre le nœud principal et les nœuds membres. Le nœud principal est l’instance à partir de laquelle vous exécutez vos applications. Les instances restantes du cluster sont les nœuds membres.

Pour activer le mode sans mot de passe SSH entre les instances du cluster
  1. Sélectionnez une instance dans le cluster en tant que nœud principal et connectez-vous à celle-ci.

  2. Désactivez strictHostKeyChecking et activez ForwardAgent sur le nœud principal. Ouvrez le fichier ~/.ssh/config à l’aide de l’éditeur de texte de votre choix et ajoutez ce qui suit.

    Host * ForwardAgent yes Host * StrictHostKeyChecking no
  3. Générez une paire de RSA clés.

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

    La paire de clés est créée dans le répertoire $HOME/.ssh/.

  4. Modifiez les autorisations de la clé privée sur le nœud principal.

    $ chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config
  5. Ouvrez ~/.ssh/id_rsa.pub à l’aide de l’éditeur de texte de votre choix et copiez la clé.

  6. Pour chaque nœud membre du cluster, procédez comme suit :

    1. Connectez-vous à l’instance.

    2. Ouvrez ~/.ssh/authorized_keys à l’aide de l’éditeur de texte de votre choix et ajoutez la clé publique que vous avez copiée plus tôt.

  7. Pour vérifier que le système sans mot de passe SSH fonctionne comme prévu, connectez-vous à votre nœud principal et exécutez la commande suivante.

    $ ssh member_node_private_ip

    Vous devez vous connecter au nœud membre sans être invité à entrer une clé ou un mot de passe.