Otimizar hiperparâmetros para o modelo com o serviço Azure Machine LearningTune hyperparameters for your model with Azure Machine Learning service

Otimize eficientemente hiperparâmetros para o modelo com o serviço Azure Machine Learning.Efficiently tune hyperparameters for your model using Azure Machine Learning service. A otimização de hiper-parâmetros inclui os seguintes passos:Hyperparameter tuning includes the following steps:

  • Definir o espaço de pesquisa de parâmetroDefine the parameter search space
  • Especifique uma métrica primária para otimizarSpecify a primary metric to optimize
  • Especificar critérios de cessação antecipada de mau desempenho execuçõesSpecify early termination criteria for poorly performing runs
  • Alocar recursos para a otimização de hiper-parâmetrosAllocate resources for hyperparameter tuning
  • Inicie uma experiência com a configuração acimaLaunch an experiment with the above configuration
  • Visualize as execuções de preparaçãoVisualize the training runs
  • Selecionar o melhor desempenho de configuração para o modeloSelect the best performing configuration for your model

Quais são hiperparâmetros?What are hyperparameters?

Hiperparâmetros são parâmetros ajustável que escolher para preparar um modelo que regem o processo de treinamento em si.Hyperparameters are adjustable parameters you choose to train a model that govern the training process itself. Por exemplo, para preparar uma rede neural profunda, decidir o número de camadas ocultas na rede e o número de nós em cada camada antes do modelo de formação.For example, to train a deep neural network, you decide the number of hidden layers in the network and the number of nodes in each layer prior to training the model. Estes valores, normalmente, mantenha-se constante durante o processo de treinamento.These values usually stay constant during the training process.

Em cenários de aprendizagem profunda de aprendizagem automática / máquinas, desempenho de modelos depende muito os valores de hiper-parâmetros selecionados.In deep learning / machine learning scenarios, model performance depends heavily on the hyperparameter values selected. O objetivo de exploração de hiper-parâmetros é pesquisar em várias configurações de hiper-parâmetros para encontrar uma configuração que resulta em melhor desempenho.The goal of hyperparameter exploration is to search across various hyperparameter configurations to find a configuration that results in the best performance. Normalmente, o processo de exploração de hiper-parâmetros é extremamente manual, uma vez que o espaço de pesquisa é grande e avaliação de cada configuração pode ser cara.Typically, the hyperparameter exploration process is painstakingly manual, given that the search space is vast and evaluation of each configuration can be expensive.

O Azure Machine Learning permite-lhe automatizar hiper-parâmetros exploração de uma forma eficiente, economizando tempo significativo e recursos.Azure Machine Learning allows you to automate hyperparameter exploration in an efficient manner, saving you significant time and resources. Especifique o intervalo de valores de hiper-parâmetros e executa um número máximo de treinamento.You specify the range of hyperparameter values and a maximum number of training runs. O sistema, em seguida, inicia várias execuções simultâneas com configurações de parâmetros diferentes e automaticamente localiza a configuração que resulta em melhor desempenho, medido pela métrica que escolher.The system then automatically launches multiple simultaneous runs with different parameter configurations and finds the configuration that results in the best performance, measured by the metric you choose. Execuções de preparação com mau desempenho são automaticamente antecipadas terminada, a redução de desperdício de recursos de computação.Poorly performing training runs are automatically early terminated, reducing wastage of compute resources. Estes recursos em vez disso, são utilizados para explorar outras configurações de hiper-parâmetros.These resources are instead used to explore other hyperparameter configurations.

Definir o espaço de pesquisaDefine search space

Ajuste automaticamente hiperparâmetros ao explorar o intervalo de valores definidos para cada hiper-parâmetros.Automatically tune hyperparameters by exploring the range of values defined for each hyperparameter.

Tipos de hiperparâmetrosTypes of hyperparameters

Cada hiperparâmetro pode ser discreto ou contínuo e tem uma distribuição de valores descritos por uma expressão de parâmetro.Each hyperparameter can either be discrete or continuous and has a distribution of values described by a parameter expression.

Discretos hiperparâmetrosDiscrete hyperparameters

