Definir intervalos de hiperparâmetros - Amazon SageMaker

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

Definir intervalos de hiperparâmetros

Este guia mostra como usar SageMaker APIs para definir intervalos de hiperparâmetros. Também fornece uma lista de tipos de escalonamento de hiperparâmetros que você pode usar.

A escolha de hiperparâmetros e intervalos afeta significativamente o desempenho do seu trabalho de ajuste. O ajuste de hiperparâmetros encontra os melhores valores de hiperparâmetros para o seu modelo ao pesquisar em uma faixa de valores que você especifica para cada hiperparâmetro ajustável. Você também pode especificar até 100 hiperparâmetros estáticos que não mudam ao longo do trabalho de ajuste. Você pode usar até 100 hiperparâmetros no total (estático+ajustável). Para obter orientação sobre como escolher hiperparâmetros e intervalos, consulte Práticas recomendadas para o ajuste de hiperparâmetros. Você também pode usar o ajuste automático para encontrar as configurações ideais do trabalho de ajuste. Para mais informações, consulte a seção Ajuste automático a seguir.

nota

SageMaker O ajuste automático do modelo (AMT) pode adicionar hiperparâmetros adicionais que contribuem para o limite total de 100 hiperparâmetros. Atualmente, para passar sua métrica objetiva para o trabalho de ajuste para uso durante o treinamento, SageMaker ela é _tuning_objective_metric adicionada automaticamente.

Hiperparâmetros estáticos

Use hiperparâmetros estáticos para os seguintes casos: Por exemplo, você pode usar o AMT para ajustar seu modelo usando param1 (um parâmetro ajustável) e param2 (um parâmetro estático). Se você fizer isso, use um espaço de pesquisa param1 que esteja entre dois valores e passe param2 como um hiperparâmetro estático, da seguinte maneira.

param1: ["range_min","range_max"] param2: "static_value"

Os hiperparâmetros estáticos têm a seguinte estrutura:

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Você pode usar a SageMaker API da Amazon para especificar pares de valores-chave no campo StaticHyperParâmetros do HyperParameterTrainingJobDefinition parâmetro que você passa para a operação CreateHyperParameterTuningJob.

Hiperparâmetros dinâmicos

Você pode usar a SageMaker API para definir intervalos de hiperparâmetros. Especifique os nomes dos hiperparâmetros e as faixas de valores no campo ParameterRanges do parâmetro HyperParameterTuningJobConfig que você passa para a operação CreateHyperParameterTuningJob.

O campo ParameterRanges tem três subcampos: categórico, inteiro e contínuo. Você pode definir até 30 hiperparâmetros ajustáveis totais (categóricos + inteiros + contínuos) para pesquisar.

nota

Cada hiperparâmetro categórico pode ter no máximo 30 valores diferentes.

Os hiperparâmetros dinâmicos têm a seguinte estrutura:

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Se você criar um trabalho de ajuste com uma Grid estratégia, só poderá especificar valores categóricos. Não é necessário fornecer o MaxNumberofTrainingJobs. Esse valor é inferido do número total de configurações que podem ser produzidas a partir de seus parâmetros categóricos. Se especificado, o valor de MaxNumberOfTrainingJobs deve ser igual ao número total de combinações categóricas distintas possíveis.

Ajuste automático

Para economizar tempo e recursos pesquisando intervalos de hiperparâmetros, recursos ou métricas objetivas, o ajuste automático pode adivinhar automaticamente os valores ideais para alguns campos de hiperparâmetros. Use o ajuste automático para encontrar valores ideais para os seguintes campos:

  • ParameterRanges— Os nomes e intervalos de hiperparâmetros que um trabalho de ajuste pode otimizar.

  • ResourceLimits— O máximo de recursos a serem usados em um trabalho de ajuste. Esses recursos podem incluir o número máximo de trabalhos de treinamento, o tempo de execução máximo de um trabalho de ajuste e o número máximo de trabalhos de treinamento que podem ser executados ao mesmo tempo.

  • TrainingJobEarlyStoppingTipo — Um sinalizador que interrompe um trabalho de treinamento se um trabalho não estiver melhorando significativamente em relação a uma métrica objetiva. O padrão é habilitado. Para ter mais informações, consulte Interromper trabalhos de treinamento precocemente.

  • RetryStrategy— O número de vezes que você deve tentar novamente um trabalho de treinamento. Valores diferentes de zero para RetryStrategy podem aumentar a probabilidade de seu trabalho ser concluído com sucesso.

  • Strategy — Especifica como o ajuste de hiperparâmetros escolhe as combinações de valores de hiperparâmetros a serem usadas no trabalho de treinamento que ele inicia.

  • ConvergenceDetected— Uma bandeira para indicar que o ajuste automático do modelo (AMT) detectou a convergência do modelo.

