Configurer une tâche de formation avec un cluster hétérogène dans Amazon AI SageMaker - Amazon SageMaker AI

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

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.

Prenez note des points suivants avant de commencer.

  • 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.

Option 1 : utilisation du SDK SageMaker Python

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. InstanceGroupdans 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' InstanceGroupAPI.

    L'exemple de code suivant illustre comment configurer deux groupes d'instances composés de deux instances ml.c5.18xlarge réservées au processeur nommées instance_group_1 et une instance ml.p3dn.24xlarge du processeur graphique nommée instance_group_2, comme illustré dans le schéma suivant.

    Un exemple conceptuel de la manière dont les données peuvent être attribuées dans SageMaker Training Job.

    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 du processeur et transmettre les données prétraitées au groupe d'instances du processeur graphique.

    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 )
  2. À 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_namesargument du sagemaker.inputs. TrainingInputclasse. 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.

  3. Configurez un estimateur SageMaker AI avec l'instance_groupsargument 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 PyTorchet les classes d'TensorFlowestimateurs 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 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='pyxy', 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='pyxy', job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1, instance_group_2] )
    Note

    La instance_type paire d'instance_countarguments and et l'instance_groupsargument 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 dans le GitHub référentiel AWS Deep Learning Container.

  4. 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 le travail d'entraînement.

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

Option 2 : utilisation du bas niveau SageMaker APIs

Si vous utilisez le AWS Command Line Interface ou AWS SDK for Python (Boto3) et que vous souhaitez utiliser le bas niveau SageMaker APIs 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.