Hiperparâmetros discretos especificados como uma choice entre valores discretos.Discrete hyperparameters are specified as a choice among discrete values. choice pode ser:choice can be:

  • um ou mais valores separados por vírgulasone or more comma-separated values
  • um range objetoa range object
  • qualquer arbitrário list objetoany arbitrary list object
    {
        "batch_size": choice(16, 32, 64, 128)
        "number_of_hidden_layers": choice(range(1,5))
    }

Neste caso, batch_size assume a um dos valores [16, 32, 64, 128] e number_of_hidden_layers assume um dos valores [1, 2, 3, 4].In this case, batch_size takes on one of the values [16, 32, 64, 128] and number_of_hidden_layers takes on one of the values [1, 2, 3, 4].

Hiperparâmetros discretos avançados também podem ser especificados com uma distribuição.Advanced discrete hyperparameters can also be specified using a distribution. Há suporte para as distribuições seguintes:The following distributions are supported:

  • quniform(low, high, q) -Devolve um valor como round (uniforme (inferior, superior) / p) * pquniform(low, high, q) - Returns a value like round(uniform(low, high) / q) * q
  • qloguniform(low, high, q) -Devolve um valor como round (exp (uniforme (inferior, superior)) / p) * pqloguniform(low, high, q) - Returns a value like round(exp(uniform(low, high)) / q) * q
  • qnormal(mu, sigma, q) -Devolve um valor como round (normal (mu, sigma) / p) * pqnormal(mu, sigma, q) - Returns a value like round(normal(mu, sigma) / q) * q
  • qlognormal(mu, sigma, q) -Devolve um valor como round (exp (normal (mu, sigma)) / p) * pqlognormal(mu, sigma, q) - Returns a value like round(exp(normal(mu, sigma)) / q) * q

Hiperparâmetros contínuosContinuous hyperparameters

Hiperparâmetros contínuos são especificados como uma distribuição através de um intervalo contínuo de valores.Continuous hyperparameters are specified as a distribution over a continuous range of values. Distribuições suportadas incluem:Supported distributions include:

  • uniform(low, high) -Devolve um valor de distribuídas de maneira uniforme entre baixa e altauniform(low, high) - Returns a value uniformly distributed between low and high
  • loguniform(low, high) -Devolve um valor desenhado, de acordo com o exp (uniforme (inferior, superior)), para que o logaritmo de valor de retorno é distribuído uniformementeloguniform(low, high) - Returns a value drawn according to exp(uniform(low, high)) so that the logarithm of the return value is uniformly distributed
  • normal(mu, sigma) -Devolve um valor real que normalmente é distribuído com mean sigma mu e desvio padrãonormal(mu, sigma) - Returns a real value that's normally distributed with mean mu and standard deviation sigma
  • lognormal(mu, sigma) -Devolve um valor desenhado, de acordo com o exp (normal (mu, sigma)), para que o logaritmo de valor de retorno é normalmente distribuídolognormal(mu, sigma) - Returns a value drawn according to exp(normal(mu, sigma)) so that the logarithm of the return value is normally distributed

Um exemplo de uma definição de espaço de parâmetro:An example of a parameter space definition:

    {    
        "learning_rate": normal(10, 3),
        "keep_probability": uniform(0.05, 0.1)
    }

Esse código define um espaço de pesquisa com dois parâmetros - learning_rate e keep_probability.This code defines a search space with two parameters - learning_rate and keep_probability. learning_rate tem uma distribuição normal com o valor médio 10 e um desvio-padrão de 3.learning_rate has a normal distribution with mean value 10 and a standard deviation of 3. keep_probability tem uma distribuição uniforme com um valor mínimo de 0,05 e um valor máximo de 0,1.keep_probability has a uniform distribution with a minimum value of 0.05 and a maximum value of 0.1.

O espaço de hiper-parâmetros de amostragemSampling the hyperparameter space

Também pode especificar o método de amostragem de parâmetro a utilizar a definição de espaço de hiper-parâmetros.You can also specify the parameter sampling method to use over the hyperparameter space definition. O serviço do Azure Machine Learning suporta amostragem aleatória, a amostragem de grade e Bayesianos amostragem.Azure Machine Learning service supports random sampling, grid sampling, and Bayesian sampling.

