Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura un processo di formazione con un cluster eterogeneo in Amazon AI SageMaker
Questa sezione fornisce istruzioni su come eseguire un processo di addestramento utilizzando un cluster eterogeneo composto da più tipi di istanze.
Prima di iniziare, considera quanto segue.
-
Tutti i gruppi di istanze condividono la stessa immagine Docker e lo stesso script di addestramento. Pertanto, lo script di addestramento deve essere modificato per rilevare a quale gruppo di istanze appartiene e modificare di conseguenza l'esecuzione.
-
La funzionalità del cluster eterogeneo non è compatibile con la modalità locale AI. SageMaker
-
I flussi di CloudWatch log di Amazon di un job di formazione su cluster eterogenei non sono raggruppati per gruppi di istanze. È necessario capire dai log quali nodi si trovano in quale gruppo.
Argomenti
Opzione 1: utilizzo dell'SDK Python SageMaker
Segui le istruzioni su come configurare i gruppi di istanze per un cluster eterogeneo utilizzando Python SDK. SageMaker
-
Per configurare i gruppi di istanze di un cluster eterogeneo per un processo di addestramento, usa la classe
sagemaker.instance_group.InstanceGroup. Puoi specificare un nome personalizzato per ogni gruppo di istanze, il tipo di istanze e il numero di istanze per ogni gruppo di istanze. Per ulteriori informazioni, consulta sagemaker.instance_group. InstanceGroupnella SageMaker documentazione di AI Python SDK. Nota
Per ulteriori informazioni sui tipi di istanze disponibili e sul numero massimo di gruppi di istanze che è possibile configurare in un cluster eterogeneo, consulta il riferimento API. InstanceGroup
Il seguente esempio di codice mostra come impostare due gruppi di istanze costituiti da due
ml.c5.18xlargeCPU-only istanze denominateinstance_group_1e un'istanzaml.p3dn.24xlargeGPU denominatainstance_group_2, come mostrato nel diagramma seguente.
Il diagramma precedente mostra un esempio concettuale di come i processi di preaddestramento, come la pre-elaborazione dei dati, possono essere assegnati al gruppo di istanze della CPU e trasmettere i dati pre-elaborati in streaming al gruppo di istanze della 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) -
Utilizzando gli oggetti del gruppo di istanze, impostate i canali di input di addestramento e assegnate i gruppi di istanze ai canali tramite l'
instance_group_namesargomento. L'argomentoinstance_group_namesaccetta un elenco di stringhe di nomi di gruppi di istanze.L'esempio seguente mostra come impostare due canali di input di addestramento e assegnare i gruppi di istanze creati nell'esempio della fase precedente. Puoi anche specificare i percorsi dei bucket Amazon S3 affinché i gruppi di istanze elaborino i dati per i tuoi scopi di utilizzo.
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', )Per ulteriori informazioni sugli argomenti di
InputData, consulta i seguenti link.-
I sagemaker.train.configs. InputData
classe nella documentazione di Python SDK SageMaker -
L'S3DataSourceAPI nell'SageMaker AI API Reference
-
-
Configura un oggetto di addestramento SageMaker AI con l'
instance_groupsargomento come mostrato nel seguente esempio di codice. L’argomentoinstance_groupsaccetta un elenco di oggettiInstanceGroup.Nota
La funzionalità del cluster eterogeneo è disponibile tramite SageMaker AI PyTorch
e classi. TensorFlow ModelTrainer I framework supportati sono la versione PyTorch 1.10 o successiva e la versione 2.6 o successiva. TensorFlow Per trovare un elenco completo dei contenitori del framework disponibili, delle versioni del framework e delle versioni Python, consulta SageMaker AI Framework Containers nel repository Deep Learning Container. AWS GitHub 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] )Nota
La
instance_typecoppia diinstance_countargomenti e l'instance_groupsargomento della ModelTrainer classe SageMaker AI si escludono a vicenda. Per un addestramento omogeneo dei cluster, utilizza la coppia di argomentiinstance_typeeinstance_count. Per un addestramento eterogeneo su cluster, usainstance_groups.Nota
Per trovare un elenco completo dei contenitori del framework disponibili, delle versioni del framework e delle versioni Python, consulta SageMaker AI Framework Containers
nel repository AWS Deep Learning Container. GitHub -
Inizia il processo di formazione con i canali di input di formazione configurati con i gruppi di istanze.
model_trainer.train( inputs={ 'training':training_input_channel_1, 'dummy-input-channel':training_input_channel_2} )
Opzione 2: utilizzo delle API di basso livello SageMaker
Se utilizzi AWS Command Line Interface or AWS SDK per Python (Boto3) e desideri utilizzare SageMaker API di basso livello per inviare una richiesta di lavoro di formazione con un cluster eterogeneo, consulta i seguenti riferimenti API.