Оглавление

  1. Введение
  2. Что такое параметры, показатели и артефакты в MLflow?
  3. Параметры регистрации
  4. Запись показателей
  5. Регистрация артефактов
  6. Доступ к данным экспериментов
  7. Подведение итогов

Введение

Машинное обучение — это сложный и повторяющийся процесс, который часто включает в себя проверку множества различных моделей и методов, чтобы найти наилучшее решение. Отслеживание всех различных экспериментов, которые вы проводите, и их результатов может быть сложной задачей, особенно по мере роста количества экспериментов. Здесь начинается отслеживание экспериментов.

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

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

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

Что такое параметры, показатели и артефакты в MLflow?

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

Параметры регистрации

Регистрация параметров — это первый шаг в отслеживании ваших экспериментов в MLflow. Параметры — это значения, которые вы передаете коду машинного обучения, которые управляют его поведением, например скорость обучения или количество эпох. Записав свои параметры, вы можете легко увидеть, какие значения вы использовали для каждого эксперимента, и сравнить результаты разных запусков.

Чтобы регистрировать параметры в MLflow, вам необходимо обернуть код машинного обучения в прогон MLflow. Вот простой пример использования модели логистической регрессии scikit-learn:

import mlflow
import mlflow.sklearn
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":
    # Load the data
    data = pd.read_csv("data.csv")
    X = data.drop("target", axis=1)
    y = data["target"]
    
    # Start an MLflow run
    with mlflow.start_run():
        # Log the parameters
        mlflow.log_param("learning_rate", 0.01)
        mlflow.log_param("num_epochs", 100)
        
        # Train the model
        model = LogisticRegression(C=1.0 / (10 * 0.01), solver='lbfgs')
        model.fit(X, y)
        
        # Log the model
        mlflow.sklearn.log_model(model, "model")

В этом примере мы сначала загружаем данные, а затем запускаем MLflow с mlflow.start_run(). В рамках запуска мы используем mlflow.log_param() для регистрации параметров скорости обучения и количества эпох. После обучения модели мы регистрируем саму модель, используя mlflow.sklearn.log_model().

Показатели регистрации:

В дополнение к параметрам вы также можете регистрировать метрики в MLflow, чтобы отслеживать, как ваша модель работает с течением времени. Метрики — это числовые значения, которые дают представление о качестве вашей модели, например точность или оценка F1. Записывая свои показатели, вы можете видеть, как они меняются по мере того, как вы проводите различные эксперименты и вносите коррективы в свою модель.

Чтобы регистрировать метрики в MLflow, вы просто вызываете mlflow.log_metric() во время запуска MLflow. Вот пример использования точности в качестве метрики:

import mlflow
import mlflow.sklearn
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

if __name__ == "__main__":
    # Load the data
    data = pd.read_csv("data.csv")
    X = data.drop("target", axis=1)
    y = data["target"]
    
    # Start an MLflow run
    with mlflow.start_run():
        # Log the parameters
        mlflow.log_param("learning_rate", 0.01)
        mlflow.log_param("num_epochs", 100)
        
        # Train the model
        model = LogisticRegression(C=1.0 / (10 * 0.01), solver='lbfgs')
        model.fit(X, y)
        
        # Log the model
        mlflow.sklearn.log_model(model, "model")
        
        # Make predictions
        y_pred = model.predict(X)
        
        # Log the accuracy metric
        accuracy = accuracy_score(y, y_pred)
        mlflow.log_metric("accuracy", accuracy)

В этом примере мы используем sklearn.metrics.accuracy_score для вычисления точности нашей модели на обучающих данных, а затем регистрируем ее, используя mlflow.log_metric().

Регистрация артефактов

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

Чтобы регистрировать артефакты в MLflow, вы используете mlflow.log_artifact(). Эта функция берет локальный файл или каталог и загружает его в репозиторий артефактов. Вот пример регистрации результатов прогнозирования как артефакта:

import mlflow
import mlflow.sklearn
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

if __name__ == "__main__":
    # Load the data
    data = pd.read_csv("data.csv")
    X = data.drop("target", axis=1)
    y = data["target"]
    
    # Start an MLflow run
    with mlflow.start_run():
        # Log the parameters
        mlflow.log_param("learning_rate", 0.01)
        mlflow.log_param("num_epochs", 100)
        
        # Train the model
        model = LogisticRegression(C=1.0 / (10 * 0.01), solver='lbfgs')
        model.fit(X, y)
        
        # Log the model
        mlflow.sklearn.log_model(model, "model")

    # Make predictions
    y_pred = model.predict(X)
    
    # Log the accuracy metric
    accuracy = accuracy_score(y, y_pred)
    mlflow.log_metric("accuracy", accuracy)
    
    # Save the predictions to a file
    np.save("predictions.npy", y_pred)
    
    # Log the predictions as an artifact
    mlflow.log_artifact("predictions.npy")

В этом примере мы сохраняем предсказания y_pred в виде массива NumPy в файл predictions.npy и регистрируем их как артефакт с помощью `mlflow.log_artifact()`.

Доступ к экспериментальным данным

Зарегистрировав параметры, метрики и артефакты для своих экспериментов, вы можете легко получить доступ к данным разных запусков и сравнить их. MLflow предоставляет удобный веб-интерфейс для просмотра и сравнения запусков, а также API для программного доступа к данным.

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

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

Вот пример того, как использовать API MLflow для получения списка всех запусков для данного проекта и получения данных для одного запуска:

import mlflow

# List all runs for a given project
runs = mlflow.search_runs(experiment_ids=[0])
print("Run IDs:", runs["run_id"].tolist())

# Retrieve the data for a single run
run = mlflow.get_run(run_id="<run_id>")
params = run.data.params
metrics = run.data.metrics
artifacts = run.data.artifacts

print("Parameters:")
for key, value in params.items():
    print(f"  {key}: {value}")

print("Metrics:")
for key, value in metrics.items():
    print(f"  {key}: {value}")

print("Artifacts:")
for artifact in artifacts:
    print(f"  {artifact.path}")

В этом примере мы используем метод mlflow.search_runs() для получения списка всех запусков для данного проекта и метод mlflow.get_run() для получения данных для одного запуска. Атрибуты params, metrics и artifacts объекта Run обеспечивают доступ к параметрам, метрикам и артефактам, зарегистрированным для запуска.

Заворачивать

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

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

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

Подпишитесь на меня в LinkedIn и Twitter, чтобы узнать больше