

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

# Utilizzo dei piani di formazione per lavori di SageMaker formazione
<a name="training-plan-utilization-for-training-jobs"></a>

Puoi utilizzare un piano di SageMaker formazione per i tuoi lavori di formazione specificando il piano di tua scelta quando crei un lavoro di formazione.

**Nota**  
Il piano di addestramento deve essere in stato `Scheduled` o `Active` per essere utilizzato da un job di addestramento.

Se la capacità richiesta non è immediatamente disponibile per un job di addestramento, il processo rimane in attesa finché la capacità non si libera, finché non viene raggiunta la condizione `StoppingCondition` oppure finché il processo non è restato in stato `Pending` per due giorni, a seconda di ciò che si verifica per primo. Se la condizione di arresto è soddisfatta, il processo viene arrestato. Se un processo resta in sospeso per due giorni, viene terminato con `InsufficientCapacityError`.

**Importante**  
**Processo di terminazione della capacità riservata:** hai pieno accesso a tutte le istanze riservate fino a 30 minuti prima della fine della capacità riservata. Quando rimangono 30 minuti nella capacità riservata, i piani di SageMaker formazione avviano il processo di chiusura di tutte le istanze in esecuzione all'interno di tale capacità riservata.  
Per evitare di perdere i progressi fatti a causa di queste terminazioni, ti consigliamo di creare checkpoint per i tuoi job di addestramento.

## Checkpoint del job di addestramento
<a name="training-jobs-checkpointing"></a>

Quando utilizzi piani di SageMaker formazione per i tuoi lavori di SageMaker formazione, assicurati di implementare il checkpoint nel tuo script di formazione. Questa operazione consente di salvare i progressi dell’addestramento prima della scadenza di una capacità riservata. I checkpoint sono particolarmente importanti quando si lavora con capacità riservate, perché consentono di riprendere l’addestramento dall’ultimo punto salvato se il processo viene interrotto tra due capacità riservate o quando il piano di addestramento raggiunge la data di fine.

Per farlo, puoi utilizzare la variabile di ambiente `SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP`. Questa variabile aiuta a determinare quando avviare il processo di checkpoint. Incorporando questa logica nello script di addestramento, ti assicuri che i progressi del modello vengano salvati a intervalli regolari.

Ecco un esempio di come puoi implementare questa logica di checkpoint nel tuo script di addestramento in Python:

```
import os
import time
from datetime import datetime, timedelta

def is_close_to_expiration(threshold_minutes=30):
    # Retrieve the expiration timestamp from the environment variable
    expiration_time_str = os.environ.get('SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP', '0')
    
    # If the timestamp is not set (default '0'), return False
    if expiration_time_str == '0':
        return False
    
    # Convert the timestamp string (in milliseconds) to a datetime object
    expiration_time = datetime(1970, 1, 1) + timedelta(milliseconds=int(expiration_time_str))
    
    # Calculate the time difference between now and the expiration time
    time_difference = expiration_time - datetime.now()
    
    # Return True if we're within the threshold time of expiration
    return time_difference < timedelta(minutes=threshold_minutes)

def start_checkpointing():
    # Placeholder function for checkpointing logic
    print("Starting checkpointing process...")
    # TODO: Implement actual checkpointing logic here
    # For example:
    # - Save model state
    # - Save optimizer state
    # - Save current epoch and iteration numbers
    # - Save any other relevant training state

# Main training loop
num_epochs = 100
final_checkpointing_done = False
for epoch in range(num_epochs):
    # TODO: Replace this with your actual training code
    # For example:
    # - Load a batch of data
    # - Forward pass
    # - Calculate loss
    # - Backward pass
    # - Update model parameters
    
    # Check if we're close to capacity expiration and haven't done final checkpointing
    if not final_checkpointing_done and is_close_to_expiration():
        start_checkpointing()
        final_checkpointing_done = True
    
    # Simulate some training time (remove this in actual implementation)
    time.sleep(1)
print("Training completed.")
```