Amostragem aleatóriaRandom sampling

Numa amostragem aleatória, os valores de hiper-parâmetros são selecionadas aleatoriamente entre o espaço de pesquisa definido.In random sampling, hyperparameter values are randomly selected from the defined search space. A amostragem aleatória permite que o espaço de pesquisa inclua hiperparâmetros discretos e contínuos.Random sampling allows the search space to include both discrete and continuous hyperparameters.

from azureml.train.hyperdrive import RandomParameterSampling
param_sampling = RandomParameterSampling( {
        "learning_rate": normal(10, 3),
        "keep_probability": uniform(0.05, 0.1),
        "batch_size": choice(16, 32, 64, 128)
    }
)

Amostragem de grelhaGrid sampling

A amostragem de grade executa uma pesquisa de grade simples em todos os valores viáveis no espaço de pesquisa definido.Grid sampling performs a simple grid search over all feasible values in the defined search space. Só pode ser utilizado com especificados por meio de hiperparâmetros choice.It can only be used with hyperparameters specified using choice. Por exemplo, o seguinte espaço tem um total de seis amostras:For example, the following space has a total of six samples:

from azureml.train.hyperdrive import GridParameterSampling
param_sampling = GridParameterSampling( {
        "num_hidden_layers": choice(1, 2, 3),
        "batch_size": choice(16, 32)
    }
)

Amostragem de BayesianosBayesian sampling

A amostragem de Bayesiana baseia-se no algoritmo de otimização Bayesiana e faz escolhas inteligentes nos valores de hiperparâmetro para a amostra seguinte.Bayesian sampling is based on the Bayesian optimization algorithm and makes intelligent choices on the hyperparameter values to sample next. Ele escolhe o exemplo com base em como os exemplos anteriores efetuada, como, por exemplo que o novo exemplo melhora a métrica primária comunicada.It picks the sample based on how the previous samples performed, such that the new sample improves the reported primary metric.

Quando utiliza Bayesianos amostragem, o número de execuções simultâneas tem um impacto sobre a eficácia do processo de otimização.When you use Bayesian sampling, the number of concurrent runs has an impact on the effectiveness of the tuning process. Normalmente, um número menor de execuções simultâneas pode levar a convergência de amostragem melhor, uma vez que o menor grau de paralelismo aumenta o número de execuções que tiram partido de execuções concluídas anteriormente.Typically, a smaller number of concurrent runs can lead to better sampling convergence, since the smaller degree of parallelism increases the number of runs that benefit from previously completed runs.

A amostragem de Bayesiana choiceuniformsuporte apenas quniform a distribuições, e no espaço de pesquisa.Bayesian sampling only supports choice, uniform, and quniform distributions over the search space.

from azureml.train.hyperdrive import BayesianParameterSampling
param_sampling = BayesianParameterSampling( {
        "learning_rate": uniform(0.05, 0.1),
        "batch_size": choice(16, 32, 64, 128)
    }
)

Nota

Amostragem de Bayesianos não suporta qualquer política de cessação antecipada (consulte especificar uma política de cessação antecipada).Bayesian sampling does not support any early termination policy (See Specify an early termination policy). Ao utilizar a amostragem de parâmetro Bayesianos, defina early_termination_policy = None, ou deixe de fora o early_termination_policy parâmetro.When using Bayesian parameter sampling, set early_termination_policy = None, or leave off the early_termination_policy parameter.

Especifique a métrica primáriaSpecify primary metric

