В предыдущей части этой серии статей мы увидели краткое введение в MLOps и Amazon SageMaker. На этот раз мы углубимся в конвейеры AWS SageMaker и их работу.

Прежде всего, давайте немного вспомним о конвейерах. Согласно C3 AI: Конвейер машинного обучения — это комплексная конструкция, которая организует поток данных в модель машинного обучения (или набор из нескольких моделей) и вывод из нее. Он включает в себя ввод необработанных данных, функции, выходные данные, модель машинного обучения и параметры модели, а также выходные данные прогнозирования. Теперь давайте взглянем на конвейер MLOps, предложенный AWS:

Перейдите в Шаблон сборки, обучения и развертывания MLOps, чтобы получить доступ к коду, нажмите Запустить продукт. Будет предложена форма, заполните ее и помните, что вы должны ввести идентификатор и имя проекта SageMaker строчными буквами, чтобы избежать проблем с предоставлением продукта. После этого обратите внимание, что на CodeCommit были созданы два репозитория: sagemaker-‹project name›-‹project id›-modelbuild и sagemaker-‹project name›-‹project id›-modeldeploy. . Сейчас мы сосредоточимся только на построении модели.

Построение модели

Давайте взглянем на наш репозиторий сборки модели. Макет проекта выглядит следующим образом:

| — codebuild-buildspec.yml
| — CONTRIBUTING.md
| — трубопроводы
| | — морское ушко
| | | — оценить.py
| | | — __init__.py
| | | — pipe.py
| | ` — preprocess.py
| | — get_pipeline_definition.py
| | — __init__.py
| | — run_pipeline.py
| | — _utils.py
| ` — __версия__.py
| — README.md
| — sagemaker-pipelines-project.ipynb
| — setup.cfg
| — setup.py
| — тесты
| ` — test_pipelines.py
` — tox.ini

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

| — трубопроводы
| | — морское ушко
| | | — оценить.py
| | | — pipe.py
| | ` — предварительный процесс.py

Предварительная обработка

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

Далее приносим наши данные из AWS S3:

Теперь, когда у нас есть данные в удобном Pandas DataFrame, мы можем продолжить, применив к нашим данным необходимые преобразования:

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

После этого мы разделили наши данные на три части: обучение, проверка и тестирование.

Оценивать

Здесь мы получаем модель и выполняем проверки тестовых данных, чтобы получить метрики, необходимые для определения производительности модели:

Трубопровод

Мы изучаем оркестровку необходимых модулей для каждого шага. Запуск функции get_pipeline создает сеанс SageMaker, который будет использоваться для управления ресурсами AWS, такими как сегменты и экземпляры.

Шаг предварительной обработки

На этом шаге мы экспортируем preprocess.py и определяем выходные данные для дальнейших шагов:

Шаг обучения

Мы собираемся использовать XGBoost в качестве нашего фреймворка. Если вы хотите использовать другой подход, такой как scikit-learn, вы можете посмотреть пример здесь и обратиться к документам.

Шаг проверки

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

Шаги регистрации и условия

Мы регистрируем условный шаг, который запускает или не запускает развертывание модели в зависимости от показателей отчета об оценке:

Экземпляр

Наконец, мы можем определить экземпляр нашего конвейера:

Развертывание модели

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

Последние мысли

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

Вот и все, народ! Я хотел бы поблагодарить моего приятеля Esteban Cerón за его помощь в создании этой статьи.

Всем спасибо за чтение! 🚀

Рекомендации