

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

# In che modo Amazon SageMaker AI fornisce informazioni sulla formazione
<a name="your-algorithms-training-algo-running-container"></a>

Questa sezione spiega come l' SageMaker intelligenza artificiale rende disponibili le informazioni sulla formazione, come dati di addestramento, iperparametri e altre informazioni di configurazione, nel contenitore Docker. 

Quando invii una [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)richiesta all' SageMaker IA per avviare l'addestramento del modello, specifichi il percorso Amazon Elastic Container Registry (Amazon ECR) dell'immagine Docker che contiene l'algoritmo di addestramento. È inoltre necessario specificare la posizione di Amazon Simple Storage Service (Amazon S3) in cui vengono archiviati i dati di addestramento e i parametri specifici dell'algoritmo. SageMaker L'intelligenza artificiale mette queste informazioni a disposizione del contenitore Docker in modo che l'algoritmo di addestramento possa utilizzarle. Questa sezione spiega come rendere queste informazioni disponibili al tuo container Docker. Per informazioni sulla creazione di un processo di addestramento, consulta `CreateTrainingJob`. Per ulteriori informazioni sul modo in cui i contenitori SageMaker AI organizzano le informazioni, consulta[SageMaker Toolkit di formazione e inferenza](amazon-sagemaker-toolkits.md).