Especifique a métrica primária que você deseja que o teste de ajuste de hiperparâmetro Otimize.Specify the primary metric you want the hyperparameter tuning experiment to optimize. Cada execução de treinamento é avaliada para a métrica primária.Each training run is evaluated for the primary metric. Mau desempenho execuções (em que a métrica primária não cumpre os critérios definidos pela política de cessação antecipada) será terminada.Poorly performing runs (where the primary metric does not meet criteria set by the early termination policy) will be terminated. Além do nome de métrica principal, também especificar o objetivo da otimização - se maximizar ou minimizar a métrica primária.In addition to the primary metric name, you also specify the goal of the optimization - whether to maximize or minimize the primary metric.

  • primary_metric_name: O nome da métrica primária a otimizar.primary_metric_name: The name of the primary metric to optimize. O nome da métrica primário tem de corresponder exatamente ao nome da métrica registado pelo script de treinamento.The name of the primary metric needs to exactly match the name of the metric logged by the training script. Ver iniciar sessão métricas para a otimização de hiper-parâmetros.See Log metrics for hyperparameter tuning.
  • primary_metric_goal: Pode ser PrimaryMetricGoal.MAXIMIZE ou PrimaryMetricGoal.MINIMIZE e e determinar se a métrica primária será maximizada ou minimizada ao avaliar as execuções.primary_metric_goal: It can be either PrimaryMetricGoal.MAXIMIZE or PrimaryMetricGoal.MINIMIZE and determines whether the primary metric will be maximized or minimized when evaluating the runs.
primary_metric_name="accuracy",
primary_metric_goal=PrimaryMetricGoal.MAXIMIZE

Otimize as execuções para maximizar a "precisão".Optimize the runs to maximize "accuracy". Lembre-se de que este valor de registo no seu script de treinamento.Make sure to log this value in your training script.

Métricas de registo para a otimização de hiper-parâmetrosLog metrics for hyperparameter tuning

O script de treinamento para o seu modelo tem de iniciar as métricas relevantes durante a preparação de modelos.The training script for your model must log the relevant metrics during model training. Ao configurar a otimização de hiper-parâmetros, especifique a métrica primária a utilizar para avaliar o desempenho de execução.When you configure the hyperparameter tuning, you specify the primary metric to use for evaluating run performance. (Consulte especifique uma métrica primária para otimizar.) No seu script de treinamento, tem de iniciar esta métrica, de modo está disponível para o processo de otimização de hiper-parâmetros.(See Specify a primary metric to optimize.) In your training script, you must log this metric so it is available to the hyperparameter tuning process.

Esta métrica de registo no seu script de treinamento com o seguinte fragmento de exemplo:Log this metric in your training script with the following sample snippet:

from azureml.core.run import Run
run_logger = Run.get_context()
run_logger.log("accuracy", float(val_accuracy))

O script de treinamento calcula o val_accuracy e regista-lo como "precisão", que é utilizada como a métrica primária.The training script calculates the val_accuracy and logs it as "accuracy", which is used as the primary metric. Sempre que a métrica é registada é recebida, o serviço de otimização de hiper-parâmetros.Each time the metric is logged it is received by the hyperparameter tuning service. Cabe ao desenvolvedor de modelo para determinar a frequência de relatório esta métrica.It is up to the model developer to determine how frequently to report this metric.

Especificar Política de cessação antecipadaSpecify early termination policy

Termine mau desempenho é executado automaticamente com uma política de cessação antecipada.Terminate poorly performing runs automatically with an early termination policy. Cessação reduz o desperdício de recursos e em vez disso, utiliza estes recursos para explorar outras configurações de parâmetro.Termination reduces wastage of resources and instead uses these resources for exploring other parameter configurations.

Quando utilizar uma política de cessação antecipada, pode configurar os seguintes parâmetros que controlam quando uma política é aplicada:When using an early termination policy, you can configure the following parameters that control when a policy is applied:

  • evaluation_interval: a frequência para aplicar a política.evaluation_interval: the frequency for applying the policy. Sempre que o script de treinamento registos a métrica primária é contabilizado como um intervalo.Each time the training script logs the primary metric counts as one interval. Portanto, um evaluation_interval 1 aplicará a diretiva sempre que o script de treinamento reporta a métrica primária.Thus an evaluation_interval of 1 will apply the policy every time the training script reports the primary metric. Um evaluation_interval de 2 irá aplicar a política de todas as outras vezes o script de treinamento reporta a métrica primária.An evaluation_interval of 2 will apply the policy every other time the training script reports the primary metric. Se não for especificado, evaluation_interval está definido como 1, por predefinição.If not specified, evaluation_interval is set to 1 by default.
  • delay_evaluation: atrasa a primeira avaliação de política para um número especificado de intervalos.delay_evaluation: delays the first policy evaluation for a specified number of intervals. É um parâmetro opcional que permite que todas as configurações ser executado por um número mínimo inicial de intervalos, evitando o encerramento prematuro de treinamento é executado.It is an optional parameter that allows all configurations to run for an initial minimum number of intervals, avoiding premature termination of training runs. Se for especificado, a política aplica-se cada múltiplo de evaluation_interval é maior que ou igual a delay_evaluation.If specified, the policy applies every multiple of evaluation_interval that is greater than or equal to delay_evaluation.

