

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

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

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

Segui le istruzioni su come configurare i gruppi di istanze per un cluster eterogeneo utilizzando 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\$1group. InstanceGroup](https://sagemaker.readthedocs.io/en/stable/api/utility/instance_group.html)nella documentazione di *SageMaker 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 alle 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 composti da due istanze denominate solo CPU `ml.c5.18xlarge` denominate `instance_group_1` e un’istanza GPU `ml.p3dn.24xlarge` denominata `instance_group_2`, come illustrato nel diagramma seguente.  
![\[Un esempio concettuale di come i dati possono essere assegnati in SageMaker Training Job.\]](http://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 formazione e assegnate i gruppi di istanze ai canali tramite l'`instance_group_names`argomento di sagemaker.inputs. TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html)classe. 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.
   + Il [sagemaker.inputs. TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html)classe nella documentazione di *SageMaker Python SDK*
   + *L'API [S3](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html) nell'AI DataSource API Reference SageMaker *

1. Configura uno stimatore 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à di cluster eterogeneo è disponibile tramite le classi SageMaker AI [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html)e [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)Framework Estimator. 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 di 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 .

------
#### [ 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 coppia `instance_type` e `instance_count` argument e l'`instance_groups`argomento della classe SageMaker AI 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 di 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. 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
<a name="train-heterogeneous-cluster-configure-api"></a>

Se utilizzi AWS Command Line Interface o AWS SDK per 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.
+ [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)