**Topics**
+ [Iperparametri](#your-algorithms-training-algo-running-container-hyperparameters)
+ [Variabili di ambiente](#your-algorithms-training-algo-running-container-environment-variables)
+ [Configurazione dei dati di input](#your-algorithms-training-algo-running-container-inputdataconfig)
+ [Dati di addestramento](#your-algorithms-training-algo-running-container-trainingdata)
+ [Configurazione dell’addestramento distribuito](#your-algorithms-training-algo-running-container-dist-training)

## Iperparametri
<a name="your-algorithms-training-algo-running-container-hyperparameters"></a>

 SageMaker L'intelligenza artificiale rende disponibili gli iperparametri di una `CreateTrainingJob` richiesta nel contenitore Docker del `/opt/ml/input/config/hyperparameters.json` file.

Di seguito è riportato un esempio di configurazione iperparametrica in `hyperparameters.json` per specificare gli `num_round` e gli `eta` iperparametri nell'operazione per. `CreateTrainingJob` [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) 

```
{
    "num_round": "128",
    "eta": "0.001"
}
```

[Per un elenco completo degli iperparametri che possono essere utilizzati per l' XGBoost algoritmo integrato di SageMaker intelligenza artificiale, vedi Iperparametri. XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost_hyperparameters.html)

Gli iperparametri che puoi ottimizzare dipendono dall'algoritmo che stai addestrando. Per un elenco degli iperparametri disponibili per un algoritmo integrato di SageMaker intelligenza artificiale, trovali elencati in **Iperparametri** sotto il link dell'algoritmo in Use [Amazon SageMaker AI Built-in Algorithms or](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) Pre-training Models.

## Variabili di ambiente
<a name="your-algorithms-training-algo-running-container-environment-variables"></a>

SageMaker L'intelligenza artificiale imposta le seguenti variabili di ambiente nel tuo contenitore:
+ TRAINING\$1JOB\$1NAME: specificato nel parametro `TrainingJobName` della richiesta `CreateTrainingJob`.
+ TRAINING\$1JOB\$1ARN: il nome della risorsa Amazon (ARN) del processo di addestramento restituito come `TrainingJobArn` nella risposta `CreateTrainingJob`.
+ Tutte le variabili di ambiente specificate nel parametro [Ambiente](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#sagemaker-CreateTrainingJob-request-Environment) nella richiesta `CreateTrainingJob`.

## Configurazione dei dati di input
<a name="your-algorithms-training-algo-running-container-inputdataconfig"></a>

SageMaker L'intelligenza artificiale rende disponibili le informazioni sul canale dati contenute nel `InputDataConfig` parametro della `CreateTrainingJob` richiesta nel `/opt/ml/input/config/inputdataconfig.json` file nel contenitore Docker.

Ad esempio, supponiamo di specificare tre canali di dati (`train``evaluation`, e`validation`) nella richiesta. SageMaker L'IA fornisce il seguente codice JSON:

```
{
  "train" : {"ContentType":  "trainingContentType",
             "TrainingInputMode": "File",
             "S3DistributionType": "FullyReplicated",
             "RecordWrapperType": "None"},
  "evaluation" : {"ContentType":  "evalContentType",
                  "TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"},
  "validation" : {"TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"}
}
```

**Nota**  
SageMaker L'intelligenza artificiale fornisce al contenitore solo informazioni pertinenti su ciascun canale di dati (ad esempio, il nome del canale e il tipo di contenuto), come mostrato nell'esempio precedente. `S3DistributionType`verrà impostato come `FullyReplicated` se si specificasse EFS o FSx Lustre come origini dati di input.

## Dati di addestramento
<a name="your-algorithms-training-algo-running-container-trainingdata"></a>

Il parametro `TrainingInputMode` nella `AlgorithmSpecification` della richiesta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) specifica in che modo il set di dati di addestramento viene reso disponibile per il container. Sono disponibili le modalità di input seguenti:
+ **Modalità `File`**

  Se usi `File` mode come `TrainingInputMode` valore, SageMaker AI imposta i seguenti parametri nel tuo contenitore.
  + Il parametro `TrainingInputMode` viene scritto in `inputdataconfig.json` come "File".
  + La directory del tuo canale dati viene scritta in `/opt/ml/input/data/channel_name`.

  Se utilizzi `File` la modalità, l' SageMaker IA crea una directory per ogni canale. Ad esempio, se hai tre canali denominati `training``validation`, e`testing`, SageMaker AI crea le seguenti tre directory nel tuo contenitore Docker: 
  + `/opt/ml/input/data/training`
  + `/opt/ml/input/data/validation`
  + `/opt/ml/input/data/testing`

  La modalità `File` supporta le seguenti origini dati.
  + Amazon Simple Storage Service (Amazon S3)
  + Amazon Elastic File System (Amazon EFS)
  + Amazon FSx per Lustre
**Nota**  
I canali che utilizzano fonti di dati di file system come Amazon EFS e Amazon FSx devono utilizzare `File` la modalità. In questo caso, il percorso della directory fornito nel canale viene montato in `/opt/ml/input/data/channel_name`.
+ **Modalità `FastFile`**

  Se utilizzi la `FastFile` modalità come modalità`TrainingInputNodeParameter`, l' SageMaker intelligenza artificiale imposta i seguenti parametri nel tuo contenitore.
  + Analogamente alla modalità `File`, nella modalità `FastFile` il tuo parametro `TrainingInputMode` viene scritto in `inputdataconfig.json` come "File".
  + La directory del tuo canale dati viene scritta in `/opt/ml/input/data/channel_name`.

  La modalità `FastFile` supporta le seguenti origini dati.
  + Simple Storage Service (Amazon S3)

  Se utilizzi la modalità `FastFile`, la directory dei canali viene montata con l'autorizzazione di sola lettura.

  Storicamente, la modalità `File` precedeva la modalità `FastFile`. Per garantire la compatibilità con le versioni precedenti, gli algoritmi che supportano la modalità `File` possono funzionare senza problemi anche con la modalità `FastFile`, purché il parametro `TrainingInputMode` sia impostato su `File` in `inputdataconfig.json.`.
**Nota**  
I canali che utilizzano la modalità `FastFile` devono utilizzare un `S3DataType` di "S3Prefix".  
La modalità `FastFile` presenta una visualizzazione di cartelle che utilizza la barra in avanti (`/`) come delimitatore per raggruppare oggetti Amazon S3 nelle cartelle. I prefissi `S3Uri` non devono corrispondere a un nome parziale di cartella. Ad esempio, se un set di dati Amazon S3 contiene `s3://amzn-s3-demo-bucket/train-01/data.csv`, allora non sono consentiti né `s3://amzn-s3-demo-bucket/train` né `s3://amzn-s3-demo-bucket/train-01` come prefissi `S3Uri`.  
Consigliamo di utilizzare una barra finale per definire un canale corrispondente a una cartella. Ad esempio, il canale `s3://amzn-s3-demo-bucket/train-01/` per la cartella `train-01`. Senza la barra finale, il canale sarebbe ambiguo se esistesse un'altra cartella `s3://amzn-s3-demo-bucket/train-011/` o un file `s3://amzn-s3-demo-bucket/train-01.txt/`.
+ **Modalità `Pipe`**
  + Il parametro `TrainingInputMode` scritto in `inputdataconfig.json`: "Pipe"
  + Directory del canale dati nel container Docker: `/opt/ml/input/data/channel_name_epoch_number`
  + Fonti di dati supportate: Amazon S3

  Devi leggere da una pipe separata per ogni canale. Ad esempio, se hai tre canali denominati `training`, `validation` e `testing`, devi leggere dalle seguenti pipe:
  + `/opt/ml/input/data/training_0, /opt/ml/input/data/training_1, ...`
  + `/opt/ml/input/data/validation_0, /opt/ml/input/data/validation_1, ...`
  + `/opt/ml/input/data/testing_0, /opt/ml/input/data/testing_1, ...`

  Leggi le pipe sequenzialmente. Ad esempio, se hai un canale che si chiama `training`, leggi le pipe in questa sequenza: 

  1. Apri `/opt/ml/input/data/training_0` in modalità lettura e leggilo su end-of-file (EOF) oppure, se hai finito con la prima epoca, chiudi il file pipe in anticipo. 

  1. Dopo aver chiuso il primo file pipe, cerca `/opt/ml/input/data/training_1` e leggilo finché non hai completato la seconda epoca e così via.

  Se il file per una determinata epoca non esiste ancora, il tuo codice potrebbe dover riprovare finché non viene creata la pipe. Non c'è alcuna restrizione di sequenziamento sui tipi di canale. Ad esempio, puoi leggere più epoche per il canale `training`, e iniziare a leggere il canale `validation` solo quando sei pronto. In alternativa, li puoi leggere simultaneamente se il tuo algoritmo lo richiede.

  Per un esempio di notebook Jupyter che mostra come usare la modalità Pipe quando porti il tuo contenitore, vedi [Bring your own pipe-mode](https://github.com/aws/amazon-sagemaker-examples/blob/main/advanced_functionality/pipe_bring_your_own/pipe_bring_your_own.ipynb) algorithm to Amazon AI. SageMaker 

  

SageMaker L'addestramento sui modelli AI supporta i bucket di directory S3 Express One Zone ad alte prestazioni come posizione di input dei dati per la modalità file, la modalità fast file e la modalità pipe. Per utilizzare S3 Express One Zone, inserisci la posizione del bucket di directory S3 Express One Zone anziché un bucket Amazon S3 per uso generico. Fornisci l’ARN per il ruolo IAM con la policy di controllo degli accessi e delle autorizzazioni richiesta. Fare riferimento a [AmazonSageMakerFullAccesspolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html) per ulteriori dettagli. Puoi crittografare i dati di output SageMaker AI solo in bucket di directory con crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3). La crittografia lato server con AWS KMS chiavi (SSE-KMS) non è attualmente supportata per l'archiviazione dei dati di output AI nei bucket di directory. SageMaker Per ulteriori informazioni, consulta [S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html).

## Configurazione dell’addestramento distribuito
<a name="your-algorithms-training-algo-running-container-dist-training"></a>

Se stai eseguendo corsi di formazione distribuiti con più contenitori, l' SageMaker intelligenza artificiale rende disponibili le informazioni su tutti i contenitori nel file. `/opt/ml/input/config/resourceconfig.json`

Per abilitare la comunicazione tra contenitori, questo file JSON contiene informazioni per tutti i contenitori. SageMaker L'intelligenza artificiale rende questo file disponibile per entrambi gli algoritmi`File`. `Pipe` Il file fornisce le informazioni che seguono:
+ `current_host`: il nome del container corrente sulla rete di container. Ad esempio, `algo-1`. I valori host possono cambiare in qualsiasi momento. Non scrivere codice con valori specifici per questa variabile.
+ `hosts`: l'elenco dei nomi di tutti i container nella rete di container, ordinato in ordine lessicografico. Ad esempio, `["algo-1", "algo-2", "algo-3"]` per un cluster a tre nodi. I container possono utilizzare questi nomi per gestire altri container sulla rete di container. I valori host possono cambiare in qualsiasi momento. Non scrivere codice con valori specifici per queste variabili.
+ `network_interface_name`: il nome dell'interfaccia di rete esposta al tuo container. Ad esempio, container che eseguono l'interfaccia MPI (Message Passing Interface) possono utilizzare questa informazione per impostare il nome dell'interfaccia di rete.
+ Non utilizzare le informazioni in `/etc/hostname` o `/etc/hosts` perché potrebbero non essere accurate.
+ Le informazioni sul nome host potrebbero non essere immediatamente disponibili per il container degli algoritmi. Ti consigliamo di aggiungere una policy per i nuovi tentativi sulle operazioni di risoluzione del nome host man mano che i nodi diventano disponibili nel cluster.

Di seguito è riportato un file di esempio sul nodo 1 in un cluster a tre nodi.

```
{
    "current_host": "algo-1",
    "hosts": ["algo-1","algo-2","algo-3"],
    "network_interface_name":"eth1"
}
```