Serviço de Machine Learning do Azure suporta as seguintes políticas de cessação antecipada.Azure Machine Learning service supports the following Early Termination Policies.

Política de banditBandit policy

Bandit é uma política de encerramento com base no fator de margem de atraso/valor da margem de atraso e no intervalo de avaliação.Bandit is a termination policy based on slack factor/slack amount and evaluation interval. A política desde o início termina todas as execuções em que a métrica de principal não está no fator slack especificado / run do slack quantidade em relação ao melhor desempenho de treinamento.The policy early terminates any runs where the primary metric is not within the specified slack factor / slack amount with respect to the best performing training run. Ele usa os seguintes parâmetros de configuração:It takes the following configuration parameters:

  • slack_factor ou slack_amount: slack permitido em relação ao melhor desempenho de treinamento ser executado.slack_factor or slack_amount: the slack allowed with respect to the best performing training run. slack_factor Especifica o slack permitido como um rácio.slack_factor specifies the allowable slack as a ratio. slack_amount Especifica o slack permitido como um valor absoluto, em vez de uma taxa.slack_amount specifies the allowable slack as an absolute amount, instead of a ratio.

    Por exemplo, considere uma política de Bandit a ser aplicada neste intervalo de 10.For example, consider a Bandit policy being applied at interval 10. Partem do princípio de que a execução melhor executar no intervalo de 10 comunicado uma métrica primária 0,8 com o objetivo de maximizar a métrica primária.Assume that the best performing run at interval 10 reported a primary metric 0.8 with a goal to maximize the primary metric. Se a política foi especificada com um slack_factor de 0,2, é executada qualquer treinamento, cuja melhor métrica no intervalo de 10 é menor que 0.66 (0,8 / (1 +slack_factor)) será terminada.If the policy was specified with a slack_factor of 0.2, any training runs, whose best metric at interval 10 is less than 0.66 (0.8/(1+slack_factor)) will be terminated. Se em vez disso, a política foi especificada com um slack_amount de 0,2, é executada qualquer treinamento, cuja melhor métrica no intervalo de 10 é menor que 0.6 (0,8 - slack_amount) será terminada.If instead, the policy was specified with a slack_amount of 0.2, any training runs, whose best metric at interval 10 is less than 0.6 (0.8 - slack_amount) will be terminated.

  • evaluation_interval: a frequência para aplicar a política (parâmetro opcional).evaluation_interval: the frequency for applying the policy (optional parameter).

  • delay_evaluation: atrasa a primeira avaliação de política para um número especificado de intervalos (parâmetro opcional).delay_evaluation: delays the first policy evaluation for a specified number of intervals (optional parameter).

from azureml.train.hyperdrive import BanditPolicy
early_termination_policy = BanditPolicy(slack_factor = 0.1, evaluation_interval=1, delay_evaluation=5)