Para usar o ajuste automático, faça o seguinte:

  1. Especifique o hiperparâmetro e um valor de exemplo no AutoParameters campo da ParameterRangesAPI.

  2. Habilite o ajuste automático.

O AMT determinará se seus hiperparâmetros e valores de exemplo são elegíveis para ajuste automático. Os hiperparâmetros que podem ser usados no ajuste automático são automaticamente atribuídos ao tipo de intervalo de parâmetros apropriado. Em seguida, o AMT usa ValueHint para selecionar um intervalo ideal para você. Você pode usar a API DescribeHyperParameterTrainingJob para visualizar os intervalos.

O exemplo a seguir mostra como configurar um trabalho de ajuste que usa o ajuste automático. No exemplo de configuração, o hiperparâmetro max_depth contém ValueHint um valor de exemplo de 4.

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

Continuando com o exemplo anterior, um trabalho de ajuste é criado depois que a configuração anterior é incluída em uma chamada para a API CreateHyperParameterTuningJob. Em seguida, o autotune converte o hiperparâmetro max_depth em hiperparâmetro. AutoParameters IntegerParameterRanges A resposta a seguir de uma API DescribeHyperParameterTrainingJob mostra que os melhores IntegerParameterRanges para max_depth estão entre 2 e 8.

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

Tipos de escalabilidade de hiperparâmetros

Para intervalos de hiperparâmetros inteiros e contínuos, você pode escolher a escala que deseja que o ajuste de hiperparâmetros utilize. Por exemplo, para pesquisar o intervalo de valores, você pode especificar um valor para o campo ScalingType do intervalo de hiperparâmetros. Você pode escolher entre os seguintes tipos de escalonamento de hiperparâmetros:

Auto

SageMaker o ajuste de hiperparâmetros escolhe a melhor escala para o hiperparâmetro.

Linear

O ajuste de hiperparâmetros pesquisa os valores no intervalo de hiperparâmetros usando uma escala linear. Normalmente, você escolhe isso se o intervalo de todos os valores, do menor ao mais alto, for relativamente pequeno (dentro de uma ordem de magnitude). A busca uniforme de valores dentro da faixa proporciona uma exploração razoável de todo o intervalo.

Logarítmica

O ajuste de hiperparâmetros pesquisa os valores no intervalo de hiperparâmetros usando uma escala logarítmica.

A escalabilidade logarítmica funciona apenas para intervalos que têm valores maiores que 0.

Escolha a escala logarítmica quando estiver pesquisando uma faixa que abrange várias ordens de magnitude.

Por exemplo, se você estiver ajustando um modelo Ajustar um modelo de aprendizagem linear e especificar um intervalo de valores entre 0,0001 e 1,0 para o learning_rate hiperparâmetro, considere o seguinte: Pesquisar uniformemente em uma escala logarítmica fornece uma amostra melhor de todo o intervalo do que pesquisar em uma escala linear. Isso ocorre porque pesquisar em uma escala linear dedicaria, em média, 90% do seu orçamento de treinamento apenas aos valores entre 0,1 e 1,0. Como resultado, isso deixa apenas 10% do seu orçamento de treinamento para valores entre 0,0001 e 0,1.

ReverseLogarithmic

O ajuste de hiperparâmetros pesquisa os valores no intervalo de hiperparâmetros usando uma escala logarítmica reversa. A escala logarítmica reversa é suportada somente para intervalos contínuos de hiperparâmetros. Ela não é compatível para intervalos de hiperparâmetros inteiros.

Escolha a escalabilidade logarítmica inversa ao pesquisar um intervalo muito sensível a pequenas alterações que sejam muito próximas de 1.

A escalabilidade logarítmica inversa funciona apenas para intervalos que estão inteiramente dentro do intervalo 0<=x<1,0.

Para ver um exemplo de notebook que usa escalabilidade de hiperparâmetros, consulte esses exemplos de SageMaker hiperparâmetros da Amazon em. GitHub