Ajuste de hiperparâmetro com Optuna
Optuna é uma biblioteca Python de software livre para ajuste de hiperparâmetro que pode ser dimensionada horizontalmente em vários recursos de computação. O Optuna também se integra ao MLflow para acompanhamento e monitoramento de modelo e avaliação.
Instalar o Optuna
Use os comandos a seguir para instalar o Optuna e seu módulo de integração.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Definir o espaço de pesquisa e executar a otimização do Optuna
Estas são as etapas em um fluxo de trabalho do Optuna:
- Defina uma função objetiva para otimizar. Dentro da função de objetivo, defina o espaço de pesquisa do hiperparâmetro.
- Crie um objeto Optuna Study e execute o algoritmo de ajuste chamando a função
optimize
do objeto Study.
Veja abaixo um exemplo mínimo da documentação do Optuna.
- Defina a função objetiva
objective
e chame a funçãosuggest_float
para definir o espaço de pesquisa para o parâmetrox
. - Crie um Estudo e otimize a função
objective
com 100 avaliações, ou seja, 100 chamadas da funçãoobjective
com valores diferentes dex
. - Obter os melhores parâmetros do Estudo
def objective(trial):
x = trial.suggest_float("x", -10, 10)
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100)
best_params = study.best_params
Paralelizar avaliações do Optuna em vários computadores
Você pode distribuir as avaliações do Optuna para vários computadores em um cluster do Azure Databricks com o Back-end do Apache Spark do Joblib.
import joblib
from joblibspark import register_spark
register_spark() # register Spark backend for Joblib
with joblib.parallel_backend("spark", n_jobs=-1):
study.optimize(objective, n_trials=100)
Integração com o MLflow
Para acompanhar hiperparâmetros e métricas de todas as avaliações do Optuna, use os MLflowCallback
módulos de Integração do Optuna ao chamar a função optimize
.
import mlflow
from optuna.integration.mlflow import MLflowCallback
mlflow_callback = MLflowCallback(
tracking_uri="databricks",
metric_name="accuracy",
create_experiment=False,
mlflow_kwargs={
"experiment_id": experiment_id
}
)
study.optimize(objective, n_trials=100, callbacks=[mlflow_callback])
Exemplo de notebook
Este notebook fornece um exemplo de como usar o Optuna para selecionar um modelo scikit-learn e um conjunto de hiperparâmetros para o conjunto de dados Iris.
Sobre um fluxo de trabalho do Optuna de computador único, o notebook mostra como
- Paralelizar avaliações do Optuna em vários computadores por meio do Joblib
- Acompanhar execuções de avaliação com o MLflow