Neste exemplo, é aplicada a política de cessação antecipada em cada intervalo quando métricas são comunicadas, começando no intervalo de avaliação de 5.In this example, the early termination policy is applied at every interval when metrics are reported, starting at evaluation interval 5. Qualquer execução cuja melhor métrica é menor que (1/(1+0.1) ou 91% do melhor desempenho será execução terminada.Any run whose best metric is less than (1/(1+0.1) or 91% of the best performing run will be terminated.

Política de parar medianoMedian stopping policy

A parada mediana é uma política de término inicial com base nas médias em execução das métricas primárias relatadas pelas execuções.Median stopping is an early termination policy based on running averages of primary metrics reported by the runs. Esta política computa médias em execução em todas as execuções de preparação e termina execuções cujo desempenho é pior do que o valor mediano das médias em execução.This policy computes running averages across all training runs and terminates runs whose performance is worse than the median of the running averages. Esta política tem os seguintes parâmetros de configuração:This policy takes the following configuration parameters:

  • evaluation_interval: a frequência para aplicar a política (parâmetro opcional).evaluation_interval: the frequency for applying the policy (optional parameter).
  • delay_evaluation: atrasa a primeira avaliação de política para um número especificado de intervalos (parâmetro opcional).delay_evaluation: delays the first policy evaluation for a specified number of intervals (optional parameter).
from azureml.train.hyperdrive import MedianStoppingPolicy
early_termination_policy = MedianStoppingPolicy(evaluation_interval=1, delay_evaluation=5)

Neste exemplo, é aplicada a política de cessação antecipada em cada intervalo que começa no intervalo de avaliação de 5.In this example, the early termination policy is applied at every interval starting at evaluation interval 5. Uma execução será terminada em intervalo 5 se sobre intervalos 1:5, sua melhor métrica primária é pior do que o valor mediano das médias em execução em todas as execuções de preparação.A run will be terminated at interval 5 if its best primary metric is worse than the median of the running averages over intervals 1:5 across all training runs.

Política de seleção de truncamentoTruncation selection policy

Seleção de truncamento cancela um determinado percentual de execuções de execução mais baixa em cada intervalo de avaliação.Truncation selection cancels a given percentage of lowest performing runs at each evaluation interval. Execuções são comparadas com base no respetivo desempenho na métrica primária e a mais baixa X % está terminada.Runs are compared based on their performance on the primary metric and the lowest X% are terminated. Ele usa os seguintes parâmetros de configuração:It takes the following configuration parameters:

  • truncation_percentage: a percentagem da execução mais baixa é executada para terminar a cada intervalo de avaliação.truncation_percentage: the percentage of lowest performing runs to terminate at each evaluation interval. Especifique um valor inteiro entre 1 e 99.Specify an integer value between 1 and 99.
  • evaluation_interval: a frequência para aplicar a política (parâmetro opcional).evaluation_interval: the frequency for applying the policy (optional parameter).
  • delay_evaluation: atrasa a primeira avaliação de política para um número especificado de intervalos (parâmetro opcional).delay_evaluation: delays the first policy evaluation for a specified number of intervals (optional parameter).
from azureml.train.hyperdrive import TruncationSelectionPolicy
early_termination_policy = TruncationSelectionPolicy(evaluation_interval=1, truncation_percentage=20, delay_evaluation=5)

Neste exemplo, é aplicada a política de cessação antecipada em cada intervalo que começa no intervalo de avaliação de 5.In this example, the early termination policy is applied at every interval starting at evaluation interval 5. Uma execução será encerrada no intervalo 5 se seu desempenho no intervalo 5 estiver nos mais baixos 20% do desempenho de todas as execuções no intervalo de 5.A run will be terminated at interval 5 if its performance at interval 5 is in the lowest 20% of performance of all runs at interval 5.

Nenhuma política de terminaçãoNo termination policy

Se quiser que todas as execuções de preparação para conclusão, defina a política como None.If you want all training runs to run to completion, set policy to None. Isso terá o efeito de não aplicar qualquer política de cessação antecipada.This will have the effect of not applying any early termination policy.

policy=None

Política predefinidaDefault policy

Se nenhuma política for especificada, o serviço de ajuste de hiperparâmetro permitirá que todas as execuções de treinamento sejam executadas até a conclusão.If no policy is specified, the hyperparameter tuning service will let all training runs execute to completion.

Nota

Se estiver procurando por uma política conservador que proporciona poupanças sem terminar tarefas promissoras, pode utilizar uma política de parar de mediana com evaluation_interval 1 e delay_evaluation 5.If you are looking for a conservative policy that provides savings without terminating promising jobs, you can use a Median Stopping Policy with evaluation_interval 1 and delay_evaluation 5. Estas são definições conservadoras, que podem fornecer aproximadamente 25% - 35% de poupanças sem perda em métrica primária (com base nos nossos dados de avaliação).These are conservative settings, that can provide approximately 25%-35% savings with no loss on primary metric (based on our evaluation data).

Alocar recursosAllocate resources

Controle o orçamento de recursos para a sua experimentação, especificando o número máximo de total de execuções de preparação de otimização de hiper-parâmetros.Control your resource budget for your hyperparameter tuning experiment by specifying the maximum total number of training runs. Opcionalmente, especifica a duração máxima para a sua experimentação de otimização de hiper-parâmetros.Optionally specify the maximum duration for your hyperparameter tuning experiment.

  • max_total_runs: Número total máximo de execuções de treinamento que serão criadas.max_total_runs: Maximum total number of training runs that will be created. Limite superior - pode haver menos execuções, por exemplo, se o espaço de hiper-parâmetros é finito e tem menos de exemplos.Upper bound - there may be fewer runs, for instance, if the hyperparameter space is finite and has fewer samples. Tem de ser um número entre 1 e 1000.Must be a number between 1 and 1000.
  • max_duration_minutes: Duração máxima em minutos do experimento de ajuste de hiperparâmetro.max_duration_minutes: Maximum duration in minutes of the hyperparameter tuning experiment. Parâmetro é opcional e, se estiver presente, todas as execuções que estariam sendo executados depois desta duração automaticamente foram canceladas.Parameter is optional, and if present, any runs that would be running after this duration are automatically canceled.

Nota

Se os dois max_total_runs e max_duration_minutes forem especificados, o experimentação de otimização de hiper-parâmetros termina quando o primeiro desses dois limites for atingido.If both max_total_runs and max_duration_minutes are specified, the hyperparameter tuning experiment terminates when the first of these two thresholds is reached.

Além disso, especifique o número máximo de treinamento é executado para serem executadas em simultâneo durante sua pesquisa de otimização de hiper-parâmetros.Additionally, specify the maximum number of training runs to run concurrently during your hyperparameter tuning search.

  • max_concurrent_runs: Número máximo de execuções a serem executadas simultaneamente em um determinado momento.max_concurrent_runs: Maximum number of runs to run concurrently at any given moment. Se especificado nenhum, todos max_total_runs será iniciado em paralelo.If none specified, all max_total_runs will be launched in parallel. Se for especificado, tem de ser um número entre 1 e 100.If specified, must be a number between 1 and 100.

Nota

O número de execuções simultâneas é Check controlado nos recursos disponíveis no destino de computação especificado.The number of concurrent runs is gated on the resources available in the specified compute target. Por este motivo, terá de garantir que o destino de computação tem os recursos disponíveis para a simultaneidade pretendido.Hence, you need to ensure that the compute target has the available resources for the desired concurrency.

Alocar recursos para a otimização de hiper-parâmetros:Allocate resources for hyperparameter tuning:

max_total_runs=20,
max_concurrent_runs=4

Esse código configura o experimento de ajuste de hiperparâmetro para usar um máximo de 20 execuções de total, executando quatro configurações por vez.This code configures the hyperparameter tuning experiment to use a maximum of 20 total runs, running four configurations at a time.

Configurar experimentaçãoConfigure experiment

Configure seu experimento de ajuste de hiperparâmetro usando o espaço de pesquisa de hiperparâmetro definido, a política de término antecipado, a métrica primária e a alocação de recursos das seções acima.Configure your hyperparameter tuning experiment using the defined hyperparameter search space, early termination policy, primary metric, and resource allocation from the sections above. Além disso, fornecer um estimator que será chamado com os amostras hiperparâmetros.Additionally, provide an estimator that will be called with the sampled hyperparameters. O estimator descreve o script de treinamento, executar, os recursos por tarefa (única ou múltipla gpu) e o destino de computação para utilizar.The estimator describes the training script you run, the resources per job (single or multi-gpu), and the compute target to use. Uma vez que a simultaneidade para a sua experimentação de otimização de hiper-parâmetros é Check controlado nos recursos disponíveis, certifique-se de que o destino de computação especificado no estimator tem recursos suficientes para a simultaneidade pretendido.Since concurrency for your hyperparameter tuning experiment is gated on the resources available, ensure that the compute target specified in the estimator has sufficient resources for your desired concurrency. (Para obter mais informações sobre os avaliadores, consulte como a criar modelos.)(For more information on estimators, see how to train models.)

Configure a sua experimentação de otimização de hiper-parâmetros:Configure your hyperparameter tuning experiment:

from azureml.train.hyperdrive import HyperDriveConfig
hyperdrive_run_config = HyperDriveConfig(estimator=estimator,
                          hyperparameter_sampling=param_sampling, 
                          policy=early_termination_policy,
                          primary_metric_name="accuracy", 
                          primary_metric_goal=PrimaryMetricGoal.MAXIMIZE,
                          max_total_runs=100,
                          max_concurrent_runs=4)

Submeter a experimentaçãoSubmit experiment

Depois de definir a configuração de ajuste de hiperparâmetro, envie um experimento:Once you define your hyperparameter tuning configuration, submit an experiment:

from azureml.core.experiment import Experiment
experiment = Experiment(workspace, experiment_name)
hyperdrive_run = experiment.submit(hyperdrive_run_config)

experiment_name é o nome a atribuir a sua experimentação, a otimização de hiper-parâmetros e workspace é a área de trabalho no qual pretende criar a experimentação (para obter mais informações sobre experiências, consulte como serviço Azure Machine Learning funciona?)experiment_name is the name you assign to your hyperparameter tuning experiment, and workspace is the workspace in which you want to create the experiment (For more information on experiments, see How does Azure Machine Learning service work?)

Visualizar a experimentaçãoVisualize experiment

O SDK do Azure Machine Learning fornece um Widget de bloco de anotações que visualiza o progresso de suas execuções de treinamento.The Azure Machine Learning SDK provides a Notebook widget that visualizes the progress of your training runs. O fragmento seguinte visualiza a todos os seus hiper-parâmetros otimização é executada num único local num bloco de notas do Jupyter:The following snippet visualizes all your hyperparameter tuning runs in one place in a Jupyter notebook:

from azureml.widgets import RunDetails
RunDetails(hyperdrive_run).show()

Esse código exibe uma tabela com detalhes sobre as execuções de preparação para cada uma das configurações de hiper-parâmetros.This code displays a table with details about the training runs for each of the hyperparameter configurations.

tabela de otimização de hiper-parâmetros

Também é possível visualizar o desempenho de cada uma das execuções à medida que progride de treinamento.You can also visualize the performance of each of the runs as training progresses.

desenho de otimização de hiper-parâmetros

Além disso, pode identificar visualmente a correlação entre desempenho e os valores de hiperparâmetros individuais com um paralelo as coordenadas de desenho.Additionally, you can visually identify the correlation between performance and values of individual hyperparameters using a Parallel Coordinates Plot.

coordenadas paralelas de ajuste de hiperparâmetrohyperparameter tuning parallel coordinates

É possível visualizar todos os seus hiper-parâmetros otimização é executada no portal web do Azure.You can visualize all your hyperparameter tuning runs in the Azure web portal as well. Para obter mais informações sobre como visualizar uma experimentação no web portal, consulte como controlar experimentações.For more information on how to view an experiment in the web portal, see how to track experiments.

Encontrar o melhor modeloFind the best model

Depois que todas as execuções de ajuste de hiperparâmetro forem concluídas, identifique a configuração de melhor desempenho e os valores de hiperparâmetro correspondentes:Once all of the hyperparameter tuning runs have completed, identify the best performing configuration and the corresponding hyperparameter values:

best_run = hyperdrive_run.get_best_run_by_primary_metric()
best_run_metrics = best_run.get_metrics()
parameter_values = best_run.get_details()['runDefinition']['Arguments']

print('Best Run Id: ', best_run.id)
print('\n Accuracy:', best_run_metrics['accuracy'])
print('\n learning rate:',parameter_values[3])
print('\n keep probability:',parameter_values[5])
print('\n batch size:',parameter_values[7])

Bloco de notas de exemploSample notebook

Consulte os blocos de anotações Train-hiperparameter-* nesta pasta:Refer to train-hyperparameter-* notebooks in this folder:

Saiba como executar blocos de notas, seguindo o artigo blocos de notas do Jupyter de utilização para explorar este serviço.Learn how to run notebooks by following the article, Use Jupyter notebooks to explore this service.

Passos SeguintesNext steps