

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

# Executar um trabalho de ajuste de hiperparâmetros de inicialização a quente
<a name="automatic-model-tuning-warm-start"></a>

Use a inicialização a quente para iniciar um trabalho de ajuste de hiperparâmetros usando um ou mais trabalhos de ajuste anteriores como ponto de partida. Os resultados dos trabalhos de ajuste anteriores são usados para informar quais combinações de hiperparâmetros devem ser pesquisadas no novo trabalho de ajuste. O ajuste de hiperparâmetros usa a pesquisa bayesiana ou a pesquisa aleatória para escolher combinações de valores de hiperparâmetros nos intervalos especificados por você. Para obter mais informações, consulte [Entenda as estratégias de ajuste de hiperparâmetros disponíveis na Amazon AI SageMaker](automatic-model-tuning-how-it-works.md). O uso de informações de trabalhos de ajuste de hiperparâmetros anteriores pode ajudar a aumentar o desempenho do novo trabalho de ajuste de hiperparâmetros, tornando a pesquisa pela melhor combinação de hiperparâmetros mais eficiente.

**nota**  
Normalmente, os trabalhos de ajuste com inicialização a quente demoram mais para serem iniciados do que os trabalhos de ajuste de hiperparâmetros padrão, porque os resultados dos trabalhos pai precisam ser carregados antes que o trabalho possa ser iniciado. O aumento do tempo depende do número total de trabalhos de treinamento executados pelos trabalhos pai.

Razões para considerar a inicialização a quente incluem as seguintes:
+ Para aumentar gradualmente o número de trabalhos de treinamento ao longo de vários trabalhos de ajuste com base nos resultados após cada iteração.
+ Para ajustar um modelo usando os novos dados que você recebeu.
+ Para alterar os intervalos de hiperparâmetros que você usou em um trabalho de ajuste anterior, mude hiperparâmetros estáticos para ajustáveis ou altere hiperparâmetros ajustáveis para valores estáticos.
+ Você parou um trabalho de hiperparâmetros anterior precocemente ou ele foi interrompido inesperadamente.

