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.
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 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éesinstance_group_1
et une instanceml.p3dn.24xlarge
du processeur graphique nomméeinstance_group_2
, comme illustré 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 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
) -
À 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. 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.-
Le sagemaker.inputs. TrainingInput
classe dans la documentation du SDK SageMaker Python -
L'DataSourceAPI S3 dans le guide de référence des API d'SageMaker IA
-
-
Configurez un estimateur SageMaker AI avec l'
instance_groups
argument comme indiqué dans l'exemple de code suivant. L'argumentinstance_groups
accepte une liste deInstanceGroup
objets.Note
La fonctionnalité de cluster hétérogène est disponible via l' SageMaker IA PyTorch
et les classes d'TensorFlow 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 dans le GitHub référentiel AWS Deep Learning Container. 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'argumentsinstance_type
etinstance_count
. Pour l’entraînement sur les clusters hétérogènes, utilisezinstance_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. -
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.