Новейшая версия Optuna, Optuna v3.2, программного инструмента с открытым исходным кодом для оптимизации черного ящика, была выпущена в конце мая. В этой статье представлена ​​одна из его новых функций — Timeline Plot.

График временной шкалы — это тип графика, на котором каждая попытка отображается в виде горизонтальной полосы со временем на оси x и номером попытки на оси y, как показано на рисунке ниже.

руки вверх

Вот пример практического упражнения: давайте воспользуемся образцом набора данных классификации, предоставленным scikit-learn, для выполнения машинного обучения с помощью LightGBM. Исходный код Python выглядит следующим образом:

import lightgbm as lgb
import numpy as np
import optuna
import sklearn.datasets
import sklearn.metrics
from sklearn.model_selection import train_test_split

data, target = sklearn.datasets.load_breast_cancer(return_X_y=True)
train_x, val_x, train_y, val_y = train_test_split(
    data, target, test_size=0.25
)


def objective(trial):
    dtrain = lgb.Dataset(train_x, label=train_y)
    param = {
        "objective": "binary",
        "metric": "binary_logloss",
        "boosting_type": "gbdt",
        "lambda_l1": trial.suggest_float("lambda_l1", 1e-8, 10.0, log=True),
        "lambda_l2": trial.suggest_float("lambda_l2", 1e-8, 10.0, log=True),
        "num_leaves": trial.suggest_int("num_leaves", 2, 256),
        "feature_fraction": trial.suggest_float("feature_fraction", 0.4, 1.0),
        "bagging_fraction": trial.suggest_float("bagging_fraction", 0.4, 1.0),
        "bagging_freq": trial.suggest_int("bagging_freq", 1, 7),
        "min_child_samples": trial.suggest_int("min_child_samples", 5, 100),
    }
    gbm = lgb.train(param, dtrain)
    preds = gbm.predict(val_x)
    pred_labels = np.rint(preds)
    return sklearn.metrics.accuracy_score(val_y, pred_labels)


study = optuna.create_study(direction="maximize")
study.optimize(objective, n_jobs=4, n_trials=50)
fig = optuna.visualization.plot_timeline(study)
fig.show()

Выполнение приведенного выше исходного кода выведет следующий рисунок.

Из графика временной шкалы видно, что вычисления для испытаний после 15-го испытания заняли относительно больше времени. Optuna признает, что значения некоторых параметров LightGBM, расчет которых занимает больше времени, как правило, приводят к более высокой точности, поэтому количество таких испытаний, вероятно, увеличится с середины процесса поиска. В частности, увеличение значения параметра min_child_samples может увеличить время вычисления.

  • Кроме того, в вышеупомянутом коде набор данных был разделен на два подмножества (для обучения и проверки), а затем оптимизирован для 50 испытаний. Если бы это количество было увеличено, например, до 1000 испытаний, точность валидации, вероятно, улучшилась бы; однако производительность обобщения тестовых данных может ухудшиться. Этот потенциальный результат указывает на то, что гиперпараметры могут превосходить набор данных проверки. Чтобы смягчить эту проблему, в Optuna v3.2 была введена новая функция, получившая название Терминатор Optuna. Optuna Terminator можно использовать для ранней остановки оптимизации, тем самым сокращая переоснащение и одновременно сокращая время вычислений.

Ситуации, в которых график временной шкалы особенно эффективен

Мониторинг испытаний в распределенных средах

График временной шкалы особенно эффективен для визуализации проблем, которые часто возникают в распределенных средах. При выполнении распределенной оптимизации в общем кластере рабочие процессы Optuna часто вытесняются, что приводит к принудительному завершению вычислений на полпути. Если «Оптуна» не будет уведомлена о вытеснении работника, статус испытания, над которым велась работа на момент вытеснения, останется «Выполняется» на неопределенный срок. Конечно, также могут быть случаи, когда он действительно остается «Работающим» на неопределенный срок, например, если в реализации функции оценки есть ошибка, вызывающая бесконечный цикл. Такие ошибки легко не заметить в распределенной среде, но их можно четко визуализировать с помощью графика временной шкалы.

Функция Timeline Plot может принимать текущее исследование в качестве аргумента. Эта функция позволяет быстро обнаруживать любые аномальные испытания, облегчая инициирование исправления ошибок или предлагая решения этих проблем, такие как реализация «пульса» для обнаружения вытеснения.

Интерактивная проверка сведений о пробной версии

График временной шкалы может визуализировать задержки или сбои для каждой попытки. Кроме того, в случае графической версии вы можете навести курсор мыши на горизонтальные полосы, представляющие каждое испытание, чтобы просмотреть параметры и значения функции оценки этого испытания в виде наводимого текста. Эта функция могла бы очень помочь в быстром устранении сложных ошибок, таких как ошибки, вызывающие бесконечные циклы только тогда, когда параметр имеет определенное значение.

График временной шкалы в панели управления Optuna

График временной шкалы доступен в Optuna Dashboard v0.10.0, как показано на скриншоте ниже. В качестве примера функциональности, которую можно использовать с помощью этой комбинации, можно привести пробную версию, которая остается в статусе Выполняется, и ее можно легко и быстро идентифицировать и удалить с помощью панели управления.

Выводы

В этой статье я представил график временной шкалы, добавленный в Оптуна v3.2. График временной шкалы может сыграть решающую роль в устранении неполадок в распределенных средах и настройке гиперпараметров машинного обучения, которые требуют проб и ошибок. Это особенно полезно для быстрого выявления наличия аномальных испытаний и параметров заслуживающих внимания испытаний.

Помимо этого, в Оптуне v3.2 были добавлены и другие полезные функции. Optuna Terminator — это функция ранней остановки оптимизации, помогающая сократить время вычислений и предотвратить переоснащение.

Используя новые функции Optuna, вы можете ожидать повышения скорости обработки задач оптимизации в машинном обучении, а также обнаружения лучших решений.