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 de SageMaker Python SDK
Le SageMaker Python SDK 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 les données hybrides et le parallélisme des modèles. Vous devez donc utiliser l'MPIoption 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 SageMaker parallel 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 SDKdocumentation 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 les sections Paramètres communspour la configuration SageMaker du parallélisme des modèles et Notes de mise à jour de SageMaker Distributed Model Parallel dans la documentation SageMaker Python SDK.
-
-
-
Pour la clé
"mpi"
, transmettez un dictionnaire contenant les éléments suivants :-
"enabled"
: obligatoire. ParamétréTrue
pour lancer la tâche de formation distribuée avecMPI. -
"processes_per_host"
: obligatoire. Spécifiez le nombre de processus qui MPI doivent être lancés sur chaque hôte. Dans SageMaker l'IA, un hôte est une instance Amazon EC2 ML unique. Le SageMaker Python SDK maintient un one-to-one mappage entre les processus et GPUs entre le parallélisme des modèles et des données. Cela signifie que l' SageMaker IA planifie chaque processus sur un seul processus, séparément GPU et ne GPU contient pas 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, consultez Fractionnement automatique avec PyTorch.Important
process_per_host
ne doit pas être supérieur au nombre de GPUs par instance et sera généralement égal au nombre de GPUs par instance. -
"custom_mpi_options"
(facultatif) — Utilisez cette touche pour transmettre les MPI options personnalisées dont vous pourriez avoir besoin. Si vous ne transmettez aucune option MPI personnalisée à la clé, l'MPIoption 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 de formation à l'aide d'un type d'instance EFA compatible, tel que
ml.p4d.24xlarge
etml.p3dn.24xlarge
, utilisez l'indicateur suivant pour optimiser les 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 Python SageMaker : SDK
-
Nous vous recommandons d'utiliser une instance de SageMaker bloc-notes si vous êtes de nouveaux utilisateurs. Pour voir un exemple de la manière dont vous pouvez lancer une tâche de formation à l'aide d'une instance de SageMaker bloc-notes, consultezExemples de bibliothèque de parallélisme de modèles Amazon SageMaker AI 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 du SageMaker modèle est incluse dans les DLC images TensorFlow (2.3.0 et versions ultérieures) et PyTorch (1.6.0 et versions ultérieures) avec (). CUDA cuxyz
Pour une liste complète des DLC images, consultez la section Images disponibles des Deep Learning Containers
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 AI 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 (AmazonECR) et utiliser l'image URI (image_uri
) pour définir un SageMaker estimateur pour la formation. Pour de plus amples informations, veuillez consulter Extension d'un conteneur préconçu.
Une fois que vous avez fini d'héberger le conteneur Docker et de récupérer l'image URI 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 NVIDIA CUDA de base
. FROM
<cuda-cudnn-base-image>
Astuce
Les images officielles du AWS Deep Learning Container (DLC) sont créées à partir des images de NVIDIA CUDA base
. 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.gpu
par ou..sagemaker.gpu
-
Pour configurer un environnement de formation distribué, vous devez installer des logiciels pour les appareils de communication et de réseau, tels qu'Elastic Fabric Adapter (EFA), NVIDIACollective Communications Library (NCCL)
et Open MPI . Selon les CUDA versions PyTorch et 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 SageMaker AI distributed data parallel library pour configurer correctement un environnement de SageMaker formation pour la formation distribuée.
Pour plus d'informations sur la configuration EFA avec NCCL et OpenMPI, voir Commencer avec EFA et MPI et Commencer avec EFA et NCCL.
-
Ajoutez les arguments suivants pour spécifier les modules URLs 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 RAPIDS Memory Manager
. Cela nécessite la version 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 SageMaker PythonSDK. RUN pip install sagemaker-training
-
Une fois le Dockerfile créé, consultez Adapting Your Own Training Container pour savoir comment créer le conteneur Docker et l'héberger sur Amazon. ECR
Astuce
Pour des informations plus générales sur la création d'un Dockerfile personnalisé pour l'entraînement à l' SageMaker IA, consultez Utiliser vos propres algorithmes d'entraînement.