

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

# Configurar e executar um trabalho de ajuste de hiperparâmetros
<a name="automatic-model-tuning-ex-tuning-job"></a>

**Importante**  
Políticas personalizadas do IAM que permitem que o Amazon SageMaker SageMaker Studio ou o Amazon Studio Classic criem SageMaker recursos da Amazon também devem conceder permissões para adicionar tags a esses recursos. A permissão para adicionar tags aos recursos é necessária porque o Studio e o Studio Classic marcam automaticamente todos os recursos que eles criam. Se uma política do IAM permitir que o Studio e o Studio Classic criem recursos, mas não permitisse a marcação, erros AccessDenied "" podem ocorrer ao tentar criar recursos. Para obter mais informações, consulte [Forneça permissões para marcar recursos de SageMaker IA](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS políticas gerenciadas para Amazon SageMaker AI](security-iam-awsmanpol.md)que dão permissões para criar SageMaker recursos já incluem permissões para adicionar tags ao criar esses recursos.

Um hiperparâmetro é um parâmetro de alto nível que influencia o processo de aprendizado durante o treinamento de modelos. Para obter as melhores predições de modelo, você pode otimizar uma configuração de hiperparâmetros ou definir valores de hiperparâmetros. O processo de encontrar uma configuração ideal é chamado de ajuste de hiperparâmetros. Para configurar e executar um trabalho de ajuste de hiperparâmetros, conclua as etapas nestas orientações.

