Модель машинного обучения в Microsoft Fabric

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

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

В этой статье описано, как:

  • Создание моделей машинного обучения в Microsoft Fabric
  • Управление и отслеживание версий модели
  • Сравнение производительности модели в разных версиях
  • Применение моделей для оценки и вывода

Создание модели машинного обучения

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

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

  1. Выберите существующую рабочую область для обработки и анализа данных или создайте новую рабочую область.
  2. Создайте новый элемент в рабочей области или с помощью кнопки "Создать":
    1. Рабочее пространство
      1. Выберите свою рабочую область.
      2. Выберите Новый элемент.
      3. Выберите модель машинного обучения в разделе "Анализ и обучение данных". Снимок экрана: меню
    2. Кнопка "Создать":
      1. Выберите Создать, которое можно найти в вертикальном меню ... Снимок экрана: кнопка
      2. Выберите модель машинного обучения в разделе "Обработка и анализ данных". Снимок экрана: меню
  3. После создания модели можно приступить к добавлению версий модели для отслеживания метрик и параметров. Регистрация или сохранение экспериментов выполняется в существующей модели.

Вы также можете создать модель машинного обучения непосредственно из интерфейса разработки через mlflow.register_model() API. Если зарегистрированная модель машинного обучения с заданным именем не существует, API создает ее автоматически.

import mlflow

model_uri = "runs:/{}/model-uri-name".format(run.info.run_id)
mv = mlflow.register_model(model_uri, "model-name")

print("Name: {}".format(mv.name))
print("Version: {}".format(mv.version))

Управление версиями в модели машинного обучения

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

Note

Благодаря поддержке MLflow 3 в Fabric каждая модель, которая регистрируется с помощью mlflow.<flavor>.log_model(model, name="...") создает сущность LoggedModel, связанную с исходным запуском, параметрами, метриками, наборами данных и средой. Вы можете открыть LoggedModel на странице эксперимента и зарегистрировать его в качестве новой модели машинного обучения или новой версии существующей модели. Дополнительные сведения см. в разделе MLflow 3 в Fabric для обработки и анализа данных.

Отслеживание моделей машинного обучения

Версия модели машинного обучения представляет отдельную модель, зарегистрированную для отслеживания.

Снимок экрана: страница сведений о версии модели машинного обучения с метриками, параметрами и сведениями об отслеживании.

Каждая версия модели содержит следующие сведения:

Недвижимость Description
Время создания Дата и время создания модели.
Имя запуска Идентификатор запуска эксперимента, используемого для создания конкретной версии модели.
Гиперпараметры Сохранены в виде пар "ключ-значение". Оба ключа и значения являются строками.
Метрики Метрики сохраняются в формате пар ключ-значение. Значение является числовым.
Схема и подпись модели Описание входных и выходных данных модели.
Записанные файлы Зарегистрированные файлы в любом формате. Например, можно записывать изображения, среды, модели и файлы данных.
Теги Пользовательские метаданные в виде пар "ключ-значение", связанных с запусками. Узнайте, как применять теги.

Применение тегов к моделям машинного обучения

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

В этом коде показано, как обучить модель RandomForestRegressor с помощью Scikit-learn, записать модель и параметры с помощью MLflow, а затем зарегистрировать модель в реестре моделей MLflow с настраиваемыми тегами. Эти теги предоставляют полезные метаданные, такие как имя проекта, отдел, команда и квартал проекта, что упрощает управление и отслеживание версии модели.

import mlflow.sklearn
from mlflow.models import infer_signature
from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor

# Generate synthetic regression data
X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)

# Model parameters
params = {"n_estimators": 3, "random_state": 42}

# Model tags for MLflow
model_tags = {
    "project_name": "grocery-forecasting",
    "store_dept": "produce",
    "team": "stores-ml",
    "project_quarter": "Q3-2023"
}

# Log MLflow entities
with mlflow.start_run() as run:
    # Train the model
    model = RandomForestRegressor(**params).fit(X, y)
    
    # Infer the model signature
    signature = infer_signature(X, model.predict(X))
    
    # Log parameters and the model
    mlflow.log_params(params)
    mlflow.sklearn.log_model(model, artifact_path="sklearn-model", signature=signature)

# Register the model with tags
model_uri = f"runs:/{run.info.run_id}/sklearn-model"
model_version = mlflow.register_model(model_uri, "RandomForestRegressionModel", tags=model_tags)

# Output model registration details
print(f"Model Name: {model_version.name}")
print(f"Model Version: {model_version.version}")

После применения тегов их можно просмотреть непосредственно на странице сведений о версии модели. Кроме того, теги можно добавлять, обновлять или удалять с этой страницы в любое время.

Снимок экрана: страница сведений о версии модели с пользовательскими тегами, такими как имя проекта и сведения о команде.

Сравнение и фильтрация моделей машинного обучения

Чтобы сравнить и оценить качество версий модели машинного обучения, можно сравнить параметры, метрики и метаданные между выбранными версиями.

Визуальное сравнение моделей машинного обучения

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

Снимок экрана: представление сравнения моделей с несколькими версиями модели машинного обучения с метриками и параметрами.

Чтобы сравнить запуски, можно:

  1. Выберите существующую модель машинного обучения, содержащую несколько версий.
  2. Выберите вкладку "Вид " и перейдите к представлению списка моделей . Вы также можете выбрать параметр просмотра списка моделей непосредственно в представлении сведений.
  3. Столбцы в таблице можно настроить. Разверните область Настройка столбцов. Здесь можно выбрать свойства, метрики, теги и гиперпараметры, которые вы хотите просмотреть.
  4. Наконец, можно выбрать несколько версий, чтобы сравнить результаты в области сравнения метрик. На этой панели можно настроить диаграммы с изменениями заголовка диаграммы, типа визуализации, оси X, оси Y и т. д.

Сравнение моделей машинного обучения с помощью API MLflow

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

from pprint import pprint
from mlflow import MlflowClient

client = MlflowClient()
for rm in client.search_registered_models():
    pprint(dict(rm), indent=4)

Применение моделей машинного обучения

После обучения модели на наборе данных можно применить эту модель к данным, которые она никогда не видела, для создания прогнозов. Мы называем эту модель методом оценки или вывода.

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

  • Пакетная оценка — примените свою модель в крупном масштабе для больших наборов данных с помощью Apache Spark. Это идеально подходит для создания прогнозов по историческим или запланированным данным.
  • Оценка в режиме реального времени — разверните модель на конечной точке для выполнения прогнозов по запросу, что полезно для приложений, которым требуются немедленные результаты.

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