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

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 SageMaker

Questa sezione fornisce istruzioni su come eseguire un processo di addestramento utilizzando un cluster eterogeneo composto da più tipi di istanze.

Tieni presente quanto segue prima di iniziare.

  • 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à di cluster eterogeneo non è compatibile con la modalità locale. SageMaker

  • I flussi di CloudWatch log Amazon di un processo 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: usare SageMaker Python SDK

Segui le istruzioni su come configurare i gruppi di istanze per un cluster eterogeneo usando Python. SageMaker SDK

  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 documentazione di SageMakerPython 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. InstanceGroupAPI

    Il seguente esempio di codice mostra come impostare due gruppi di istanze composti da due ml.c5.18xlarge CPU sole istanze denominate instance_group_1 e un'ml.p3dn.24xlargeGPUistanza denominatainstance_group_2, come illustrato 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 pre-addestramento, come la preelaborazione dei dati, possono essere assegnati al gruppo di istanze e trasmettere i dati preelaborati al gruppo di CPU istanze. 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'argomento di sagemaker.inputs. instance_group_names TrainingInputclasse. 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 di Amazon S3 all'argomento s3_data affinché i gruppi di istanze elaborino i dati per i tuoi scopi di utilizzo.

    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"] )

    Per ulteriori informazioni sugli argomenti di TrainingInput, consulta i seguenti link.

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

    Nota

    La funzionalità di cluster eterogeneo è disponibile tramite le classi di stima SageMaker PyTorche TensorFlowframework. 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, delle versioni del framework e delle versioni Python disponibili, consulta SageMaker Framework Containers nel repository AWS Deep Learning Container GitHub .

    PyTorch
    from sagemaker.pytorch import PyTorch estimator = PyTorch( ... entry_point='my-training-script.py', framework_version='x.y.z', # 1.10.0 or later py_version='pyxy', job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1, instance_group_2] )
    TensorFlow
    from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( ... entry_point='my-training-script.py', framework_version='x.y.z', # 2.6.0 or later py_version='pyxy', 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 classe SageMaker estimator 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, delle versioni del framework e delle versioni Python disponibili, consulta SageMaker Framework Containers nel repository AWS Deep Learning Container GitHub .

  4. Configura il metodo estimator.fit con i canali di input di addestramento configurati con i gruppi di istanze e avvia il processo di addestramento.

    estimator.fit( inputs={ 'training': training_input_channel_1, 'dummy-input-channel': training_input_channel_2 } )

Opzione 2: utilizzo del livello basso SageMaker APIs

Se utilizzi AWS Command Line Interface o AWS SDK for Python (Boto3) e desideri utilizzare il livello basso SageMaker APIs per inviare una richiesta di lavoro di formazione con un cluster eterogeneo, consulta i seguenti riferimenti. API