Сквозной пример с использованием Sci-Kit Learn Estimator в режиме сценария SageMaker

Обучение и развертывание моделей машинного обучения в масштабе может потребовать значительных вычислительных ресурсов. Это привело к росту числа облачных провайдеров, таких как AWS, Microsoft Azure и других. SageMaker — это основной сервис машинного обучения Amazon, который позволяет разработчикам создавать, обучать и развертывать модели в любом масштабе. SageMaker предлагает среду, подобную Jupyter Notebook, которая позволяет разработчикам создавать собственные модели с помощью популярных платформ, таких как SciKit-Learn, Tensorflow и PyTorch. В этой статье мы рассмотрим обучение и развертывание образца модели Sci-Kit Learn Регрессия случайного леса в Наборе данных о потреблении бензина.

ПРИМЕЧАНИЕ. Для тех из вас, кто не знаком с AWS, убедитесь, что вы создали учетную запись по следующей ссылке, если хотите продолжить. Для этой статьи я предлагаю ознакомиться с AWS и его основными сервисами, такими как IAM, S3. Я также предоставлю список сервисов, которые мы будем использовать, вместе с более подробными определениями. Если вы уже знакомы с этими сервисами, можете сразу перейти к демонстрации кода.

Содержание (ToC)

  1. Сервисы AWS
  2. Предварительные требования/настройка
  3. Импорт и подготовка данных в S3
  4. Модель построения/обучения
  5. Развертывание конечной точки и вывод
  6. Код и заключение
  7. Дополнительные ресурсы

1. Сервисы АМС

AWS SageMaker: позволяет создавать, обучать и развертывать пользовательские модели машинного обучения, поддерживает языки Python и R. Также включает в себя различные предварительно обученные модели AWS, которые можно использовать для конкретных задач. Параметр вывода SageMaker, который мы используем в этом случае, известен как Режим сценария.

AWS S3: основной сервис хранения Amazon. Мы будем использовать этот сервис для хранения наших данных обучения и артефактов модели/информации.

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

Boto3: комплект AWS Software Development Kit (SDK) для разработчиков Python, который можно использовать в блокноте SageMaker для доступа к различным сервисам, таким как S3.

Идентификационный доступ и управление (IAM): позволяет управлять доступом к сервисам AWS с помощью разрешений и ролей. Мы создадим роль для вашего экземпляра SageMaker.

2. Предварительные требования/настройка

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

Затем перейдите в консоль SageMaker и создайте Экземпляр ноутбука. Экземпляр ноутбука — это вычислительный экземпляр ML, и SageMaker предлагает множество различных типов экземпляров, которые вы можете выбрать на основе таких параметров, как размер ваших данных, модель и другие требования. При создании этого экземпляра Notebook вам потребуется создать роль IAM. Убедитесь, что у этой роли есть разрешения на доступ к S3, так как мы будем передавать туда наши данные.

Через несколько минут экземпляр запустится, откройте Jupyter или JupyterLab (отображаются оба варианта), и вы попадете в очень знакомую среду Data Science. Для блокнота, с которым мы работаем, выберите conda-python3, так как мы работаем с Scikit-learn, если вы работаете с TensorFlow или PyTorch, выберите блокнот этого варианта.

3. Импорт и подготовка данных в S3

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

Далее нам нужно использовать Python SageMaker SDK и Boto3 для загрузки данных в S3.

Чтобы убедиться, что данные были загружены правильно, мы можем попробовать прочитать входной путь обучения, чтобы убедиться, что у нас тот же набор данных.

Теперь наши данные готовы предоставить модели для обучения.

4. Модель построения/обучения

Чтобы обучить модель, вы должны сначала понять Режим сценария. SageMaker создал бесшовную функцию, в которой вы можете создать оценщик, который принимает скрипт обучения или логического вывода, который будет содержать имеющийся у вас код модели/обучения. SageMaker предоставляет оценщики в своем SDK для популярных платформ, таких как Scikit Learn, TensorFlow и PyTorch. В этом случае мы будем использовать Scikit Learn Estimator для передачи сценария, а также других гиперпараметров, которые примет оценщик. Чтобы создать скрипт, откройте терминал в экземпляре Notebook и создайте файл python (train.py в данном случае). После того, как мы создали файл, нам нужно добавить все импорты, необходимые для построения нашей модели.

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

Используя argparse, мы можем считывать эти разные переменные, которые передаются через наш оценщик. Теперь мы можем использовать предварительную обработку и построение модели кода Scikit Learn.

Обратите внимание, что вам необходимо сохранить модель в переменной среды с каталогом модели SageMaker. Наш обучающий скрипт почти готов, но мы должны добавить несколько функций для логического вывода, которые SageMaker использует для управления загрузкой нашей модели и обработкой ввода/вывода после развертывания нашей конечной точки. Четыре функции, которые SageMaker выбирает в сценарии, называются следующим образом: model_fn, input_fn, output_fn и predict_fn.

Мы загружаем модель и настраиваем нашу конечную точку так, чтобы она принимала только входные данные типа JSON при создании. Теперь мы можем вернуться к нашей записной книжке и использовать SageMaker SDK для создания экземпляра оценщика Scikit Learn и прохождения пути обучения.

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

5. Развертывание конечной точки и вывод

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

Теперь, чтобы протестировать конечную точку, мы будем использовать Boto3 для передачи образца данных в вызов SageMaker invoke_endpoint.

Это конечная точка логического вывода в реальном времени. Для логического вывода на больших наборах данных воспользуйтесь Пакетным преобразованием SageMaker.

6. Код и заключение



Чтобы получить доступ ко всему коду примера, перейдите по ссылке выше. SageMaker Script Mode позволяет специалистам по обработке и анализу данных и разработчикам сосредоточиться на построении моделей и легко настраивать пользовательские модели в больших масштабах. Чтобы изучить аналогичный пример, но для TensorFlow, ознакомьтесь с моей соответствующей статьей Пример режима сценария TF здесь.

Я надеюсь, что эта статья оказалась полезной для людей, работающих с Amazon SageMaker. Не стесняйтесь оставлять любые отзывы в комментариях или связаться со мной в LinkedIn, если вам интересно поговорить об ML и AWS. Не забудьте подписаться на меня в Medium, если вам интересны мои работы. Спасибо за чтение.

7. Дополнительные ресурсы

Scikit Learn SageMaker SDK

Режим сценария SageMaker

Обучение и развертывание пользовательских моделей TensorFlow с помощью SageMaker