**Nota**  
L'assegnazione dei lavori di formazione segue un ordine First-In-First-Out (FIFO), ma a un lavoro di cluster più piccolo creato in un secondo momento potrebbe essere assegnata una capacità prima di un lavoro di cluster più grande creato in precedenza, se il lavoro più grande non può essere svolto.
SageMaker la piscina riscaldata gestita dalla formazione è compatibile con i piani di allenamento. SageMaker Per riutilizzare lo stesso cluster, devi fornire valori `TrainingPlanArn` identici nelle richieste `CreateTrainingJob` successive.

**Topics**
+ [Checkpoint del job di addestramento](#training-jobs-checkpointing)
+ [Crea un lavoro di formazione utilizzando la console AI SageMaker](use-training-plan-for-training-jobs-using-console.md)
+ [Crea un lavoro di formazione utilizzando l'API AWS CLI, SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)

# Crea un lavoro di formazione utilizzando la console AI SageMaker
<a name="use-training-plan-for-training-jobs-using-console"></a>

Puoi utilizzare un piano di SageMaker formazione per i tuoi lavori di formazione utilizzando l'interfaccia utente SageMaker AI. Quando crei un job di addestramento, vengono suggeriti i piani disponibili se la scelta dell’istanza e la Regione corrispondono ai piani disponibili.

Per creare un lavoro di formazione utilizzando la capacità riservata di un piano di formazione nella SageMaker console:

1. Vai alla console SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, scegli **Addestramento**, quindi **Job di addestramento**.

1. Scegli il pulsante **Crea job di addestramento**.

1. Quando configuri le risorse per il tuo job di addestramento, cerca la sezione **Capacità dell’istanza**. Se sono disponibili piani che corrispondono al tipo di istanza e alla Regione scelti, vengono visualizzati qui. Seleziona un piano di addestramento in linea con le tue esigenze di capacità di calcolo.

   Se non sono disponibili piani adeguati, puoi modificare il tipo di istanza o la Regione oppure puoi procedere senza utilizzare un piano di addestramento.

1. Dopo aver selezionato un piano di addestramento (o aver scelto di procedere senza alcun piano), completa il resto della configurazione del job di addestramento e scegli **Crea job di addestramento** per avviare il processo.

![\[SageMaker Pagina della console AI per creare un nuovo lavoro di formazione. La pagina mostra varie opzioni di configurazione, tra cui impostazioni del processo, opzioni dell’algoritmo, configurazione delle risorse, selezione del piano di addestramento e condizioni di arresto.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/training-plans/tp-create-training-job.png)


Rivedi e avvia il processo. Il processo viene avviato non appena il piano di addestramento diventa `Active`, con la capacità in sospeso.

# Crea un lavoro di formazione utilizzando l'API AWS CLI, SageMaker SDK
<a name="use-training-plan-for-training-jobs-using-api-cli-sdk"></a>

Per utilizzare SageMaker i piani di SageMaker formazione per il tuo lavoro di formazione, specifica il `TrainingPlanArn` parametro del piano desiderato `ResourceConfig` nell'operazione di chiamata dell'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)API. Puoi utilizzare un solo piano per processo.

**Importante**  
Il campo `InstanceType` impostato nella sezione `ResourceConfig` della richiesta `CreateTrainingJob` deve corrispondere a `InstanceType` del piano di addestramento.

## Esecuzione di un job di addestramento in un piano con la CLI
<a name="training-job-cli"></a>

L'esempio seguente dimostra come creare un processo di SageMaker formazione e associarlo a un piano di formazione fornito utilizzando l'`TrainingPlanArn`attributo nel `create-training-job` AWS CLI comando. 

Per ulteriori informazioni su come creare un processo di formazione utilizzando il AWS CLI [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)comando, vedere [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html).

```
# Create a training job
aws sagemaker create-training-job \
  --training-job-name training-job-name \
  ...
    
  --resource-config '{
        "InstanceType": "ml.p5.48xlarge",
        "InstanceCount": 8,
        "VolumeSizeInGB": 10,
        "TrainingPlanArn": "training-plan-arn"
        }
    }' \
    ...
```

Questo comando di AWS CLI esempio crea un nuovo processo di addestramento in SageMaker AI inserendo un piano di formazione nell'`--resource-config`argomento.

```
aws sagemaker create-training-job \
  --training-job-name job-name \
  --role-arn arn:aws:iam::111122223333:role/DataAndAPIAccessRole \
  --algorithm-specification '{"TrainingInputMode": "File","TrainingImage": "111122223333.dkr.ecr.us-east-1.amazonaws.com/algo-image:tag", "ContainerArguments": [" "]}' \
  --input-data-config '[{"ChannelName":"training","DataSource":{"S3DataSource":{"S3DataType":"S3Prefix","S3Uri":"s3://bucketname/input","S3DataDistributionType":"ShardedByS3Key"}}}]' \
  --output-data-config '{"S3OutputPath": "s3://bucketname/output"}' \
  --resource-config '{"VolumeSizeInGB":10,"InstanceCount":4,"InstanceType":"ml.p5.48xlarge", "TrainingPlanArn" : "arn:aws:sagemaker:us-east-1:111122223333:training-plan/plan-name"}' \
  --stopping-condition '{"MaxRuntimeInSeconds": 1800}' \
  --region us-east-1
```

Dopo aver creato il job di addestramento, puoi verificare che sia stato assegnato correttamente al piano di addestramento chiamando l’API `DescribeTrainingJob`.

```
aws sagemaker describe-training-job --training-job-name training-job-name
```

## Esegui un processo di formazione su un piano utilizzando SageMaker AI Python SDK
<a name="training-job-sdk"></a>

In alternativa, puoi creare un lavoro di formazione associato a un piano di formazione utilizzando [SageMaker Python](https://sagemaker.readthedocs.io/en/stable/v2.html) SDK.

Se utilizzi SageMaker Python SDK da Studio per creare un processo di formazione, assicurati che il ruolo di esecuzione utilizzato dallo spazio su cui è JupyterLab in esecuzione l' JupyterLabapplicazione disponga delle autorizzazioni necessarie per utilizzare i piani di formazione. SageMaker Per ulteriori informazioni sulle autorizzazioni necessarie per utilizzare i piani di SageMaker formazione, consulta. [IAM per i piani SageMaker di formazione](training-plan-iam-permissions.md)

L'esempio seguente dimostra come creare un processo di SageMaker formazione e associarlo a un piano di formazione fornito utilizzando l'`training_plan`attributo nell'`Estimator`oggetto quando si utilizza SageMaker Python SDK.

Per ulteriori informazioni sull' SageMaker Estimator, consulta [Utilizzare uno SageMaker stimatore per eseguire un processo di formazione](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
import sagemaker
import boto3
from sagemaker import get_execution_role
from sagemaker.estimator import Estimator
from sagemaker.inputs import TrainingInput

# Set up the session and SageMaker client
session = boto3.Session()
region = session.region_name
sagemaker_session = session.client('sagemaker')

# Get the execution role for the training job
role = get_execution_role()

# Define the input data configuration
trainingInput = TrainingInput(
    s3_data='s3://input-path',
    distribution='ShardedByS3Key',
    s3_data_type='S3Prefix'
)

estimator = Estimator(
    entry_point='train.py',
    image_uri="123456789123.dkr.ecr.{}.amazonaws.com/image:tag",
    role=role,
    instance_count=4,
    instance_type='ml.p5.48xlarge',
    training_plan="training-plan-arn",
    volume_size=20,
    max_run=3600,
    sagemaker_session=sagemaker_session,
    output_path="s3://output-path"
)

# Create the training job
estimator.fit(inputs=trainingInput, job_name=job_name)
```

Dopo aver creato il job di addestramento, puoi verificare che sia stato assegnato correttamente al piano di addestramento chiamando l’API `DescribeTrainingJob`.

```
# Check job details
sagemaker_session.describe_training_job(TrainingJobName=job_name)
```