Ajuste de hiperparâmetros com o Optuna
Optuna é um código aberto Python biblioteca para ajuste de hiperparâmetros que pode ser dimensionado horizontalmente em vários compute recursos. O Optuna também se integra ao site MLflow para acompanhamento e monitoramento de modelos e testes.
Instalar o Optuna
Use o comando 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 busca e a execução da otimização Optuna
Aqui estão os passos em um fluxo de trabalho da Optuna:
Defina uma função objetiva para otimizar. Na função objetiva, 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.
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 tentativas, 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 os testes do Optuna em várias máquinas
O senhor pode distribuir testes do Optuna para várias máquinas em um cluster da Databricks com o Joblib Apache Spark Backend.
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)
Integrar com o MLflow
Para rastrear hiperparâmetros e métricas de todas as tentativas do Optuna, use MLflowCallback
dos módulos de integração do Optuna quando o senhor 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])
Notebook exemplo
Este Notebook fornece um exemplo de uso do Optuna para selecionar um modelo Scikit-Learn e um conjunto de hiperparâmetros para o Iris dataset.
Além de uma única máquina Optuna fluxo de trabalho, o site Notebook mostra como
Paralelize os testes do Optuna em várias máquinas por meio do Joblib
Acompanhe a execução do teste com MLflow