View a markdown version of this page

Configura un processo di formazione con un cluster eterogeneo in Amazon AI SageMaker - Amazon SageMaker AI

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.

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

  1. 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.18xlarge CPU-only istanze denominate instance_group_1 e un'istanza ml.p3dn.24xlarge GPU denominatainstance_group_2, come mostrato nel diagramma seguente.

    Un esempio concettuale di come i dati possono essere assegnati in SageMaker Training Job.

    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 )
  2. 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'argomento instance_group_names accetta 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.

  3. Configura un oggetto di addestramento SageMaker AI con l'instance_groupsargomento come mostrato nel seguente esempio di codice. L’argomento instance_groups accetta un elenco di oggetti InstanceGroup.

    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.train import ModelTrainer from 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.train import ModelTrainer from 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_type coppia di instance_count argomenti e l'instance_groupsargomento della ModelTrainer classe SageMaker AI si escludono a vicenda. Per un addestramento omogeneo dei cluster, utilizza la coppia di argomenti instance_type e instance_count. Per un addestramento eterogeneo su cluster, usa instance_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

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