**Topics**
+ [Tipos de trabalhos de ajuste com inicialização a quente](#tuning-warm-start-types)
+ [Restrições do ajuste com inicialização a quente](#warm-start-tuning-restrictions)
+ [Caderno de amostra para ajuste com inicialização a quente](#warm-start-tuning-sample-notebooks)
+ [Criar um trabalho de ajuste com inicialização a quente](#warm-start-tuning-example)

## Tipos de trabalhos de ajuste com inicialização a quente
<a name="tuning-warm-start-types"></a>

Existem dois tipos diferentes de trabalhos de ajuste com inicialização a quente:

`IDENTICAL_DATA_AND_ALGORITHM`  
O novo trabalho de ajuste de hiperparâmetros usa os mesmos dados de entrada e imagem de treinamento que os trabalhos de ajuste pai. Você pode alterar os intervalos de hiperparâmetros a serem pesquisados e o número máximo de trabalhos de treinamento executados pela tarefa de ajuste de hiperparâmetros. Você também pode transformar os hiperparâmetros de ajustáveis para estáticos e de estáticos para ajustáveis, mas o número total de hiperparâmetros estáticos mais os ajustáveis deve permanecer o mesmo que o de todos os trabalhos pai. Não é possível usar uma nova versão do algoritmo de treinamento, a menos que as alterações na nova versão não afetem o algoritmo em si. Por exemplo, são permitidas alterações que melhoram o registro em log ou adicionam compatibilidade com um formato de dados diferente.  
Use dados e algoritmos idênticos ao usar os mesmos dados de treinamento de um trabalho de ajuste de hiperparâmetros anterior, mas você deseja aumentar o número total de trabalhos de treinamento ou alterar intervalos ou valores de hiperparâmetros.  
Quando você executa um trabalho de ajuste com inicialização a quente do tipo `IDENTICAL_DATA_AND_ALGORITHM`, há um campo adicional na resposta para a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html) denominado `OverallBestTrainingJob`. O valor desse campo é o [TrainingJobSummary](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobSummary.html) do trabalho de treinamento com o melhor valor de métrica objetiva de todos os trabalhos de treinamento executados por esse trabalho de ajuste e de todos os trabalhos pai especificados para o trabalho de ajuste com inicialização a quente.

`TRANSFER_LEARNING`  
O novo trabalho de ajuste de hiperparâmetros pode incluir dados de entrada, intervalos de hiperparâmetros, o número máximo de trabalhos de treinamento simultâneos e número máximo de trabalhos de treinamento que são diferentes daqueles dos respectivos trabalhos de ajuste de hiperparâmetros pai. Você também pode transformar os hiperparâmetros de ajustáveis para estáticos e de estáticos para ajustáveis, mas o número total de hiperparâmetros estáticos mais os ajustáveis deve permanecer o mesmo que o de todos os trabalhos pai. A imagem do algoritmo de treinamento também pode ser uma versão diferente da usada no trabalho de ajuste de hiperparâmetros pai. Quando você usa a aprendizado por transferência, as alterações no conjunto de dados ou no algoritmo que afetam significativamente o valor da métrica objetiva podem reduzir a utilidade do uso do ajuste com inicialização a quente.

## Restrições do ajuste com inicialização a quente
<a name="warm-start-tuning-restrictions"></a>

As seguintes restrições são aplicáveis a todos os trabalhos de ajuste com inicialização a quente:
+ Um trabalho de ajuste pode ter no máximo 5 trabalhos pai, e todos esses trabalhos pai devem estar em um estado terminal (`Completed`, `Stopped` ou `Failed`) antes do início do novo trabalho de ajuste.
+ A métrica objetiva usada no novo trabalho de ajuste deve ser a mesma que a métrica objetiva usada nos trabalhos pai.
+ O número total de hiperparâmetros estáticos mais os ajustáveis deve permanecer o mesmo entre os trabalhos pai e o novo trabalho de ajuste. Por causa disso, se você acha que pode querer usar um hiperparâmetro como ajustável em um trabalho de ajuste futuro com inicialização a quente, deve adicioná-lo como um hiperparâmetro estático ao criar um trabalho de ajuste.
+ O tipo de cada hiperparâmetro (contínuo, inteiro, categórico) não deve ser alterado entre os trabalhos pai e o novo trabalho de ajuste.
+ O número total de alterações de hiperparâmetros ajustáveis nos trabalhos pai para hiperparâmetros estáticos no novo trabalho de ajuste, mais o número de alterações nos valores de parâmetros estáticos, não pode ser maior que 10. Por exemplo, se o trabalho pai tiver um hiperparâmetro categórico ajustável com os valores possíveis `red` e `blue` e você alterar esse hiperparâmetro para estático no novo trabalho de ajuste, isso contará como 2 alterações em relação ao total permitido de 10. Se o mesmo hiperparâmetro tivesse um valor estático de `red` no trabalho pai e você alterasse o valor estático para `blue` no novo trabalho de ajuste, isso também contaria como 2 alterações.
+ O ajuste com inicialização a quente não é recursivo. Por exemplo, se você criar `MyTuningJob3` como um trabalho de ajuste com inicialização a quente com `MyTuningJob2` como trabalho pai, e `MyTuningJob2` for por si só um trabalho de ajuste com inicialização a quente com um trabalho pai `MyTuningJob1`, as informações aprendidas durante a execução de `MyTuningJob1` não serão usadas para `MyTuningJob3`. Se você quiser usar as informações de `MyTuningJob1`, deverá adicioná-lo explicitamente como pai de `MyTuningJob3`.
+ Os trabalhos de treinamento iniciados por cada trabalho pai em um trabalho de ajuste com inicialização a quente são comparados com os 500 trabalhos de treinamento máximos para um trabalho de ajuste.
+ Os trabalhos de ajuste de hiperparâmetros criados antes de 1º de outubro de 2018 não podem ser usados como trabalhos pai para trabalhos de ajuste com inicialização a quente.

## Caderno de amostra para ajuste com inicialização a quente
<a name="warm-start-tuning-sample-notebooks"></a>

Para ver um exemplo de caderno que mostra como usar o ajuste de partida a quente, consulte [https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter\$1tuning/image\$1classification\$1warmstart/hpo\$1image\$1classification\$1warmstart.ipynb](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynb).

## Criar um trabalho de ajuste com inicialização a quente
<a name="warm-start-tuning-example"></a>

Você pode usar o AWS SDK de baixo nível para Python (Boto 3) ou o SDK AI SageMaker Python de alto nível para criar um trabalho de ajuste de início rápido.

**Topics**
+ [Crie um Warm Start Tuning Job (API de SageMaker IA de baixo nível para Python (Boto 3))](#warm-start-tuning-example-boto)
+ [Crie um Warm Start Tuning Job (SageMaker AI Python SDK)](#warm-start-tuning-example-sdk)

### Crie um Warm Start Tuning Job (API de SageMaker IA de baixo nível para Python (Boto 3))
<a name="warm-start-tuning-example-boto"></a>

Para utilizar o ajuste com inicialização a quente, você especifica os valores de um objeto [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html) e o transmite como o campo `WarmStartConfig` em uma chamada para [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html).

O código a seguir mostra como criar um [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html)objeto e passá-lo para o [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)trabalho usando a API SageMaker AI de baixo nível para Python (Boto 3).

Crie o objeto `HyperParameterTuningJobWarmStartConfig`:

```
warm_start_config = {
          "ParentHyperParameterTuningJobs" : [
          {"HyperParameterTuningJobName" : 'MyParentTuningJob'}
          ],
          "WarmStartType" : "IdenticalDataAndAlgorithm"
}
```

Crie o trabalho de ajuste com inicialização a quente:

```
smclient = boto3.Session().client('sagemaker')
smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = 'MyWarmStartTuningJob',
   HyperParameterTuningJobConfig = tuning_job_config, # See notebook for tuning configuration
   TrainingJobDefinition = training_job_definition, # See notebook for job definition
   WarmStartConfig = warm_start_config)
```

### Crie um Warm Start Tuning Job (SageMaker AI Python SDK)
<a name="warm-start-tuning-example-sdk"></a>

Para usar o [SDK do Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) para executar um trabalho de ajuste de início rápido, você:
+ Especifica os trabalhos pai e o tipo de inicialização a quente usando um objeto `WarmStartConfig`.
+ Passe o `WarmStartConfig` objeto como o valor do `warm_start_config` argumento de um [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/tuner.html)objeto.
+ Chama o método `fit` do objeto `HyperparameterTuner`.

[Para obter mais informações sobre o uso do [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) para ajuste de hiperparâmetros, consulte \$1. https://github.com/aws/ sagemaker-python-sdk sagemaker-automatic-model-tuning](https://github.com/aws/sagemaker-python-sdk#sagemaker-automatic-model-tuning)

Este exemplo usa um estimador que usa o algoritmo [Classificação de imagens - MXNet](image-classification.md) para treinamento. O código a seguir define os intervalos de hiperparâmetros que o trabalho de ajuste com inicialização a quente procura para encontrar a melhor combinação de valores. Para obter informações sobre como definir intervalos de hiperparâmetros, consulte [Definir intervalos de hiperparâmetros](automatic-model-tuning-define-ranges.md).

```
hyperparameter_ranges = {'learning_rate': ContinuousParameter(0.0, 0.1),
                         'momentum': ContinuousParameter(0.0, 0.99)}
```

O código a seguir configura o trabalho de ajuste com inicialização a quente criando um objeto `WarmStartConfig`.

```
from sagemaker.tuner import WarmStartConfig,WarmStartTypes

parent_tuning_job_name = "MyParentTuningJob"
warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents={parent_tuning_job_name})
```

Agora, defina os valores para hiperparâmetros estáticos, que são hiperparâmetros que mantêm o mesmo valor para cada trabalho de treinamento executado pelo trabalho de ajuste com inicialização a quente. No código a seguir, `imageclassification` é um estimador criado anteriormente.

```
imageclassification.set_hyperparameters(num_layers=18,
                                        image_shape='3,224,224',
                                        num_classes=257,
                                        num_training_samples=15420,
                                        mini_batch_size=128,
                                        epochs=30,
                                        optimizer='sgd',
                                        top_k='2',
                                        precision_dtype='float32',
                                        augmentation_type='crop')
```

Agora, crie o objeto `HyperparameterTuner` e transmita o objeto `WarmStartConfig` que você criou anteriormente como o argumento `warm_start_config`.

```
tuner_warm_start = HyperparameterTuner(imageclassification,
                            'validation:accuracy',
                            hyperparameter_ranges,
                            objective_type='Maximize',
                            max_jobs=10,
                            max_parallel_jobs=2,
                            base_tuning_job_name='warmstart',
                            warm_start_config=warm_start_config)
```

Por fim, chame o método `fit` do objeto `HyperparameterTuner` para executar o trabalho de ajuste com inicialização a quente.

```
tuner_warm_start.fit(
        {'train': s3_input_train, 'validation': s3_input_validation},
        include_cls_metadata=False)
```