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.
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 SageMaker AI.
-
Les flux de CloudWatch journaux Amazon d'une tâche de formation sur un 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.
Rubriques
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.
-
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 maximum 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 montre comment configurer deux groupes d'instances composés de deux
ml.c5.18xlargeCPU-only instances nomméesinstance_group_1et d'une instanceml.p3dn.24xlargeGPU nomméeinstance_group_2, comme indiqué dans le schéma suivant.
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) -
À 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. L’argumentinstance_group_namesaccepte 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 pour les groupes d'instances afin de traiter les données à des fins d'utilisation.
from sagemaker.train.configs import InputData from sagemaker.core.shapes import Channel, DataSource, S3DataSource training_input_channel_1 = Channel( channel_name='training', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder1', s3_data_distribution_type='FullyReplicated', # Available Options: FullyReplicated | ShardedByS3Key instance_group_names=["instance_group_1"], ) ), input_mode='File', # Available Options: File | Pipe | FastFile ) training_input_channel_2 = Channel( channel_name='dummy-input-channel', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder2', s3_data_distribution_type='FullyReplicated', instance_group_names=["instance_group_2"], ) ), input_mode='File', )Pour plus d’informations sur les arguments de
InputData, consultez les liens suivants.-
Le fichier sagemaker.train.configs. InputData
classe dans la documentation du SDK SageMaker Python -
L'S3DataSourceAPI dans la référence de l'API SageMaker AI
-
-
Configurez un objet d'entraînement SageMaker AI avec l'
instance_groupsargument, comme indiqué dans l'exemple de code suivant. L’argumentinstance_groupsaccepte une liste deInstanceGroupobjets.Note
La fonctionnalité de cluster hétérogène est disponible via l' SageMaker IA PyTorch
et les TensorFlow ModelTrainer classes. Les frameworks pris en charge sont la PyTorch version 1.10 ou ultérieure et la TensorFlow version 2.6 ou ultérieure. Pour obtenir la liste complète des conteneurs de framework, des versions de framework et des versions de Python disponibles, voir SageMaker AI Framework Containers dans le GitHub référentiel AWS Deep Learning Container. PyTorch
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="pytorch", region=region, version='x.y.z', # 1.10.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )TensorFlow
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="tensorflow", region=region, version='x.y.z', # 2.6.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )Note
La paire d'
instance_countargumentsinstance_typeet et l'instance_groupsargument de la ModelTrainer classe SageMaker AI s'excluent mutuellement. Pour une formation en cluster homogène, utilisez la paire d’argumentsinstance_typeetinstance_count. Pour l’entraînement sur les clusters hétérogènes, utilisezinstance_groups.Note
Pour obtenir la liste complète des conteneurs de framework, des versions de framework et des versions de Python disponibles, voir SageMaker AI Framework Containers
dans le GitHub référentiel AWS Deep Learning Container. -
Démarrez la tâche de formation avec les canaux d'entrée de formation configurés avec les groupes d'instances.
model_trainer.train( inputs={ 'training':training_input_channel_1, 'dummy-input-channel':training_input_channel_2} )
Option 2 : Utilisation des API de bas niveau SageMaker
Si vous utilisez le AWS Command Line Interface ou AWS SDK pour Python (Boto3) et que vous souhaitez utiliser des SageMaker API de bas niveau pour soumettre une demande de formation auprès d'un cluster hétérogène, consultez les références d'API suivantes.