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.
Étape 2 : Lancer un job de formation à l'aide du SDK SageMaker Python
Le SDK SageMaker Python prend en charge l'entraînement géré des modèles avec des frameworks ML tels que TensorFlow et PyTorch. Pour lancer une tâche de formation à l'aide de l'un de ces frameworks, vous devez définir un SageMaker TensorFlow estimateur, un estimateur ou
Rubriques
Utilisation des SageMaker TensorFlow PyTorch estimateurs et
Les classes TensorFlow et PyTorch estimator contiennent le distribution
paramètre, que vous pouvez utiliser pour spécifier des paramètres de configuration pour l'utilisation de frameworks d'apprentissage distribués. La bibliothèque SageMaker model parallel utilise en interne MPI pour les données hybrides et le parallélisme des modèles. Vous devez donc utiliser l'option MPI avec la bibliothèque.
Le modèle d' PyTorch estimateur TensorFlow or suivant montre comment configurer le distribution
paramètre d'utilisation de la bibliothèque model parallel SageMaker avec MPI.
Pour activer la bibliothèque, vous devez transmettre des dictionnaires de configuration aux "mpi"
clés "smdistributed"
et via l'distribution
argument des constructeurs de l' SageMaker estimateur.
Paramètres de configuration pour le parallélisme SageMaker du modèle
-
Pour la clé
"smdistributed"
, transmettez un dictionnaire avec la clé"modelparallel"
et les dictionnaires internes suivants.Note
L'utilisation de
"modelparallel"
et"dataparallel"
dans la même tâche d'entraînement n'est pas pris en charge.-
"enabled"
: obligatoire. Pour activer le parallélisme des modèles, définissez"enabled": True
. -
"parameters"
: obligatoire. Spécifiez un ensemble de paramètres pour le parallélisme SageMaker du modèle.-
Pour une liste complète des paramètres courants, consultez la section Paramètres pour
smdistributed
dans la documentation du SDK SageMaker Python. Pour TensorFlow, voir Paramètres TensorFlow spécifiques
. Pour PyTorch, voir Paramètres PyTorch spécifiques
. -
"pipeline_parallel_degree"
(ou"partitions"
danssmdistributed-modelparallel<v1.6.0
) — obligatoire. Parmi les paramètres desmdistributed
, ce paramètre est nécessaire pour spécifier le nombre de partitions de modèle dans lesquelles vous souhaitez effectuer la répartition. Important
Il y a une modification avec rupture dans le nom du paramètre. Le paramètre
"pipeline_parallel_degree"
remplace les"partitions"
depuis la v1.6.0 desmdistributed-modelparallel
. Pour plus d'informations, consultez la section Paramètres communspour la configuration SageMaker du parallélisme des modèles et les notes de version de SageMaker Distributed Model Parallel dans la documentation du SDK SageMaker Python.
-
-
-
Pour la clé
"mpi"
, transmettez un dictionnaire contenant les éléments suivants :-
"enabled"
: obligatoire. Permet àTrue
de lancer la tâche d'entraînement distribuée avec MPI. -
"processes_per_host"
: obligatoire. Spécifiez le nombre de processus que la MPI doit lancer sur chaque hôte. Dans SageMaker, un hôte est une instance Amazon EC2 ML unique. Le SDK SageMaker Python assure le one-to-one mappage entre les processus et les GPU à travers le parallélisme des modèles et des données. Cela signifie que SageMaker chaque processus est planifié sur un seul GPU distinct et qu'aucun GPU ne contient plus d'un processus. Si vous utilisez PyTorch, vous devez limiter chaque processus à son propre appareiltorch.cuda.set_device(smp.local_rank())
. Pour en savoir plus, veuillez consulter la section Fractionnement automatique avec PyTorch.Important
process_per_host
ne doit pas être supérieur au nombre de GPU par instance. Généralement, il est égal à ce nombre. -
"custom_mpi_options"
(obligatoire) : utilisez cette clé pour transmettre toutes les options MPI personnalisées dont vous pouvez avoir besoin. Si vous ne transmettez aucune option personnalisée MPI à la clé, l'option MPI est définie par défaut sur l'indicateur suivant.--mca btl_vader_single_copy_mechanism none
Note
Vous n'avez pas besoin de spécifier explicitement cet indicateur par défaut à la clé. Si vous le spécifiez explicitement, votre tâche d'entraînement parallèle de modèle distribué peut échouer avec l'erreur suivante :
The following MCA parameter has been listed multiple times on the command line: MCA param: btl_vader_single_copy_mechanism MCA parameters can only be listed once on a command line to ensure there is no ambiguity as to its value. Please correct the situation and try again.
Astuce
Si vous lancez une tâche d'entraînement à l'aide d'un type d'instance compatible EFA, tel que
ml.p4d.24xlarge
etml.p3dn.24xlarge
, utilisez l'indicateur suivant pour de meilleures performances :-x FI_EFA_USE_DEVICE_RDMA=1 -x FI_PROVIDER=efa -x RDMAV_FORK_SAFE=1
-
Pour lancer la tâche d'entraînement à l'aide de l'estimateur et du script d'entraînement configuré en SageMaker parallèle de votre modèle, exécutez la estimator.fit()
fonction.
Utilisez les ressources suivantes pour en savoir plus sur l'utilisation des fonctionnalités de parallélisme des modèles dans le SDK SageMaker Python :
-
Nous vous recommandons d'utiliser une instance de SageMaker bloc-notes si vous êtes de nouveaux utilisateurs. Pour voir un exemple de la façon dont vous pouvez lancer une tâche de formation à l'aide d'une instance de SageMaker bloc-notes, consultezExemples de bibliothèque SageMaker de parallélisme de modèles Amazon v2.
-
Vous pouvez également envoyer une tâche d'entraînement distribué à partir de votre machine en utilisant AWS CLI. Pour effectuer AWS CLI la configuration sur votre machine, consultez les sections Configurer vos AWS informations d'identification et Région pour le développement.
Étendre un conteneur Docker prédéfini qui contient SageMaker la bibliothèque parallèle de modèles distribués
Pour étendre un conteneur prédéfini et utiliser SageMaker sa bibliothèque de modèles de parallélisme, vous devez utiliser l'une des images AWS Deep Learning Containers (DLC) disponibles pour ou. PyTorch TensorFlow La bibliothèque de parallélisme des SageMaker modèles est incluse dans les images DLC TensorFlow (2.3.0 et versions ultérieures) et PyTorch (1.6.0 et versions ultérieures) avec CUDA (). cuxyz
Pour obtenir la liste complète des images des DLC, consultez la section Images Deep Learning Containers disponibles
Astuce
Nous vous recommandons d'utiliser l'image contenant la dernière version TensorFlow ou d'accéder PyTorch à la version la plus récente de la up-to-date bibliothèque de parallélisme de SageMaker modèles.
Par exemple, votre Dockerfile devrait contenir une instruction FROM
similaire à la suivante :
# Use the SageMaker DLC image URI for TensorFlow or PyTorch FROM
aws-dlc-account-id
.dkr.ecr.aws-region
.amazonaws.com/framework
-training:{framework-version-tag}
# Add your dependencies here RUN...
ENV PATH="/opt/ml/code:${PATH}
" # this environment variable is used by the SageMaker container to determine our user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
En outre, lorsque vous définissez un TensorFlow estimateur PyTorch or, vous devez le spécifier entry_point
pour votre script d'entraînement. Il doit être identique au chemin d'accès que celui identifié avec ENV SAGEMAKER_SUBMIT_DIRECTORY
dans votre Dockerfile.
Astuce
Vous devez transférer ce conteneur Docker vers Amazon Elastic Container Registry (Amazon ECR) et utiliser l'URI de l'image (image_uri
) pour définir un estimateur pour l'entraînement. SageMaker Pour plus d’informations, consultez Extension d'un conteneur préconçu.
Une fois que vous avez fini d'héberger le conteneur Docker et d'avoir récupéré l'URI de l'image du conteneur, créez un objet SageMaker PyTorch
estimateur comme suit. Cet exemple suppose que vous avez déjà défini les smp_options
et mpi_options
.
smd_mp_estimator = Estimator( entry_point="
your_training_script.py
", role=sagemaker.get_execution_role(), instance_type='ml.p3.16xlarge
', sagemaker_session=sagemaker_session, image_uri='your_aws_account_id
.dkr.ecr.region
.amazonaws.com/name
:tag
' instance_count=1
,distribution={ "smdistributed": smp_options, "mpi": mpi_options },
base_job_name="SMD-MP-demo
", ) smd_mp_estimator.fit('s3://my_bucket/my_training_data/')
Créez votre propre conteneur Docker avec la bibliothèque parallèle de modèles SageMaker distribués
Pour créer votre propre conteneur Docker à des fins de formation et utiliser la bibliothèque SageMaker model parallel, vous devez inclure les dépendances correctes et les fichiers binaires des bibliothèques parallèles SageMaker distribuées dans votre Dockerfile. Cette section fournit l'ensemble minimal de blocs de code que vous devez inclure pour préparer correctement un environnement de SageMaker formation et la bibliothèque model parallel dans votre propre conteneur Docker.
Note
Cette option Docker personnalisée avec la bibliothèque SageMaker model parallel sous forme de binaire n'est disponible que pour PyTorch.
Pour créer un Dockerfile avec le kit de SageMaker formation et la bibliothèque model parallel
-
Commencez par l'une des images de base NVIDIA CUDA
. FROM
<cuda-cudnn-base-image>
Astuce
Les images officielles du AWS Deep Learning Container (DLC) sont créées à partir des images de base NVIDIA CUDA
. Nous vous recommandons de consulter les Dockerfiles officiels de AWS Deep Learning PyTorch Container pour savoir quelles versions des bibliothèques vous devez installer et comment les configurer. Les Dockerfiles officiels sont complets, testés et gérés par les équipes de service et de SageMaker Deep Learning Container. Dans le lien fourni, choisissez la PyTorch version que vous utilisez, choisissez le dossier CUDA ( cuxyz
) et choisissez le Dockerfile se terminant par ou..gpu
.sagemaker.gpu
-
Pour configurer un environnement d'entraînement distribué, vous devez installer des logiciels de communication et de mise en réseau, tels que Elastic Fabric Adapter (EFA), NVIDIA Collective Communications Library (NCCL)
et Open MPI . Selon les versions PyTorch et CUDA que vous choisissez, vous devez installer des versions compatibles des bibliothèques. Important
Étant donné que la bibliothèque SageMaker model parallel nécessite la bibliothèque SageMaker data parallel dans les étapes suivantes, nous vous recommandons vivement de suivre les instructions de la section Créez votre propre conteneur Docker avec la bibliothèque de données parallèles SageMaker distribuées pour configurer correctement un environnement de SageMaker formation pour la formation distribuée.
Pour plus d'informations sur la configuration de l'EPT avec NCCL et Open MPI, consultez les rubriques Get started with EFA and MPI (Démarrer avec EFA et MPI) et Get started with EFA and NCCL (Démarrer avec EFA et NCCL).
-
Ajoutez les arguments suivants pour spécifier les URL des modules de formation SageMaker distribués pour PyTorch. La bibliothèque SageMaker model parallel nécessite que la bibliothèque SageMaker data parallel utilise le Remote Direct Memory Access (RDMA) entre nœuds.
ARG SMD_MODEL_PARALLEL_URL=https://sagemaker-distributed-model-parallel.s3.us-west-2.amazonaws.com/pytorch-1.10.0/build-artifacts/2022-02-21-19-26/smdistributed_modelparallel-1.7.0-cp38-cp38-linux_x86_64.whl ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.10.2/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
-
Installez les dépendances requises par la bibliothèque SageMaker model parallel.
-
Installez la bibliothèque METIS
. ARG METIS=metis-
5.1.0
RUN rm /etc/apt/sources.list.d/* \ && wget -nv http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/${METIS}.tar.gz \ && gunzip -f ${METIS}.tar.gz \ && tar -xvf ${METIS}.tar \ && cd ${METIS} \ && apt-get update \ && make config shared=1 \ && make install \ && cd .. \ && rm -rf ${METIS}.tar* \ && rm -rf ${METIS} \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -
Installez la bibliothèque du gestionnaire de mémoire RAPIDS
. Il vous faut pour cela CMake 3.14 ou une version ultérieure. ARG RMM_VERSION=
0.15.0
RUN wget -nv https://github.com/rapidsai/rmm/archive/v${RMM_VERSION}.tar.gz \ && tar -xvf v${RMM_VERSION}.tar.gz \ && cd rmm-${RMM_VERSION} \ && INSTALL_PREFIX=/usr/local ./build.sh librmm \ && cd .. \ && rm -rf v${RMM_VERSION}.tar* \ && rm -rf rmm-${RMM_VERSION}
-
-
Installez la bibliothèque SageMaker model parallel.
RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL}
-
Installez la bibliothèque SageMaker Data Parallel.
RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
-
Installez la boîte à outils d'entraînement Sagemaker
. La boîte à outils contient les fonctionnalités communes nécessaires pour créer un conteneur compatible avec la plateforme de SageMaker formation et le SDK SageMaker Python. RUN pip install sagemaker-training
-
Une fois la création du Dockerfile terminée, consultez la section Adapting Your Own Training Container (Adapter votre propre conteneur d'entraînement) pour découvrir comment créer le conteneur Docker et l'héberger dans Amazon ECR.
Astuce
Pour des informations plus générales sur la création d'un Dockerfile personnalisé pour l'entraînement SageMaker, voir Utiliser vos propres algorithmes d'entraînement.