

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.

# Configurer une tâche de formation avec un cluster hétérogène dans Amazon AI SageMaker
<a name="train-heterogeneous-cluster-configure"></a>

Cette section fournit des instructions sur la façon d’exécuter une tâche d’entraînement à l’aide d’un cluster hétérogène composé de plusieurs types d’instances.

Notez les points suivants avant de démarrer. 
+ Tous les groupes d’instances partagent la même image Docker et le même script d’entraînement. Par conséquent, votre script d’entraînement doit être modifié afin de détecter à quel groupe d’instances il appartient et de l’exécuter en conséquence.
+ La fonctionnalité de cluster hétérogène n'est pas compatible avec le mode local de SageMaker l'IA.
+ Les flux de CloudWatch log Amazon relatifs à une tâche de formation en cluster hétérogène ne sont pas regroupés par groupes d'instances. Vous devez déterminer à partir des journaux quels nœuds appartiennent à quel groupe.

**Topics**
+ [Option 1 : utilisation du SDK SageMaker Python](#train-heterogeneous-cluster-configure-pysdk)
+ [Option 2 : utilisation des API de bas niveau SageMaker](#train-heterogeneous-cluster-configure-api)

## Option 1 : utilisation du SDK SageMaker Python
<a name="train-heterogeneous-cluster-configure-pysdk"></a>

Suivez les instructions pour configurer des groupes d'instances pour un cluster hétérogène à l'aide du SDK SageMaker Python.

1. Pour configurer des groupes d’instances d’un cluster hétérogène pour une tâche d’entraînement, utilisez la classe `sagemaker.instance_group.InstanceGroup`. Vous pouvez spécifier un nom personnalisé pour chaque groupe d’instances, le type d’instance et le nombre d’instances pour chaque groupe d’instances. Pour plus d'informations, consultez [sagemaker.instance\_group. InstanceGroup](https://sagemaker.readthedocs.io/en/stable/api/utility/instance_group.html)dans la *documentation du SDK SageMaker AI Python*.
**Note**  
Pour plus d'informations sur les types d'instances disponibles et le nombre maximal de groupes d'instances que vous pouvez configurer dans un cluster hétérogène, consultez la référence de l'[ InstanceGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html)API.

   L'exemple de code suivant montre comment configurer deux groupes d'instances composés de deux `ml.c5.18xlarge` CPU-only instances nommées `instance_group_1` et d'une instance de `ml.p3dn.24xlarge` GPU nommée`instance_group_2`, comme indiqué dans le schéma suivant.  
![Un exemple conceptuel de la manière dont les données peuvent être attribuées dans SageMaker Training Job.](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/HCTraining.png)

   Le schéma précédent montre un exemple conceptuel de la manière dont les processus de pré-entraînement, tels que le prétraitement des données, peuvent être affectés au groupe d’instances CPU et transmettre les données prétraitées au groupe d’instances GPU.

   ```
   from sagemaker.instance_group import InstanceGroup
   
   instance_group_1 = InstanceGroup(
       "{{instance_group_1}}", "{{ml.c5.18xlarge}}", {{2}}
   )
   instance_group_2 = InstanceGroup(
       "{{instance_group_2}}", "{{ml.p3dn.24xlarge}}", {{1}}
   )
   ```

1. À l'aide des objets du groupe d'instances, configurez les canaux d'entrée d'entraînement et attribuez des groupes d'instances aux canaux via l'`instance_group_names`argument du [sagemaker.inputs. TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html)classe. L’argument `instance_group_names` accepte une liste de chaînes de noms de groupes d’instances.

   L’exemple suivant montre comment définir deux canaux d’entrée d’entraînement et attribuer les groupes d’instances créés dans l’exemple de l’étape précédente. Vous pouvez également spécifier des chemins de compartiment Amazon S3 vers l’argument `s3_data` pour que les groupes d’instances traitent les données à des fins d’utilisation.

   ```
   from sagemaker.inputs import TrainingInput
   
   training_input_channel_1 = TrainingInput(
       s3_data_type='{{S3Prefix}}', # Available Options: S3Prefix | ManifestFile | AugmentedManifestFile
       s3_data='{{s3://your-training-data-storage/folder1}}',
       distribution='{{FullyReplicated}}', # Available Options: FullyReplicated | ShardedByS3Key 
       input_mode='{{File}}', # Available Options: File | Pipe | FastFile
       instance_groups=["{{instance_group_1}}"]
   )
   
   training_input_channel_2 = TrainingInput(
       s3_data_type='{{S3Prefix}}',
       s3_data='{{s3://your-training-data-storage/folder2}}',
       distribution='{{FullyReplicated}}',
       input_mode='{{File}}',
       instance_groups=["{{instance_group_2}}"]
   )
   ```

   Pour plus d’informations sur les arguments de `TrainingInput`, consultez les liens suivants.
   + Le [sagemaker.inputs. TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html)classe dans la documentation du *SDK SageMaker Python*
   + L'[S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)API dans la *référence des API d'SageMaker IA*

1. Configurez un estimateur SageMaker AI avec l'`instance_groups`argument comme indiqué dans l'exemple de code suivant. L’argument `instance_groups` accepte une liste de `InstanceGroup` objets.
**Note**  
La fonctionnalité de cluster hétérogène est disponible via l' SageMaker IA [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html)et les classes d'[TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)estimateurs du framework. Les frameworks pris en charge sont la PyTorch v1.10 ou version ultérieure et la TensorFlow version 2.6 ou ultérieure. Pour trouver une liste complète des conteneurs de framework, des versions de framework et des versions Python disponibles, voir [SageMaker AI Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) dans le GitHub référentiel AWS Deep Learning Container.

------
#### [ PyTorch ]

   ```
   from sagemaker.pytorch import PyTorch
   
   estimator = PyTorch(
       ...
       entry_point='{{my-training-script.py}}',
       framework_version='{{x.y.z}}',    # 1.10.0 or later
       py_version='py{{xy}}',            
       job_name='{{my-training-job-with-heterogeneous-cluster}}',
       instance_groups=[{{instance_group_1}}, {{instance_group_2}}]
   )
   ```

------
#### [ TensorFlow ]

   ```
   from sagemaker.tensorflow import TensorFlow
   
   estimator = TensorFlow(
       ...
       entry_point='{{my-training-script.py}}',
       framework_version='{{x.y.z}}', # 2.6.0 or later
       py_version='py{{xy}}',
       job_name='{{my-training-job-with-heterogeneous-cluster}}',
       instance_groups=[{{instance_group_1}}, {{instance_group_2}}]
   )
   ```

------
**Note**  
La `instance_type` paire d'`instance_count`arguments and et l'`instance_groups`argument de la classe d'estimateurs SageMaker AI s'excluent mutuellement. Pour une formation en cluster homogène, utilisez la paire d’arguments `instance_type` et `instance_count`. Pour l’entraînement sur les clusters hétérogènes, utilisez `instance_groups`.
**Note**  
Pour trouver une liste complète des conteneurs de framework, des versions de framework et des versions Python disponibles, voir [SageMaker AI Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) dans le GitHub référentiel AWS Deep Learning Container.

1. Configurez la méthode `estimator.fit` avec les canaux d’entrée d’entraînement configurés avec les groupes d’instances et démarrez la tâche d’entraînement.

   ```
   estimator.fit(
       inputs={
           'training': {{training_input_channel_1}}, 
           '{{dummy-input-channel}}': {{training_input_channel_2}}
       }
   )
   ```

## Option 2 : utilisation des API de bas niveau SageMaker
<a name="train-heterogeneous-cluster-configure-api"></a>

Si vous utilisez AWS Command Line Interface ou souhaitez utiliser AWS SDK pour Python (Boto3) des SageMaker API de bas niveau pour soumettre une demande de tâche de formation auprès d'un cluster hétérogène, consultez les références d'API suivantes.
+ [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
+ [ResourceConfig ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceConfig.html)
+ [InstanceGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html)
+ [S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)