

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando planos de treinamento em trabalhos SageMaker de treinamento
<a name="training-plan-utilization-for-training-jobs"></a>

Você pode usar um plano de SageMaker treinamento para seus trabalhos de treinamento especificando o plano de sua escolha ao criar um trabalho de treinamento.

**nota**  
O plano de treinamento deve estar no status `Scheduled` ou `Active` para ser usado por uma tarefa de treinamento.

Se a capacidade necessária não estiver imediatamente disponível para uma tarefa de treinamento, a tarefa aguardará até que haja capacidade disponível, ou até que `StoppingCondition` seja atingida, ou a tarefa ficará no status de capacidade `Pending` por dois dias, o que ocorrer primeiro. Se a condição de interrupção for atendida, a tarefa será interrompida. Se uma tarefa ficar pendente por dois dias, ela será encerrada com um`InsufficientCapacityError`.

**Importante**  
**Processo de encerramento da capacidade reservada:** você tem acesso total a todas as instâncias reservadas até 30 minutos antes do horário de término da capacidade reservada. Quando restam 30 minutos em sua capacidade reservada, os planos de SageMaker treinamento iniciam o processo de encerramento de todas as instâncias em execução dentro dessa capacidade reservada.  
Para garantir que você não perca o progresso do treinamento devido a esses encerramentos, recomendamos verificar suas tarefas de treinamento.

## Implementar um ponto de verificação na tarefa de treinamento
<a name="training-jobs-checkpointing"></a>

Ao usar planos SageMaker de treinamento para seus trabalhos SageMaker de treinamento, certifique-se de implementar o checkpoint em seu script de treinamento. Isso permite que você salve o progresso de seu treinamento antes que a capacidade reservada expire. A verificação é especialmente importante ao trabalhar com capacidades reservadas, pois permite que você retome o treinamento a partir do último ponto salvo se seu trabalho for interrompido entre duas capacidades reservadas ou quando seu plano de treinamento atinge a data de término.

Para isso, é possível usar a variável de ambiente `SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP`. Essa variável ajuda a determinar quando iniciar o processo de verificação. Ao incorporar essa lógica em seu script de treinamento, você garante que o progresso do modelo seja salvo em intervalos apropriados.

Veja aqui um exemplo de como você pode implementar essa lógica de ponto de verificação em seu script de treinamento do 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**  
O provisionamento do trabalho de treinamento segue uma ordem First-In-First-Out (FIFO), mas um trabalho de cluster menor criado posteriormente pode receber capacidade antes de um trabalho de cluster maior criado anteriormente, se o trabalho maior não puder ser realizado.
SageMaker a piscina aquecida gerenciada por treinamento é compatível com os planos de SageMaker treinamento. Para reutilização do cluster, você deve fornecer valores de `TrainingPlanArn` idênticos nas solicitações `CreateTrainingJob` subsequentes para reutilizar o mesmo cluster.

**Topics**
+ [Implementar um ponto de verificação na tarefa de treinamento](#training-jobs-checkpointing)
+ [Crie um trabalho de treinamento usando o console de SageMaker IA](use-training-plan-for-training-jobs-using-console.md)
+ [Crie um trabalho de treinamento usando a API, AWS CLI, SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)