Ajuste de hiperparâmetros com Optuna
Optuna é um código aberto Python biblioteca para ajuste de hiperparâmetros que pode ser dimensionado horizontalmente em vários compute recursos.
O MLflow 3.0 apresenta novos recursos avançados para a otimização de hiperparâmetros por meio da integração com o Optuna.
MlflowStoragepermite que o Optuna use o servidor de acompanhamento MLflow como back-end de armazenamento.MlflowSparkStudypermite iniciar estudos paralelos da Optuna usando o executor PySpark.
Instale Optuna
MLflow 3.0 vem pré-instalado no Databricks Runtime 17.0 ML e no acima. Em tempos de execução mais antigos, use o comando a seguir para instalar a versão mais recente do Optuna e do MLFlow.
%pip install mlflow --upgrade
%pip install optuna
execução Optuna optimization em paralelo
Aqui estão as etapas de um fluxo de trabalho do Optuna:
- 
Defina uma função objetivo a ser otimizada. Dentro da função objetivo, defina o espaço de busca de hiperparâmetros. Para obter mais detalhes, consulte a documentação do Optuna.
abaixo é um exemplo de seleção de modelos e ajuste de hiperparâmetros com o sckit-learn. O exemplo define a função objetivo
objectivee chama a funçãosuggest_floatpara definir o espaço de pesquisa para o parâmetrox. 
import sklearn
def objective(trial):
    # Invoke suggest methods of a Trial object to generate hyperparameters.
    regressor_name = trial.suggest_categorical('classifier', ['SVR', 'RandomForest'])
    if regressor_name == 'SVR':
        svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
        regressor_obj = sklearn.svm.SVR(C=svr_c)
    else:
        rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
        regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)
    X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
    X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)
    regressor_obj.fit(X_train, y_train)
    y_pred = regressor_obj.predict(X_val)
    error = sklearn.metrics.mean_squared_error(y_val, y_pred)
    return error  # An objective value linked with the Trial object
- Crie um armazenamento compartilhado para otimização distribuída. Com o 
MlflowStorage, o senhor pode usar o MLflow acompanhamento Server como backend de armazenamento. 
import mlflow
from mlflow.optuna.storage import MlflowStorage
experiment_id = mlflow.get_experiment_by_name(dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()).experiment_id
mlflow_storage = MlflowStorage(experiment_id=experiment_id)
- Crie um objeto Optuna Study e execute o algoritmo de ajuste chamando a função 
optimizedo objeto Study.MlflowSparkStudypode executar o lançamento de estudos paralelos da Optuna usando o executor PySpark. 
abaixo é um exemplo da documentação do Optuna.
- Crie um estudo e otimize a função 
objectivecom 8 tentativas (8 chamadas da funçãoobjectivecom valores diferentes dex). - Obtenha os melhores parâmetros do estudo
 
from mlflow.pyspark.optuna.study import MlflowSparkStudy
mlflow_study = MlflowSparkStudy(
    study_name="spark-mlflow-tuning",
    storage=mlflow_storage,
)
mlflow_study.optimize(objective, n_trials=8, n_jobs=4)
best_params = study.best_params
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.
Ampliação do ajuste de hiperparâmetros com o Optuna e o MLflow
API de integração do MLFlow Optuna
Armazenamento de fluxo de ML
MlflowStorage é uma classe de armazenamento baseada em MLflow para Optuna com processamento de lotes para evitar REST API throttling.
Nome do parâmetro de classe  | Tipo  | Descrição  | 
|---|---|---|
  | 
  | ID do experimento MLflow para o armazenamento  | 
  | 
  | Nome do armazenamento  | 
  | 
  | Tempo em segundos entre as descargas automáticas de lotes (default: 1.0)  | 
  | 
  | Número máximo de itens em lotes antes de acionar uma descarga (default: 100)  | 
Estudo ML Flowspark
MlflowSparkStudy é um wrapper da classe ~optuna.study.Study para incorporar o Optuna ao Spark
por meio do experimento MLflow.
Nome do parâmetro de classe  | Tipo  | Descrição  | 
|---|---|---|
  | 
  | Nome do estudo  | 
  | 
  | Classe de armazenamento baseada em MLflow  | 
  | 
  | Um objeto amostrador que implementa um algoritmo de fundo para sugestão de valor.   | 
  | 
  | Um objeto podador que decide interromper precocemente testes pouco promissores.   |