Обучение и отслеживание моделей в записных книжках

Завершено

В качестве ученого по обработке и анализу данных вы используете записные книжки для экспериментов и обучения моделей. Для группирования результатов обучения модели вы будете использовать эксперименты. Чтобы отслеживать метрики модели с помощью MLflow при обучении модели в записной книжке, можно использовать возможности ведения журнала MLflow.

Создание эксперимента MLflow

Вы можете создать эксперимент MLflow, который позволяет группировать запуски. Если вы не создаете эксперимент, MLflow предполагает, что эксперимент по умолчанию с именем Default.

Чтобы создать эксперимент, выполните следующую команду в записной книжке:

import mlflow

mlflow.set_experiment(experiment_name="heart-condition-classifier")

Результаты журнала с помощью MLflow

Теперь вы готовы обучить модель. Чтобы запустить запуск, отслеживаемый MLflow, вы будете использовать start_run(). Далее, чтобы отслеживать модель, можно:

  • Включите автологирование.
  • Используйте настраиваемое ведение журнала.

Включение автоматического ведения журнала

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

Вы можете включить автологирование с помощью autolog метода для используемой платформы. Например, чтобы включить автологирование для моделей XGBoost, можно использовать mlflow.xgboost.autolog().

Совет

Найдите список всех поддерживаемых платформ для автологирования в официальной документации по MLflow.

Ячейка записной книжки, которая обучает и отслеживает модель классификации с помощью автологирования, может быть похожа на следующий пример кода:

from xgboost import XGBClassifier

with mlflow.start_run():
    mlflow.xgboost.autolog()

    model = XGBClassifier(use_label_encoder=False, eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)

Как только mlflow.xgboost.autolog() вызывается, MLflow запустит выполнение в эксперименте в Машинное обучение Azure, чтобы начать отслеживание выполнения эксперимента.

После завершения задания можно просмотреть все зарегистрированные метрики в студии.

Screenshot of overview page of MLflow experiment with autologging in Azure Machine Learning studio.

Использование пользовательского ведения журнала

Кроме того, можно вручную записать модель с помощью MLflow. Модели ведения журнала вручную полезны, если требуется регистрировать дополнительные или пользовательские сведения, которые не регистрируются с помощью автоматической записи.

Примечание.

Вы можете использовать только настраиваемое ведение журнала или использовать настраиваемые журналы в сочетании с автологированием.

Распространенные функции, используемые с пользовательским ведением журнала:

  • mlflow.log_param(): регистрирует один параметр key-value. Используйте эту функцию для входного параметра, который нужно сохранять в журнал.
  • mlflow.log_metric(): регистрирует одну метрику "ключ-значение". Значение должно быть числом. Используйте эту функцию для всех выходных данных, которые нужно сохранить при запуске.
  • mlflow.log_artifact(): записывает файл. Используйте эту функцию для всех графиков, которые нужно сохранять в журнале, предварительно сохранив их в файл изображения.
  • mlflow.log_model(): регистрирует модель. Эта функция используется для создания модели MLflow, которая может включать в себя настраиваемые сигнатуры, среды и примеры ввода.

Совет

Дополнительные сведения о том, как отслеживать модели с помощью MLflow, изучите официальную документацию по MLflow или документацию по Машинное обучение Azure

Чтобы использовать пользовательский вход в записную книжку, запустите и зайдите в журнал любую нужную метрику:

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score

with mlflow.start_run():
    model = XGBClassifier(use_label_encoder=False, eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
    y_pred = model.predict(X_test)

    accuracy = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", accuracy)

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

После завершения задания можно просмотреть все зарегистрированные метрики в студии.

Screenshot overview page of MLflow experiment run with only custom logging in Azure Machine Learning studio.