Поделиться через


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

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

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

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

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

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

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

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

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

  1. Выберите существующую рабочую область для обработки и анализа данных или создайте новую рабочую область.
  2. Создайте новый элемент в рабочей области или с помощью кнопки "Создать":
    1. Workspace:
      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))

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

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

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

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

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

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

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

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

Тег 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

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

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

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

Дальнейшие действия.