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 à utiliser EFA et NCCL pour les charges de travail ML sur Amazon EC2
La bibliothèque de communications collectives NVIDIA (NCCL) est une bibliothèque de routines de communication collective standard pour plusieurs nœuds GPUs sur un ou plusieurs nœuds. La NCCL peut être utilisée conjointement avec EFA, Libfabric et MPI pour prendre en charge différentes charges de travail de Machine Learning. Pour plus d’informations, consultez le site web NCCL
Les étapes suivantes vous aideront à démarrer avec l’EFA et le NCCL en utilisant une AMI de base pour l’un des systèmes d’exploitation pris en charge.
Note
-
Seuls les types d’instance
p3dn.24xlarge
,p4d.24xlarge
etp5.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 avec EFA.
Pour plus d'informations sur l'exécution de charges de travail d'apprentissage automatique avec EFA et NCCL à l'aide d'un AWS Apprentissage profond (deep learning) AMIs, consultez la section Utilisation d'EFA sur le DLAMI dans le manuel du développeur.AWS Apprentissage profond (deep learning) AMIs
Étapes
- Étape 1 : Préparer un groupe de sécurité activé pour les EFA
- Étape 2 : Lancer une instance temporaire
- Étape 3 : Installer les pilotes GPU Nvidia, le Nvidia CUDA Toolkit et cuDNN
- Étape 4 : Installation GDRCopy
- Étape 5 : Installer le logiciel EFA
- Étape 6 : Installer NCCL
- Étape 7 : Installer les tests NCCL
- Étape 8 : Tester votre configuration EFA et NCCL
- Étape 9 : Installer vos applications de Machine Learning
- Étape 10 : Créer une AMI activée pour EFA et NCCL
- Étape 11 : Résilier l'instance temporaire
- Étape 12 : Lancer les instances activées pour EFA et NCCL dans un groupe de placement de cluster
- Étape 13 : Activer SSH sans mot de passe
Étape 1 : Préparer un groupe de sécurité activé pour les EFA
Un EFA a 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 à destination et en provenance de lui-même, et qui autorise le trafic SSH entrant depuis n'importe quelle IPv4 adresse pour la 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 règle SSH 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é activé pour EFA
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Dans le panneau de navigation, choisissez Security Groups (Groupes de sécurité), puis Create security group (Créer un groupe de sécurité).
-
Dans la fenêtre Create security group (Créer un groupe de sécurité), procédez comme suit :
-
Pour Nom du groupe de sécurité, saisissez un nom descriptif pour le groupe de sécurité, tel que
EFA-enabled security group
. -
(Facultatif) Pour Description, saisissez une brève description du groupe de sécurité.
-
Pour VPC, sélectionnez le VPC dans lequel vous prévoyez de lancer vos instances activées pour EFA.
-
Sélectionnez Create security group (Créer un groupe de sécurité).
-
-
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é).
-
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 :
-
Choisissez Ajouter une règle.
-
Pour Type, sélectionnez Tout le trafic.
-
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.
-
Choisissez Ajouter une règle.
-
Pour Type, choisissez SSH.
-
Pour Type de source, choisissez Anywhere- IPv4.
-
Sélectionnez Enregistrer les règles.
-
-
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 :
-
Choisissez Ajouter une règle.
-
Pour Type, sélectionnez Tout le trafic.
-
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.
-
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 logiciels EFA. Vous utilisez cette instance pour créer une AMI activée pour EFA depuis laquelle vous pouvez lancer vos instances activées pour EFA.
Pour lancer une instance temporaire
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Dans le volet de navigation, choisissez Instances, puis Launch Instances (Lancer des instances) pour ouvrir le nouvel assistant de lancement d’instance.
-
(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
-
Dans la section Application and OS Images (Images d’applications et de systèmes d’exploitation), sélectionnez une 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.
-
Dans la section Type d’instance, sélectionnez
p3dn.24xlarge
,p4d.24xlarge
oup5.48xlarge
. -
Dans la section Key pair (Paire de clés), sélectionnez la paire de clés à utiliser pour l’instance.
-
Dans la section Network settings (Paramètres réseau), choisissez Edit (Modifier), puis procédez comme suit :
-
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 pour EFA.
-
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.
-
Développez la section Configuration du 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 uniquement.
-
-
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, le message d’erreur
insufficient disk space
s’affichera lors de la tentative d’installation des pilotes Nvidia et de la boîte à outils CUDA. -
Dans le panneau Summary (Récapitulatif) à droite, choisissez Launch instance (Lancer l’instance).
Étape 3 : Installer les pilotes GPU Nvidia, le Nvidia CUDA Toolkit et cuDNN
Étape 4 : Installation GDRCopy
Installez GDRCopy pour améliorer les performances de Libfabric. Pour plus d'informationsGDRCopy, consultez le GDRCopy référentiel
Étape 5 : Installer le logiciel EFA
Installez le noyau compatible EFA, les pilotes EFA, Libfabric, le aws-ofi-nccl plugin et la pile Open MPI nécessaires pour prendre en charge EFA sur votre instance.
Pour installer le logiciel EFA
-
Connectez-vous à l’instance que vous avez lancée. Pour de plus amples informations, veuillez consulter Se connecter à votre instance Linux à l’aide de SSH.
-
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.38.0.tar.gzVous pouvez aussi obtenir la dernière version en remplaçant le numéro de version par
latest
dans la commande ci-dessus. (Facultatif) Vérifiez l’authenticité et l’intégrité du fichier tarball EFA (
.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érification du programme d’installation EFA à l’aide d’un total de contrôle
-
Téléchargez la clé publique GPG et importez-la dans votre porte-clés.
$
wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.keyLa commande doit renvoyer une valeur clé. Notez la valeur clé, car vous en aurez besoin lors de l’étape suivante.
-
Vérifiez l’empreinte digitale de la clé GPG. Exécutez la commande suivante et spécifiez la valeur clé que vous avez obtenue à l’étape précédente.
$
gpg --fingerprintkey_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 d’installation EFA et contactez Support. -
Téléchargez le fichier SIGNATURE et vérifiez la signature du fichier d’archive EFA.
$
wget https://efa-installer.amazonaws.com/aws-efa-installer-1.38.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.38.0.tar.gz.sigVoici 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 d’installation EFA et contactez Support.
-
-
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.38.0.tar.gz && cd aws-efa-installer -
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
--mpi=openmpi4
.$
sudo ./efa_installer.sh -y --mpi=openmpi4Libfabric est installé dans le
/opt/amazon/efa
répertoire. Le aws-ofi-nccl plugin est installé dans le/opt/amazon/ofi-nccl
répertoire. Open MPI est installé dans le/opt/amazon/openmpi
répertoire. -
Si le programme d’installation d’EFA 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.
-
Vérifiez que les composants logiciels EFA ont été installés avec succès.
$
fi_info -p efa -t FI_EP_RDMLa commande doit renvoyer des informations sur les interfaces EFA Libfabric. L’exemple suivant illustre la sortie de la commande.
-
p3dn.24xlarge
avec interface réseau uniqueprovider: 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
etp5.48xlarge
avec plusieurs interfaces réseauprovider: 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
Installez la NCCL. Pour plus d’informations sur la NCCL, consultez le référentiel NCCL
Pour installer la NCCL.
-
Accédez au répertoire
/opt
.$
cd /opt -
Clonez le référentiel officiel de la NCCL dans l’instance et accédez au référentiel cloné local.
$
sudo git clone https://github.com/NVIDIA/nccl.git -b v2.23.4-1 && cd nccl -
Créez et installez la NCCL et spécifiez le répertoire d’installation CUDA.
$
sudo make -j src.build CUDA_HOME=/usr/local/cuda
Étape 7 : Installer les tests NCCL
Installez les tests NCCL. Les tests NCCL vous permettent de vous assurer que NCCL a été installée correctement et qu’elle fonctionne normalement. Pour plus d’informations sur les tests NCCL, consultez le référentiel nccl-tests
Pour installer les tests NCCL
-
Accédez à votre répertoire de base.
$
cd $HOME -
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 -
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
-
-
Installez les tests NCCL et spécifiez les répertoires d'installation MPI, NCCL et CUDA.
$
make MPI=1 MPI_HOME=/opt/amazon/openmpi
NCCL_HOME=/opt/nccl/build
CUDA_HOME=/usr/local/cuda
Étape 8 : Tester votre configuration EFA et NCCL
Exécutez un test afin de vous assurer que votre instance temporaire est configurée correctement pour EFA et NCCL.
Pour tester votre configuration EFA et NCCL
-
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. -
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 leall_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
: (p4d.24xlarge
uniquement) utilise la fonctionnalité RDMA 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écifierVERSION
pour imprimer uniquement la version NCCL au début du test ouWARN
pour recevoir uniquement des messages d’erreur.
Pour plus d’informations sur les arguments de test NCCL, consultez le LISEZ-MOI sur les tests NCCL
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/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \ -x NCCL_DEBUG=INFO \ --hostfile my-hosts -n 8 -N 8 \ --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \ $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100 -
p4d.24xlarge
etp5.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/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \ -x NCCL_DEBUG=INFO \ --hostfile my-hosts -n 8 -N 8 \ --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \ $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
-
-
Vous pouvez confirmer que EFA est actif en tant que fournisseur sous-jacent pour NCCL lorsque le journal
NCCL_DEBUG
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 9 : 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 les 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 10 : Créer une AMI activée pour EFA et NCCL
Une fois que vous avez installé les composants logiciels requis, vous devez créer une AMI que vous pouvez réutiliser pour lancer vos instances activées pour EFA.
Pour créer une AMI à partir de votre instance temporaire
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Dans le panneau de navigation, choisissez Instances.
-
Sélectionnez l’instance temporaire que vous avez créée et choisissez Actions, Image, Créer une image.
-
Pour Créer une image, procédez comme suit :
-
Pour Nom de l’image, entrez un nom descriptif pour l’AMI.
-
(Facultatif) Pour Description de l’image, saisissez une brève description de l’objectif de l’AMI.
-
Choisissez Create image (Créer une image).
-
-
Dans le panneau de navigation, sélectionnez AMIs.
-
Recherchez l’AMI que vous avez créée dans la liste. Attendez que le statut passe de
pending
àavailable
avant de poursuivre avec l'étape suivante.
Étape 11 : 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
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Dans le panneau de navigation, choisissez Instances.
-
Sélectionnez l’instance temporaire que vous avez créée puis choisissez Actions, État de l’instance, Résilier l’instance.
-
Lorsque vous êtes invité à confirmer, choisissez Terminate (Mettre fin).
Étape 12 : Lancer les instances activées pour EFA et NCCL dans un groupe de placement de cluster
Lancez vos instances activées pour EFA et NCCL dans un groupe de placement du cluster à l'aide de l'AMI activée pour EFA et du groupe de sécurité activé pour EFA que vous avez créés précédemment.
Note
-
Vous ne devez pas impérativement lancer vos instances EFA dans un groupe de placement de cluster. Toutefois, nous vous recommandons d’exécuter vos instances activées pour EFA 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 Vous pouvez créer des réserves de capacité dans des groupes de placement de cluster..
Étape 13 : Activer SSH sans mot de passe
Pour permettre à vos applications de s'exécuter sur toutes les instances de votre cluster, vous devez activer l'accès SSH 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 SSH sans mot de passe entre les instances du cluster
-
Sélectionnez une instance dans le cluster en tant que nœud principal et connectez-vous à celle-ci.
-
Désactivez
strictHostKeyChecking
et activezForwardAgent
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
-
Générez une paire de clés RSA
$
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsaLa paire de clés est créée dans le répertoire
$HOME/.ssh/
. -
Modifiez les autorisations de la clé privée sur le nœud principal.
$
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config -
Ouvrez
~/.ssh/id_rsa.pub
à l’aide de l’éditeur de texte de votre choix et copiez la clé. -
Pour chaque nœud membre du cluster, procédez comme suit :
-
Connectez-vous à l’instance.
-
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.
-
-
Pour tester que le SSH sans mot de passe fonctionne comme prévu, connectez-vous à votre nœud principal et exécutez la commande suivante.
$
sshmember_node_private_ip
Vous devez vous connecter au nœud membre sans être invité à entrer une clé ou un mot de passe.