Configuration d’une tâche d’entraînement avec un cluster hétérogène dans Amazon SageMaker AI
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 AI.
-
Les flux de journaux Amazon CloudWatch d’une tâche d’entraînement de 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 kit SageMaker Python SDK
Suivez les instructions pour configurer des groupes d’instances pour un cluster hétérogène à l’aide du kit SageMaker Python SDK.
-
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 kit SageMaker AI Python SDK. 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 des API InstanceGroup.
L’exemple de code suivant illustre comment configurer deux groupes d’instances composés de deux instances
ml.c5.18xlargeréservées au processeur nomméesinstance_group_1et une instanceml.p3dn.24xlargedu 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 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 de groupe d’instances, configurez des canaux d’entrée d’entraînement et affectez des groupes d’instances aux canaux via l’argument
instance_group_namesde la classe sagemaker.inputs.TrainingInput. L’argument instance_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 vers l’argument
s3_datapour 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.-
La classe sagemaker.inputs.TrainingInput
dans la Documentation du kit SDK SageMaker Python -
L’API S3DataSource dans la Référence des API SageMaker AI
-
-
Configurez un estimateur SageMaker AI avec l’argument
instance_groups, comme illustré dans l’exemple de code suivant. L’argumentinstance_groupsaccepte une liste deInstanceGroupobjets.Note
La fonctionnalité de cluster hétérogène est disponible via les classes d’estimateur de cadre de SageMaker AI PyTorch
et TensorFlow . Les cadres pris en charge sont PyTorch v1.10 ou versions ultérieures, et TensorFlow v2.6 ou versions ultérieures. Pour obtenir la liste complète des conteneurs de cadre, des versions de cadres et des versions Python disponibles, consultez Conteneurs de cadre SageMaker AI dans le référentiel GitHub des conteneurs de Deep Learning AWS. Note
La paire d’arguments
instance_typeetinstance_countet l’argumentinstance_groupsde la classe d’estimateur 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 cadre, des versions de cadres et des versions Python disponibles, consultez Conteneurs de cadre SageMaker AI
dans le référentiel GitHub des conteneurs de Deep Learning AWS. -
Configurez la méthode
estimator.fitavec 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 de SageMaker
Si vous utilisez le AWS Command Line Interface ou AWS SDK pour Python (Boto3) et souhaitez utiliser des API SageMaker de bas niveau pour soumettre une demande de tâche d’entraînement sur un cluster hétérogène, consultez les références d’API suivantes.