**Topics**
+ [Configurações do trabalho de ajuste de hiperparâmetros](#automatic-model-tuning-ex-low-tuning-config)
+ [Configurar os trabalhos de treinamento](#automatic-model-tuning-ex-low-training-def)
+ [Nomear e executar o trabalho de ajuste de hiperparâmetros](#automatic-model-tuning-ex-low-launch)
+ [Monitorar o andamento de um trabalho de ajuste de hiperparâmetros](automatic-model-tuning-monitor.md)
+ [Exibir o status dos trabalhos de treinamento](#automatic-model-tuning-monitor-training)
+ [Visualizar o melhor trabalho de treinamento](#automatic-model-tuning-best-training-job)

## Configurações do trabalho de ajuste de hiperparâmetros
<a name="automatic-model-tuning-ex-low-tuning-config"></a>

Para especificar configurações para o trabalho de ajuste de hiperparâmetros, defina um objeto JSON ao criar o trabalho de ajuste. Passe esse objeto JSON como o valor do parâmetro `HyperParameterTuningJobConfig` para a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html).

Nesse objeto JSON, especifique o seguinte:

Neste objeto JSON, especifique:
+ `HyperParameterTuningJobObjective` - A métrica objetiva usada para avaliar o desempenho do trabalho de treinamento lançado pelo trabalho de ajuste de hiperparâmetros.
+ `ParameterRanges` - A faixa de valores que um hiperparâmetro ajustável pode usar durante a otimização. Para obter mais informações, consulte [Definir intervalos de hiperparâmetros](automatic-model-tuning-define-ranges.md).
+ `RandomSeed` - Um valor usado para inicializar um gerador de números pseudo-aleatórios. Definir uma semente aleatória permitirá que as estratégias de busca de ajuste de hiperparâmetros produzam configurações mais consistentes para o mesmo trabalho de ajuste (opcional).
+ `ResourceLimits` - O número máximo de trabalhos de treinamento e treinamento paralelo que o trabalho de ajuste de hiperparâmetros pode usar.

**nota**  
Se você usa seu próprio algoritmo para ajuste de hiperparâmetros, em vez de um [algoritmo integrado](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) de SageMaker IA, você deve definir métricas para seu algoritmo. Para obter mais informações, consulte [Definir métricas](automatic-model-tuning-define-metrics-variables.md#automatic-model-tuning-define-metrics).

O exemplo de código a seguir mostra como configurar um trabalho de ajuste de hiperparâmetros usando o [algoritmo do XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) integrado. O exemplo de código mostra como definir intervalos para os hiperparâmetros `eta`, `alpha`, `min_child_weight` e `max_depth`. Para obter mais informações sobre esses e outros hiperparâmetros, consulte [Parâmetros do XGBoost](https://xgboost.readthedocs.io/en/release_1.2.0/parameter.html). 

Neste exemplo de código, a métrica objetiva para o trabalho de ajuste de hiperparâmetros encontra a configuração de hiperparâmetros que maximiza. `validation:auc` SageMaker Os algoritmos integrados de IA gravam automaticamente a métrica objetiva CloudWatch nos registros. O exemplo de código a seguir mostra como definir um `RandomSeed`. 

```
tuning_job_config = {
    "ParameterRanges": {
      "CategoricalParameterRanges": [],
      "ContinuousParameterRanges": [
        {
          "MaxValue": "1",
          "MinValue": "0",
          "Name": "eta"
        },
        {
          "MaxValue": "2",
          "MinValue": "0",
          "Name": "alpha"
        },
        {
          "MaxValue": "10",
          "MinValue": "1",
          "Name": "min_child_weight"
        }
      ],
      "IntegerParameterRanges": [
        {
          "MaxValue": "10",
          "MinValue": "1",
          "Name": "max_depth"
        }
      ]
    },
    "ResourceLimits": {
      "MaxNumberOfTrainingJobs": 20,
      "MaxParallelTrainingJobs": 3
    },
    "Strategy": "Bayesian",
    "HyperParameterTuningJobObjective": {
      "MetricName": "validation:auc",
      "Type": "Maximize"
    },
    "RandomSeed" : 123
  }
```

## Configurar os trabalhos de treinamento
<a name="automatic-model-tuning-ex-low-training-def"></a>

O trabalho de ajuste de hiperparâmetros iniciará trabalhos de treinamento para encontrar uma configuração ideal de hiperparâmetros. Esses trabalhos de treinamento devem ser configurados usando a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)API de SageMaker IA. 

Para configurar os trabalhos de treinamento, defina um objeto JSON e passe-o como o valor do `TrainingJobDefinition` parâmetro interno do `CreateHyperParameterTuningJob`.

Neste objeto JSON, você pode especificar o seguinte: 
+ `AlgorithmSpecification` - O [caminho do registro](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html) da imagem do Docker contendo o algoritmo de treinamento e os metadados relacionados. Para especificar um algoritmo, você pode usar seu próprio [algoritmo personalizado](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html) dentro de um contêiner [Docker](https://docs.docker.com/get-started/overview/) ou um [algoritmo integrado de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) (obrigatório).
+ `InputDataConfig` - A configuração de entrada, incluindo `ChannelName`, `ContentType` e a fonte de dados para seus dados de treinamento e teste (obrigatório).
+ `InputDataConfig` - A configuração de entrada, incluindo `ChannelName`, `ContentType` e a fonte de dados para seus dados de treinamento e teste (obrigatório).
+ O local de armazenamento da saída do algoritmo. Especifique o bucket do S3 no qual você deseja armazenar a saída dos trabalhos de treinamento.
+ `RoleArn`— O [Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (ARN) de uma função AWS Identity and Access Management (IAM) que a SageMaker IA usa para realizar tarefas. As tarefas incluem ler dados de entrada, baixar uma imagem do Docker, gravar artefatos de modelo em um bucket do S3, gravar CloudWatch registros no Amazon Logs e gravar métricas na Amazon CloudWatch (obrigatório).
+ `StoppingCondition` - O runtime máximo em segundos que um trabalho de treinamento pode ser executado antes de ser interrompido. Esse valor deve ser maior que o tempo necessário para treinar seu modelo (obrigatório).
+ `MetricDefinitions` - O nome e a expressão regular que definem todas as métricas que os trabalhos de treinamento emitem. Defina métricas somente quando você usar um algoritmo de treinamento personalizado. O exemplo no código a seguir usa um algoritmo integrado, que já tem métricas definidas. Para obter informações sobre como definir métricas (opcional), consulte [Definir métricas](automatic-model-tuning-define-metrics-variables.md#automatic-model-tuning-define-metrics).
+ `TrainingImage` - A imagem do contêiner do [Docker](https://docs.docker.com/get-started/overview/) que especifica o algoritmo de treinamento (opcional).
+ `StaticHyperParameters` - O nome e os valores dos hiperparâmetros que não estão ajustados no trabalho de ajuste (opcional).

O seguinte exemplo de código define valores estáticos para os parâmetros `eval_metric`, `num_round`, `objective`, `rate_drop` e `tweedie_variance_power` do algoritmo interno [Algoritmo XGBoost com Amazon AI SageMaker](xgboost.md):

------
#### [ SageMaker Python SDK v1 ]

```
from sagemaker.amazon.amazon_estimator import get_image_uri
training_image = get_image_uri(region, 'xgboost', repo_version='1.0-1')

s3_input_train = 's3://{}/{}/train'.format(bucket, prefix)
s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix)

training_job_definition = {
    "AlgorithmSpecification": {
      "TrainingImage": training_image,
      "TrainingInputMode": "File"
    },
    "InputDataConfig": [
      {
        "ChannelName": "train",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_train
          }
        }
      },
      {
        "ChannelName": "validation",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_validation
          }
        }
      }
    ],
    "OutputDataConfig": {
      "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix)
    },
    "ResourceConfig": {
      "InstanceCount": 2,
      "InstanceType": "ml.c4.2xlarge",
      "VolumeSizeInGB": 10
    },
    "RoleArn": role,
    "StaticHyperParameters": {
      "eval_metric": "auc",
      "num_round": "100",
      "objective": "binary:logistic",
      "rate_drop": "0.3",
      "tweedie_variance_power": "1.4"
    },
    "StoppingCondition": {
      "MaxRuntimeInSeconds": 43200
    }
}
```

------
#### [ SageMaker Python SDK v2 ]

```
training_image = sagemaker.image_uris.retrieve('xgboost', region, '1.0-1')

s3_input_train = 's3://{}/{}/train'.format(bucket, prefix)
s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix)

training_job_definition = {
    "AlgorithmSpecification": {
      "TrainingImage": training_image,
      "TrainingInputMode": "File"
    },
    "InputDataConfig": [
      {
        "ChannelName": "train",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_train
          }
        }
      },
      {
        "ChannelName": "validation",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_validation
          }
        }
      }
    ],
    "OutputDataConfig": {
      "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix)
    },
    "ResourceConfig": {
      "InstanceCount": 2,
      "InstanceType": "ml.c4.2xlarge",
      "VolumeSizeInGB": 10
    },
    "RoleArn": role,
    "StaticHyperParameters": {
      "eval_metric": "auc",
      "num_round": "100",
      "objective": "binary:logistic",
      "rate_drop": "0.3",
      "tweedie_variance_power": "1.4"
    },
    "StoppingCondition": {
      "MaxRuntimeInSeconds": 43200
    }
}
```

------

## Nomear e executar o trabalho de ajuste de hiperparâmetros
<a name="automatic-model-tuning-ex-low-launch"></a>

Depois de configurar o trabalho de ajuste de hiperparâmetros, você pode iniciá-lo chamando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html). O exemplo de código a seguir usa `tuning_job_config` e `training_job_definition`. Eles foram definidos nos dois exemplos de código anteriores para criar um trabalho de ajuste de hiperparâmetros.

```
tuning_job_name = "MyTuningJob"
smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = tuning_job_name,
                                           HyperParameterTuningJobConfig = tuning_job_config,
                                           TrainingJobDefinition = training_job_definition)
```

## Exibir o status dos trabalhos de treinamento
<a name="automatic-model-tuning-monitor-training"></a>

**Para exibir o status dos trabalhos de treinamento executados pelo trabalho de ajuste de hiperparâmetros**

1. Na lista de tarefas de ajuste de hiperparâmetros, escolha o trabalho que você executou.

1. Escolha **Trabalhos de treinamento**.  
![Localização dos Trabalhos de treinamento no .](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/hyperparameter-training-jobs.png)

1. Veja o status de cada trabalho de treinamento. Para ver mais detalhes sobre um trabalho, escolha-o na lista de trabalhos de treinamento. Para exibir um resumo do status de todos os trabalhos de treinamento executados pelo trabalho de ajuste de hiperparâmetros, consulte **Training job status counter (Contagem de status de trabalhos de treinamento)**.

   Um trabalho de treinamento pode ser:
   + `Completed` - O trabalho de treinamento foi concluído com êxito.
   + `InProgress` - O trabalho de treinamento está em andamento.
   + `Stopped` - O trabalho de treinamento foi interrompido manualmente antes de ser concluído.
   + `Failed (Retryable)` - O trabalho de treinamento falhou, mas pode ser repetido. Um trabalho de treinamento com falha pode ser repetido apenas se falhar devido a um erro de serviço interno.
   + `Failed (Non-retryable)` - O trabalho de treinamento falhou e não pode ser repetido. Um trabalho de treinamento com falha não pode ser repetido quando ocorre um erro do cliente.
**nota**  
Os trabalhos de ajuste de hiperparâmetros podem ser interrompidos e os recursos subjacentes [excluídos](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-ex-cleanup.html), mas os trabalhos em si não podem ser excluídos.

## Visualizar o melhor trabalho de treinamento
<a name="automatic-model-tuning-best-training-job"></a>

Um trabalho de ajuste de hiperparâmetros usa a métrica objetiva retornada por cada trabalho de treinamento para avaliar trabalhos de treinamento. Enquanto o trabalho de ajuste de hiperparâmetros está em andamento, o melhor trabalho de treinamento é aquele que retornou a melhor métrica objetiva até o momento. Depois que o trabalho de ajuste de hiperparâmetros for concluído, o melhor trabalho de treinamento será aquele que retornou a melhor métrica objetiva.

Para visualizar o melhor trabalho de treinamento, escolha **Best training job (Melhor trabalho de treinamento)**.

![Localização do Melhor trabalho de treinamento no console de trabalhos de ajuste de hiperparâmetros.](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/best-training-job.png)


Para implantar o melhor trabalho de treinamento como um modelo que você pode hospedar em um endpoint de SageMaker IA, escolha **Criar modelo**.

### Próxima etapa
<a name="automatic-model-tuning-ex-next-cleanup"></a>

[Fazer a limpeza.](automatic-model-tuning-ex-cleanup.md)