В предыдущей части этой серии статей мы увидели краткое введение в 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 за его помощь в создании этой статьи.
Всем спасибо за чтение! 🚀
Рекомендации
- https://www.edlitera.com/blog/posts/aws-sagemaker-ci-cd-pipelines
- https://aws.amazon.com/solutions/implementations/mlops-workload-orchestrator/
- https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates-sm.html#sagemaker-projects-templates-update
- https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates-custom.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates-sm.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates-sm.html#sagemaker-projects-templates-code-commit
- https://towardsdatascience.com/i-had-no-idea-how-to-build-a-machine-learning-pipeline-but-heres-what-i-figured-f3a7773513a
- https://aws.amazon.com/blogs/machine-learning/build-a-ci-cd-pipeline-for-deploying-custom-machine-learning-models-using-aws-services/
- https://aws.amazon.com/blogs/machine-learning/building-automating-managing-and-scaling-ml-workflows-using-amazon-sagemaker-pipelines/