

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

# Utilização de planos de SageMaker treinamento para trabalhos 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)

# Crie um trabalho de treinamento usando o console de SageMaker IA
<a name="use-training-plan-for-training-jobs-using-console"></a>

Você pode usar planos de SageMaker treinamento para seus trabalhos de treinamento usando a SageMaker AI UI. Ao criar uma tarefa de treinamento, os planos disponíveis são sugeridos se sua escolha de instância e região corresponderem aos planos disponíveis.

Para criar um trabalho de treinamento usando a capacidade reservada de um plano de treinamento no SageMaker console:

1. Navegue até o console de SageMaker IA em [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. No painel de navegação à esquerda, selecione **Treinamento** e **Trabalhos de treinamento**.

1. Escolha **Criar tarefa de treinamento**.

1. Ao configurar os recursos para a tarefa de treinamento, procure a seção **Capacidade da instância**. Se houver planos disponíveis que correspondam ao tipo de instância e região escolhidos, eles serão exibidos aqui. Selecione um plano de treinamento que se alinhe às suas necessidades de capacidade computacional.

   Se nenhum plano adequado estiver disponível, você pode ajustar o tipo de instância ou a região ou continuar sem usar um plano de treinamento.

1. Depois de selecionar um plano de treinamento (ou optar por continuar sem um), conclua o restante da configuração da tarefa de treinamento e escolha **Criar tarefa de treinamento** para iniciar o processo.

![\[SageMaker Página do console de IA para criar um novo trabalho de treinamento. A página exibe várias opções de configuração, como definições de tarefa, opções de algoritmo, configuração de recursos, seleção de planos de treinamento e condições de interrupção.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/training-plans/tp-create-training-job.png)


Analise e inicie o seu trabalho. Seu trabalho começa a ser executado assim que o plano de treinamento se torna `Active`, dependendo da capacidade.

# Crie um trabalho de treinamento usando a API AWS CLI, SageMaker SDK
<a name="use-training-plan-for-training-jobs-using-api-cli-sdk"></a>

Para usar planos de SageMaker treinamento em seu trabalho de SageMaker treinamento, especifique o `TrainingPlanArn` parâmetro do plano desejado `ResourceConfig` ao chamar a operação da [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)API. Você pode usar exatamente um plano por tarefa.

**Importante**  
O campo `InstanceType` definido na seção `ResourceConfig` da solicitação `CreateTrainingJob` deve corresponder ao `InstanceType` do seu plano de treinamento.

## Executar uma tarefa de treinamento em um plano usando a CLI
<a name="training-job-cli"></a>

O exemplo a seguir demonstra como criar um trabalho de SageMaker treinamento e associá-lo a um plano de treinamento fornecido usando o `TrainingPlanArn` atributo no `create-training-job` AWS CLI comando. 

Para obter mais informações sobre como criar um trabalho de treinamento usando o AWS CLI [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)comando, consulte [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"
        }
    }' \
    ...
```

Este AWS CLI exemplo de comando cria um novo trabalho de treinamento em SageMaker IA, passando um plano de treinamento na `--resource-config` discussão.

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

Depois de criar a tarefa de treinamento, você pode chamar a API `DescribeTrainingJob` para verificar se ela foi atribuída corretamente ao plano de treinamento.

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

## Execute um trabalho de treinamento em um plano usando o SageMaker SDK AI Python
<a name="training-job-sdk"></a>

Como alternativa, você pode criar um trabalho de treinamento associado a um plano de treinamento usando o SDK do [SageMaker Python](https://sagemaker.readthedocs.io/en/stable/v2.html).

Se você estiver usando o SDK do SageMaker Python JupyterLab no Studio para criar um trabalho de treinamento, certifique-se de que a função de execução usada pelo espaço que executa seu JupyterLab aplicativo tenha as permissões necessárias para usar SageMaker os planos de treinamento. Para saber mais sobre as permissões necessárias para usar os planos de SageMaker treinamento, consulte[IAM para planos SageMaker de treinamento](training-plan-iam-permissions.md).

O exemplo a seguir demonstra como criar um trabalho de SageMaker treinamento e associá-lo a um plano de treinamento fornecido usando o `training_plan` atributo no `Estimator` objeto ao usar o SDK do SageMaker Python.

Para obter mais informações sobre o SageMaker Estimador, consulte [Usar um SageMaker estimador para executar um](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html) trabalho de treinamento.

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

Depois de criar a tarefa de treinamento, você pode chamar a API `DescribeTrainingJob` para verificar se ela foi atribuída corretamente ao plano de treinamento.

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