Как реализовать конвейер разработки и оценки модели CI / CD в AWS Sagemaker.

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

Итак, приступим!

Я разделил это руководство на 2 части.

1. Разработка и оценка модели с помощью AWS Sagemaker Studio.

2. Развертывание модели с использованием AWS Lambda и REST API.

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

· Аккаунт AWS - стоимость запуска всего учебного курса будет менее 0,50 доллара США, не беспокойтесь.

· Понимание Python. Большая часть работы по машинному обучению сегодня выполняется на Python.

· Терпение. Неудача - важнейшая предпосылка успеха, поэтому продолжайте попытки, пока она не сработает.

Часть 1: Разработка модели

Мы создадим проект в Sagemaker Studio, чтобы построить наш конвейер разработки.

1. Войдите в свою учетную запись AWS и выберите Sagemaker из списка услуг.

2. Выберите Sagemaker Studio и используйте Быстрый запуск для создания Studio.

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

3. Выберите Компоненты и реестры Sagemaker на левой панели навигации и выберите Создать проекты.

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

4. Выберите шаблон MLOps для разработки, оценки и развертывания модели из списка и создайте проект.

Как только ваш новый проект будет создан, вы найдете 2 готовых репозитория. Первый определяет разработку и оценку вашей модели, а другой создает вашу модель в пакете и развертывает ее в конечной точке для использования API. В этом руководстве мы изменим первый шаблон для запуска нашего собственного варианта использования.

5. Клонируйте первый репозиторий, чтобы мы могли изменить нужные нам файлы.

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

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

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

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

· preprocess.py и Assessment.py определяют код, который нам нужно выполнить для этапов предварительной обработки и оценки в нашем конвейере.

· codebuild-buildspec-yml создает и управляет конвейером.

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

6. Переименуйте папку abalone в customer-churn и внесите изменения в файл codebuild-buildspec-yml, чтобы отразить это изменение.

run-pipeline --module-name pipelines.customer_churn.pipeline \

7. Нам нужно загрузить данные в нашу корзину AWS s3 по умолчанию для использования, мы можем сделать это с помощью ноутбука. Создайте новую записную книжку в репозитории на вкладке «Файл» в студии, выберите ядро ​​с базовым пакетом Python для науки о данных, вставьте приведенный ниже код в ячейку и запустите.

!aws s3 cp s3://sagemaker-sample-files/datasets/tabular/synthetic/churn.txt ./
import os
import boto3
import sagemaker
prefix = 'sagemaker/DEMO-xgboost-churn'
region = boto3.Session().region_name
default_bucket = sagemaker.session.Session().default_bucket()
role = sagemaker.get_execution_role()
RawData = boto3.Session().resource('s3')\
.Bucket(default_bucket).Object(os.path.join(prefix, 'data/RawData.csv'))\
.upload_file('./churn.txt')
print(os.path.join("s3://",default_bucket, prefix, 'data/RawData.csv'))

Теперь нам нужно изменить код внутри pipeline.py, valu.py и preprocess.py в соответствии с нашими потребностями.

8. Ради руководства скопируйте код из ссылки для обновления кода в pipeline.py, preprocess.py и Assessment.py, но не забудьте изучить код лучше. понимание деталей.

Все готово, как только мы обновим код в этих 3 файлах, мы готовы запустить наше первое выполнение конвейера, но, поскольку мы пытаемся реализовать шаблон CI / CD, об этом автоматически позаботятся, как только мы зафиксируем и отправим наш код.

9. Выберите вкладку GIT на боковой панели навигации и выберите файлы, которые вы изменили, чтобы добавить в промежуточную область, а затем зафиксируйте и отправьте изменения в удаленный репозиторий.

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

Ура!! Поздравляю, вы только что выполнили свою первую тренировочную работу.

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

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

10. Перейдите на вкладку Группа моделей на главной странице проекта и выберите созданную модель. Вы можете проверить страницу Показатели, чтобы просмотреть результаты этапа оценки. .

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

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

Заключение

Я постарался, чтобы это руководство использовалось для использования Sagemaker, так как оно в любом случае длинное, и впереди еще часть 2. Цель здесь - дать краткий обзор различных компонентов Sagemaker посредством реализации простого проекта. Я предлагаю читателям не следовать руководству шаг за шагом и экспериментировать со своими собственными идеями и шагами, вы часто будете терпеть неудачу, но вы многому научитесь, и это повестка дня. Надеюсь, вам понравится работать с этим руководством так же, как мне понравилось его составлять. Не стесняйтесь оставлять любые предложения или отзывы в комментариях, хотелось бы их услышать.

Практическое руководство по MLOps в AWS Sagemaker - Часть II