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 NVIDIA Collective Communications Library (NCCL) est une bibliothèque de routines de communication collectives standard pour GPUs plusieurs nœuds ou plusieurs nœuds. NCCLpeut être utilisé conjointement avec EFA Libfabric et MPI pour prendre en charge différentes charges de travail de Machine Learning. Pour plus d'informations, consultez le NCCLsite web.

Les étapes suivantes vous permettent de commencer EFA à 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 NCCL 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 de sécurité EFA activé pour les

Un a a a EFA besoin d'un groupe de sécurité qui autorise tout le trafic entrant et sortant vers et depuis le groupe de sécurité proprement dit. La procédure suivante crée un groupe de sécurité qui autorise tout le trafic entrant et sortant vers et depuis 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 à partir de l'adresse IP à partir de laquelle vous vous connectez, telle que l'adresse IP de votre ordinateur ou 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 de sécurité EFA activé pour les
  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 Anywhere- 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 EFA activée AMI pour. Vous pouvez lancer vos instances EFA activées pour.

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 pas de 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 Configuration réseau avancée.

      Pour l'interface réseau 1, sélectionnez Index de la carte réseau = 0, Index du périphérique = 0 et Type d'interface = EFA avec ENA.

      (Facultatif) Si vous utilisez un type d'instance multicarte, tel que p4d.24xlarge oup5.48xlarge, pour chaque interface réseau supplémentaire requise, choisissez Ajouter une interface réseau, pour Index de carte réseau, sélectionnez le prochain index non utilisé, puis sélectionnez Index du périphérique = 1 et Type d'interface = EFA avec ENA ou EFA-only.

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

    Note

    Vous devez provisionner un stockage supplémentaire de 10 à 20 GiB pour le Nvidia CUDA Toolkit. Si vous ne disposez pas d'un espace de stockage suffisant, un message d'insufficient disk spaceerreur s'affichera lors de la tentative d'installation des pilotes et de la boîte à CUDA outils Nvidia.

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

Étape 3 : Installer GPU les pilotes Nvidia, le Nvidia CUDA Toolkit et cu DNN

Amazon Linux 2
Pour installer les GPU pilotes Nvidia, le Nvidia CUDA Toolkit 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 pour l'installation des GPU pilotes Nvidia et du Nvidia CUDA toolkit.

    $ 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 les référentiels optionnels pour votre distribution Linux.

      $ 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 d'accès sont définis chaque fois que l'instance démarre.

    • 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 sont fonctionnels, exécutez la commande suivante.

    $ nvidia-smi -q | head

    La commande doit renvoyer des informations sur NvidiaGPUs, les GPU pilotes Nvidia et le Nvidia CUDA Toolkit.

Ubuntu 20.04/22.04
Pour installer les GPU pilotes Nvidia, le Nvidia CUDA Toolkit 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 pour l'installation des GPU pilotes Nvidia et du Nvidia CUDA toolkit.

    $ 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 d'accès sont définis chaque fois que l'instance démarre.

    • 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 sont fonctionnels, exécutez la commande suivante.

    $ nvidia-smi -q | head

    La commande doit renvoyer des informations sur NvidiaGPUs, les GPU pilotes Nvidia et le Nvidia CUDA Toolkit.

Étape 4 : installation de GDRCopy

Installer GDRCopy pour améliorer les performances de Libfabric. Pour plus d'informationsGDRCopy, 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 : Installer le EFA logiciel

Installez le noyau EFA activé pour, EFA les pilotes, Libfabric et Open MPI Stack requis pour prendre en charge 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.37.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 d'archive à l'aide d'un SHA256 total de contrôle MD5 ou à la place, consultez. Vérification du EFA programme d'installation à l'aide d'un total de contrôle

    1. Téléchargez la GPG clé publique et importez-la dans votre porte-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érifier 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 SIGNATURE et vérifiez la signature du fichier d'EFAarchive.

      $ 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

      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.37.0.tar.gz && cd aws-efa-installer
  5. Exécutez le script d'installation du logicielEFA.

    Note

    Depuis 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 Open MPI 4 uniquement. 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 et 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é installés avec succè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 : Installer NCCL

