Шаблоны развертывания моделей
В этой статье описываются два распространенных шаблона проведения артефактов машинного обучения через промежуточные этапы в рабочую среду. Асинхронный характер изменений в моделях и коде означает, что процесс разработки моделей машинного обучения может идти разными путями.
Модели создаются в коде, но итоговые артефакты модели и код для их создания могут работать асинхронно. То есть новые версии модели и изменения в коде могут быть разнесены во времени. Например, рассмотрим следующие сценарии:
- Для обнаружения мошеннических транзакций вы разрабатываете конвейер машинного обучения, который каждую неделю повторно обучает модель. Код может изменяться нечасто, но модель может повторно обучаться каждую неделю для включения новых данных.
- Для классификации документов можно создать большую глубокую нейронную сеть. В этом случае обучение модели является ресурсоемким и занимает много времени, а переобучение модели, скорее всего, будет происходить редко. Однако код, который служит для развертывания, обслуживания и отслеживания этой модели, можно обновлять без повторного обучения модели.
Шаблоны различаются тем, переводится ли в рабочую среду артефакт модели или создающий его обучающий код.
Развертывание кода (рекомендуется)
В большинстве случаев в Databricks рекомендуется подход на основе развертывания кода. Этот подход включен в рекомендуемый рабочий процесс MLOps.
В рамках этого шаблона код для обучения моделей разрабатывается в среде разработки. Этот же код переносится в промежуточную, а затем в рабочую среду. Модель обучается в каждой среде: сначала в среде разработки в рамках разработки модели, затем в промежуточной среде (на основе ограниченного подмножества данных) в рамках тестов интеграции и, наконец, в рабочей среде (на основе полного набора рабочих данных) для создания окончательной модели.
Преимущества.
- В организациях, где доступ к производственным данным ограничен, этот шаблон позволяет обучать модель на производственных данных в производственной среде.
- Автоматическое переобучение модели безопаснее, так как обучающий код проверяется, тестируется и утверждается для развертывания в рабочей среде.
- К вспомогательному коду применяется тот же шаблон, что и к коду для обучения модели. Оба набора кода проходят тесты интеграции в промежуточной среде.
Недостатки.
- Кривая обучения навыку передачи кода участникам совместной работы специалистами по обработке и анализу данных может быть крутой. В этом случае могут помочь стандартные шаблоны проектов и рабочие процессы.
Кроме того, специалисты по обработке и анализу данных должны иметь возможность проверять результаты обучения в рабочей среде, чтобы выявлять и устранять проблемы, связанные с машинным обучением.
Если в вашей ситуации требуется обучать модель в промежуточной среде на основе всего рабочего набора данных, можно использовать гибридный подход: развернуть код в промежуточной среде, обучить модель, а затем развернуть ее в рабочей среде. Этот подход позволяет экономить на обучении в рабочей среде, но увеличивает затраты на операции в промежуточной среде.
Развертывание моделей
В рамках этого шаблона артефакт модели создается обучающим кодом в среде разработки. Затем артефакт проверяется в промежуточной среде перед развертыванием в рабочей среде.
Рассмотрите этот вариант, если применяется один или несколько из следующих вариантов:
- Обучение модели является очень затратным или трудно воспроизвести.
- Вся работа выполняется в одной рабочей области Azure Databricks.
- Вы не работаете с внешними репозиториями или процессом CI/CD.
Преимущества.
- Упрощение передачи работы для специалистов по обработке и анализу данных
- В случаях, когда обучение модели является дорогостоящим, требуется только однократное обучение модели.
Недостатки.
- Если рабочие данные недоступны в среде разработки (по соображениям безопасности), эта архитектура может оказаться невозможной.
- Автоматическое переобучение моделей в рамках этого шаблона представляет сложность. Вы можете автоматизировать переобучение в среде разработки, но команда, отвечающая за развертывание модели в рабочей среде, может не принять итоговую модель как готовую.
- Вспомогательный код, например конвейеры, используемые для проектирования признаков, вывода и мониторинга, необходимо развернуть в рабочей среде отдельно.
Обычно среда (разработка, тестовая или продуктивная) соответствует каталогу в Unity Catalog. Дополнительные сведения о реализации этого шаблона см . в руководстве по обновлению.
На приведенной ниже схеме показан жизненный цикл кода для описанных выше шаблонов развертывания в разных средах выполнения.
Среда, показанная на схеме, является последней средой, в которой выполняется шаг. Например, в шаблоне развертывания моделей окончательное модульное и интеграционное тестирование выполняется в среде разработки. В шаблоне кода развертывания модульные тесты и интеграционные тесты выполняются в средах разработки, а окончательное модульное и интеграционное тестирование выполняется в промежуточной среде.