

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
<a name="train-heterogeneous-cluster-configure"></a>

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.

**Topics**
+ [Opzione 1: utilizzo dell'SDK Python SageMaker](#train-heterogeneous-cluster-configure-pysdk)
+ [Opzione 2: utilizzo delle API di basso livello SageMaker](#train-heterogeneous-cluster-configure-api)

## Opzione 1: utilizzo dell'SDK Python SageMaker
<a name="train-heterogeneous-cluster-configure-pysdk"></a>

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. [ InstanceGroup](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_core.html)nella * 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 ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html)

   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 denominata`instance_group_2`, come mostrato nel diagramma seguente.  
![Un esempio concettuale di come i dati possono essere assegnati in SageMaker Training Job.](https://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/HCTraining.png)

   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}}
   )
   ```

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_names`argomento. 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.
   + I [ sagemaker.train.configs. InputData](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html)classe nella documentazione di Python SDK * SageMaker *
   + L'[S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)API nell'*SageMaker AI API Reference *

1. Configura un oggetto di addestramento SageMaker AI con l'`instance_groups`argomento 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 ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) e classi. [ TensorFlow ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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 ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) 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='py{{xy}}', 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='py{{xy}}', 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_groups`argomento 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 ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) nel repository AWS Deep Learning Container. GitHub 

1. 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
<a name="train-heterogeneous-cluster-configure-api"></a>

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.
+ [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
+ [ResourceConfig ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceConfig.html)
+ [InstanceGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html)
+ [S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)