InstallezNCCL. Pour plus d'informationsNCCL, 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 à l'instance et accédez au référentiel cloné local.

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

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

Étape 7 : Installer le aws-ofi-nccl plugin

Le aws-ofi-nccl plug-in mappe le transport orienté connexion NCCL du APIs à l'interface fiable sans connexion de Libfabric. Cela vous permet d'utiliser Libfabric comme fournisseur de réseau tout en exécutant des 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 obligatoires.

    • 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.13.0-aws/aws-ofi-nccl-1.13.0.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.13.0.tar.gz && cd aws-ofi-nccl-1.13.0
  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 : Installer les NCCL tests

Installez les NCCL tests. Les NCCL tests vous permettent de vous assurer qu'il NCCL est correctement installé et qu'il fonctionne normalement. Pour de plus amples informations sur les NCCL tests, veuillez consulter 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 : Tester votre NCCL configuration EFA et

Exécutez un test afin de vous assurer que votre instance temporaire est configurée correctement 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 du périphérique pour le transfert unilatéral et bilatéral.

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

    Pour plus d'informations sur les arguments de NCCL test, consultez les NCCLtests README dans le référentiel nccl-tests officiel.

    • 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 du logiciel sur votre instance Linux, consultez Gestion de logiciels 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

Une fois que vous avez installé les composants logiciels requis, vous devez créer un AMI que vous pouvez réutiliser pour lancer vos instances EFA activées pour.

Pour créer un 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. Pour Nom de l'image, saisissez un nom descriptif pour l'AMI.

    2. (Facultatif) Dans le champ Description de l'image, saisissez une brève description de l'objectif deAMI.

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

  5. Dans le panneau de navigation, choisissez AMIs.

  6. Recherchez le à AMI l'écran 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 les instances dans un groupe de placement de cluster

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

Note
  • Vous ne devez pas impérativement lancer vos EFA instances dans un groupe de placement de cluster. Toutefois, nous vous recommandons d'exécuter vos instances EFA activées pour dans un groupe de placement de cluster, car cela lance celles-ci dans un groupe à faible latence au sein d'une zone de disponibilité unique.

  • 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éserves de capacité dans des groupes de placement de cluster.

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 Application and OS Images (Mes applications et systèmes d'exploitation)AMIs, choisissez My (Mes Mes), puis sélectionnez AMI celle 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 pas de 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 Configuration réseau avancée.

      Pour l'interface réseau 1, sélectionnez Index de la carte réseau = 0, Index du périphérique = 0 et Type d'interface = EFA avec ENA.

      (Facultatif) Si vous utilisez un type d'instance multicarte, tel que p4d.24xlarge oup5.48xlarge, pour chaque interface réseau supplémentaire requise, choisissez Ajouter une interface réseau, pour Index de carte réseau, sélectionnez le prochain index non utilisé, puis sélectionnez Index du périphérique = 1 et Type d'interface = EFA eith ENA ou EFA-only.

  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é de 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 des instances NCCL activées pour EFA et dans un groupe de placement de cluster
  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. Pour Nombre d'instances, saisissez le nombre d'instances NCCL activées pour EFA et activées pour.

    2. Pour Réseau et sous-réseau, sélectionnez le sous-réseau VPC et dans lequel 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 entrer une IPv4 adresse principale et une ou plusieurs IPv4 adresses secondaires. Si vous lancez l'instance dans un sous-réseau auquel un IPv6 CIDR bloc est associé, 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 un stockage, spécifiez les volumes à attacher aux instances, outre ceux spécifiés par le AMI (par exemple, 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 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 du nœud principal aux 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 l'absence de 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 tester que le 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.