Проект с SageMaker Studio Lab и Docker

Цель этого поста — запустить рабочий процесс обработки данных на AWS, а затем отправить его с помощью Docker, тем самым создав сквозную задачу машинного обучения.

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

  • Портативность
  • Производительность
  • Ловкость
  • Изоляция
  • Масштабируемость

С другой стороны, AWS SageMaker Studio Lab предоставляет возможности SageMaker без необходимости явно определять каждый подпроцесс.

Выбор набора данных

Для этого проекта мы будем использовать 34 686 770 отзывов Amazon от 6 643 669 пользователей о 2 441 053 продуктах из Стэнфордского проекта сетевого анализа (SNAP). Данные распространяются по лицензии BSD и бесплатны как для академического, так и для коммерческого использования.

Используемые данные являются подмножеством этих данных, найденных на Kaggle. Он содержит 1 800 000 обучающих выборок, 200 000 тестовых выборок, так что каждый отзыв может быть либо «положительным», либо «отрицательным».



Поскольку это большой набор данных, и мы работаем с AWS, данные хранятся в корзине S3. Кроме того, убедитесь, что корзина и сервисы AWS, которые вы используете, находятся в одном регионе. Для этого проекта выбран регион us-east-2 (Восточный Огайо, США).

IAM: знай свою роль

При работе с AWS одной из распространенных ошибок является отсутствие необходимых разрешений или незнание объема ваших разрешений. Перейдите в Управление идентификацией и доступом (IAM), создайте роль и прикрепите к ней следующие политики:

  • AmazonS3FullAccess
  • AmazonSageMakerПолный доступ
  • AWSGlueConsoleSageMakerNotebookFullAccess
  • AWSImageBuilderFullAccess
  • AmazonSageMakerPipelinesИнтеграция
  • AmazonSageMakerGroundTruthExecution

Почему SageMaker Studio Lab?

SageMaker Studio Lab предоставляет облегченную среду для выполнения задач быстрее, чем в SageMaker. У него есть некоторые недостатки, такие как отсутствие доступа к AWS Data Wrangler и масштабное распределенное обучение.

Чтобы начать работу с SageMaker Studio Lab, все, что вам нужно, — это учетная запись AWS и подождать около 24 часов, чтобы ваша учетная запись была одобрена. Оказавшись внутри лаборатории, среда выглядит как ноутбук Jupyter.

Вы можете запросить бесплатную учетную запись здесь: https://studiolab.sagemaker.aws/

Начало сеанса

Приведенный ниже фрагмент кода представляет собой стандартный способ подключения к вашим ресурсам AWS и определяет основные ресурсы. Думайте об этом как о Шебанге для начала работы с AWS.

Этапы предварительной обработки

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

Более того, в рабочем процессе машинного обучения нужно принять такое мышление: «он будет работать на чьем-то другом компьютере». Следовательно, крайне важно, чтобы то, что написано в среде Jupyter Notebook, могло содержаться в кратком сценарии Python.

Тем, кто только начинает работать с SageMaker, не забудьте придерживаться предписанного формата каталога: /opt/ml/…. На самом деле /opt/ml и все его подкаталоги зарезервированы SageMaker в соответствии с документацией. Например, /opt/ml/model/ — это каталог, в который вы записываете модель, которую генерирует ваш алгоритм.

Сценарий обучения

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

Оценка модели

Данные идеально сбалансированы: 50% положительных и 50% отрицательных. Поэтому точность является достаточным показателем. Точность и полнота также включены, чтобы выявить любые проблемы в прогнозировании.

До любой оптимизации параметров точность колеблется на уровне 80%, как и точность/отзыв.

Обработка заданий с помощью FrameworkProcessor

Модуль обработки SageMaker позволяет нам добавлять зависимости с помощью процессора FrameWork, который позволяет запускать набор сценариев Python как часть задания обработки. Кроме того, он дает процессору доступ к нескольким сценариям в каталоге вместо указания только одного сценария.

Доставка в Докер

Теперь, когда наш рабочий процесс идет гладко, пришло время отправлять! Сначала создайте каталог с именем docker внутри лаборатории и напишите Dockerfile для создания контейнера обработки:

Следующий шаг — создание контейнера с помощью команды docker, которая создает Elastic Registry Container (ECR) и отправляет образ docker:

P.S. Если вы используете компьютер Apple M1 или новее, не забудьте явно указать свою платформу при создании образа Docker.

Запуск Docker-контейнера

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

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

Заключение

С помощью сервисов AWS и Docker мы можем поместить код Python в контейнер и превратить рабочий процесс обработки данных в продукт.

Если вам интересно увидеть весь код вместе с выводами для проверки вашей собственной работы, ознакомьтесь с репозиторием Github ниже: