Жизненный цикл машинного обучения

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

  1. Область использования и определение успешности
  2. Изучение и понимание данных
  3. Подготовка данных и функций
  4. Обучайте модели и отслеживайте эксперименты
  5. Evaluate
  6. Регистрация, этапы и тестовые модели
  7. Развертывание в рабочей среде
  8. Мониторинг и переобучение

1. Область использования и определение успешности

Прежде чем что-либо создавать, согласуйте, что именно должна делать модель и как вы поймёте, что она работает.

  • Что такое целевой объект прогнозирования, и какой класс проблемы машинного обучения означает: классификация, регрессия, прогнозирование, рекомендации, ранжирование, обнаружение аномалий или что-то другое?
  • Какие входные данные доступны и достаточно ли для изучения целевого шаблона?
  • Какие метрики определяют успех: точность, AUC, точность k или бизнес-ключевых показателей эффективности?
  • Каковы требования к обслуживанию и рабочей среде: задержка, пропускная способность и свежесть данных?
  • Какие заинтересованные лица должны подписаться на производственные развертывания? Каковы их требования к объяснимости?

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

2. Изучение и понимание данных

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

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

EDA отвечает на вопросы, которые сообщают о остальной части жизненного цикла:

  • Какие входные данные наиболее прогнозируют целевой объект, и какие из них недоступны во время обслуживания?
  • Есть ли пропущенные значения, выбросы или асимметричные распределения, которые требуют очистки или преобразования?
  • Достаточно ли большой набор данных и достаточно ли репрезентативный, чтобы узнать целевой шаблон?

Azure Databricks упрощает EDA с помощью интерактивных инструментов, инструментов для совместной работы и инструментов с поддержкой ИИ. Изучайте свои данные с помощью чата на естественном языке, пользовательских интерфейсов или кода, а также сотрудничайте благодаря совместному редактированию в реальном времени и обмену кодом через Git:

  • Записные книжки предоставляют совместные пространства для изучения, визуализации и документации.
  • Панели мониторинга предоставляют исследование на основе SQL и визуализации.
  • Genie Chat предоставляет полностраничный интерфейс естественного языка для получения вопросов о данных.
  • Genie Code может выполнять полностью автоматизированную EDA или выступать в качестве интерактивного помощника.

3. Подготовка данных и функций

С помощью понятных данных преобразуйте необработанные источники и преобразования, определенные во время EDA, в функции моделей машинного обучения. Оцените конвейеры данных для обучения и обслуживания, включая скорость, объем, свежесть и владение источниками данных. Граница между инженерией данных (подготовкой и преобразованием данных) и инженерией признаков (созданием входных признаков для моделей машинного обучения) размыта. В Azure Databricks инженерия данных и машинное обучение совместно используют один и тот же уровень платформы и управления в каталоге Unity, поэтому данные, подготовленные одной командой, могут быть доступны сразу же как функции для другого, без перемещения данных или дублированных конвейеров.

Выполните поиск существующих определений данных и функций:

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

Создайте и управляйте новыми ресурсами по мере необходимости:

  • Дополнительные сведения о средствах приема и инженерии данных см. в статье " Проектирование данных с помощью Databricks" , в том числе конструктор Lakeflow для интерфейса искусственного интеллекта без кода.
  • Используйте хранилище компонентов для определения и управления функциями в качестве многократно используемых, управляемых ресурсов. Одни и те же определения признаков используются как при обучении, так и в продуктивной среде, с поддержкой пакетной и потоковой загрузки данных, а также пакетного обслуживания и обслуживания в реальном времени.

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

4. Обучение моделей и отслеживание экспериментов

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

Среды и вычислительные ресурсы

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

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

Для рабочих нагрузок ЦП и GPU можно также использовать классические вычисления с средой выполнения Databricks для Машинное обучение.

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

Отслеживание MLflow

Используйте MLflow, управляемый Azure Databricks для отслеживания экспериментов и регистрации метаданных модели:

Начало работы с моделированием

Genie Code может создать полный блокнот ML на основе описания задачи прогнозирования на естественном языке, включая выбор признаков из Feature Store, обучение модели и отслеживание в MLflow.

Также см. ресурсы для настройки гиперпараметров, примеры обучения модели и Ray в Databricks.

Сведения о глубоком обучении и обучении классических моделей машинного обучения с ускорением на GPU см. в примерах ноутбуков для среды выполнения ИИ.

5. Оценка

Во время разработки определите метрики оценки качества на основе требований, определённых на этапе определения объёма работ:

  • Базовые метрики могут быть общими метриками машинного обучения, такими как точность, AUC, RMSE или метрики, относящиеся к домену.
  • Оценка также может включать производные метрики, такие как предвзятость и справедливость между сегментами населения, измеряемые путем сравнения базовых метрик в сегментах данных.

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

6. Регистрация, этапы и тестовые модели

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

Прежде чем новая версия модели обслуживает рабочий трафик, протестируйте версию в промежуточном режиме в реалистичных условиях:

  • Пометьте версию-кандидат модели с помощью псевдонимов (Staging, Production), чтобы обозначить этап жизненного цикла без переименования артефактов.
  • Проведите интеграционные тесты в среде стейджинга: убедитесь, что сервисный эндпоинт запускается, задержка соответствует требованиям, а выходные данные имеют корректный формат.
  • Выполните A/B- или теневые тесты на рабочих данных, чтобы проверить производительность до полного переключения.
  • Сбор подписок заинтересованных лиц на основе результатов оценки.

Это описание чрезмерно упрощает практики развертывания и операционные процессы машинного обучения (MLOps). Дополнительные сведения о MLOps см. в рабочих процессах MLOps на Azure Databricks.

7. Развертывание в рабочей среде

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

  • Обслуживание в режиме реального времени. Развертывание модели в качестве конечной точки REST с низкой задержкой с помощью службы моделей для вариантов использования, требующих решений с низкой задержкой, таких как перехват мошенничества во время транзакции, динамическая персонализация или динамическая цена.
  • Пакетный вывод: ai_query обеспечивает эффективный пакетный вывод для пользовательских моделей, развернутых как конечные точки Model Serving. Можно также использовать пользовательский код с пользовательскими функциями Apache Spark (UDF) (пример) или mlflow.pyfunc для пакетного вывода. Пакетные конвейеры записывают результаты в таблицы Delta для подчиненных приложений, панелей мониторинга или конвейеров. Этот шаблон обрабатывает ежедневные прогнозы, ночные обновления рекомендаций и другие периодические задания.

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

Genie Code может создавать код для развертывания и помочь устранить проблемы с обслуживанием, объяснить поведение конечной точки и ускорить итерацию при обновлении или повторном развертывании моделей.

8. Мониторинг и переобучение

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

  • Записывайте входные и выходные данные ваших развернутых моделей. При обслуживании в реальном времени таблицы инференса обеспечивают автоматическое журналирование без изменений в коде вашей модели. Для пакетной обработки ваши конвейеры обычно читают данные из таблиц Delta под управлением Unity Catalog и записывают данные в них.
  • Передайте эти журналы в мониторинг качества данных, который отслеживает качество данных, дрейф признаков и распределение предсказаний с течением времени. Если у вас есть эталонные данные или данные обратной связи, вы можете объединить эти данные с журналами обработки запросов, чтобы вычислить метрики качества предсказаний.
  • Используйте пользовательский интерфейс мониторинга и оповещения об обнаружении аномалий , чтобы активировать эскалацию или переобучение до заметного снижения качества.

Подробнее о промышленном ML см. в статье Рабочие процессы MLOps в Azure Databricks.

Дополнительные ресурсы