Настройка гиперпараметров с помощью Optuna
Optuna — это библиотека Python с открытым исходным кодом для настройки гиперпараметра, которую можно масштабировать горизонтально в нескольких вычислительных ресурсах. Optuna также интегрируется с MLflow для модели и пробного отслеживания и мониторинга.
Установка Optuna
Используйте следующие команды, чтобы установить Optuna и его модуль интеграции.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Определение пространства поиска и оптимизация Optuna
Ниже приведены действия в рабочем процессе Optuna:
- Определите целевую функцию для оптимизации. В целевой функции определите пространство поиска гиперпараметров.
- Создайте объект Optuna Study и запустите алгоритм настройки, вызвав
optimize
функцию объекта Study.
Ниже приведен минимальный пример из документации Optuna.
- Определите целевую функцию и вызовите функцию
objective
, чтобы определить пространство поиска для параметраx
.suggest_float
- Создайте исследование и оптимизируйте функцию
objective
с 100 пробными версиями, т. е. 100 вызововobjective
функции с различными значениямиx
. - Получение лучших параметров исследования
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
Параллелизация пробных версий Optuna на нескольких компьютерах
Пробные версии Optuna можно распространять на несколько компьютеров в кластере Azure Databricks с помощью серверной части Joblib Apache Spark.
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)
Интеграция с MLflow
Чтобы отслеживать гиперпараметры и метрики всех пробных версий Optuna, используйте MLflowCallback
модули Optuna Integration при вызове 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])
Пример записной книжки
Эта записная книжка содержит пример использования Optuna для выбора модели scikit-learn и набора гиперпараметров для набора данных Iris.
На вершине рабочего процесса Optuna с одним компьютером записная книжка демонстрирует, как
- Параллелизация пробных версий Optuna на нескольких компьютерах с помощью Joblib
- Отслеживание пробных запусков с помощью MLflow