Наука о данных в реальном мире

Настройте BERT с помощью PyTorch и Hugging Face Transformers на AWS SageMaker

Пошаговое руководство по созданию современного классификатора текста с использованием PyTorch, BERT и Amazon SageMaker.

В этом руководстве я покажу вам, как создать и обучить классификатор текста на Amazon SageMaker. Мы воспользуемся великолепной библиотекой Hugging Face Transformers для обучения современной модели НЛП для классификации рецензий на книги Amazon.

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

Давайте начнем

Если вы уже знакомы с SageMaker и просто хотите увидеть код, вот репо.

Что такое SageMaker?

Amazon SageMaker - это полностью управляемая служба машинного обучения для создания, обучения и развертывания моделей машинного обучения. SageMaker имеет несколько встроенных фреймворков для обучения моделей (XGBoost, BlazingText и т. Д.), Но также позволяет легко создавать собственные модели глубокого обучения с использованием таких фреймворков, как PyTorch и TensorFlow.

Зачем изучать SageMaker?

Использование SageMaker имеет ряд преимуществ для специалистов по обработке данных и инженеров:

  1. Модельное обучение. SageMaker позволяет легко использовать экземпляры графического процессора для более быстрого обучения модели. Обучение многим архитектурам глубокого обучения невозможно без графических процессоров. Например, точная настройка современных языковых моделей (как в этом руководстве) и моделей компьютерного зрения требует обновления сотен миллионов параметров на каждом этапе. Даже если это не требуется, использование графических процессоров для обучения ускорит цикл разработки, позволяя выполнять итерации быстрее и приносить больше пользы.
  2. Развертывание модели. SageMaker позволяет относительно просто развертывать модели как конечные точки производственного уровня, к которым можно получить доступ через REST API. Вы определяете контейнер, тип экземпляра и несколько конфигураций масштабирования, а SageMaker обрабатывает все остальное.
  3. Настройка гиперпараметров. SageMaker поддерживает байесовскую оптимизацию гиперпараметров для многих фреймворков моделирования. Эта функция чрезвычайно полезна для быстрого поиска лучших гиперпараметров.
  4. У этого списка нет конца. AWS продолжает добавлять функции в экосистему SageMaker, решая такие проблемы, как мониторинг моделей, отслеживание экспериментов и многое другое.

Google Cloud и Azure предоставляют решения, аналогичные AWS SageMaker. Я выбрал AWS для этого руководства, потому что он является лидером отрасли - его используют все больше компаний, что делает его более востребованным навыком для разработчиков.

Модельное обучение с SageMaker

  1. Настраивать.
  2. Данные.
  3. Скрипт модели PyTorch.
  4. Стартовое модельное обучение.

Настраивать

Для этого руководства вам потребуется создать учетную запись AWS и настроить пользователя с правами администратора IAM, а также роль для SageMaker. Вам также потребуется установить и настроить интерфейс командной строки AWS и создать корзину S3. Выполните шаги 1–4 здесь, чтобы начать!

Вам также нужно будет запросить увеличение лимита обслуживания, чтобы получить доступ к графическим процессорам. Для этого перейдите в Центр поддержки на консоли и нажмите Создать запрос. Выберите Увеличение лимита обслуживания, а в качестве типа лимита выберите SageMaker. Заполните эту форму, указав регион, в котором вы будете тренировать модели:

Данные

Данные, используемые для этого руководства, являются частью набора данных обзоров Amazon, а именно обзорами книг, которые можно загрузить, нажав здесь. Этот набор данных довольно большой, поэтому вы, вероятно, захотите ограничить его размер для этого упражнения. Уменьшенную версию этих данных можно найти в data.zip в репозитории GitHub. Если вы хотите научиться обрабатывать большие наборы данных самостоятельно, ознакомьтесь с моим введением по использованию PySpark на AWS EMR.

Достаточно просто использовать собственный набор данных или найти его на Kaggle - все, что вам нужно, это файл со строками текста и метками.

Модель

В этом уроке мы будем использовать библиотеку Transformers от Hugging Face. Hugging Face позволяет легко загружать предварительно обученные современные языковые модели и настраивать их в собственном наборе данных. Конкретной используемой здесь моделью является DistilBERT - ответвление BERT, которое меньше по размеру и, следовательно, быстрее и дешевле для обучения и вывода.

Практика точной настройки предварительно обученной модели называется трансферным обучением - подробнее об этом здесь. Если вы хотите узнать больше об архитектуре трансформатора, которая произвела революцию в НЛП, я настоятельно рекомендую Иллюстрированный трансформатор Джея Аламмара.

Создайте скрипт оценщика SageMaker

Нам нужен сценарий Python, который загружает наши данные обучения в S3, определяет наш SageMaker Estimator и запускает задание обучения. Вам нужно будет обновить bucket и role, чтобы отразить сегмент и роль, которые вы создали в разделе Настройка выше.

  • Первый раздел загружает наши данные обучения в S3, где SageMaker может получить к ним доступ.
  • Затем мы определяем hyperparameters, которые на самом деле являются просто аргументами командной строки, которые принимает наш модельный сценарий. Вы можете сделать сценарий вашей модели действительно гибким, чтобы он мог принимать различные параметры для предварительной обработки данных и обучения модели. Это очень удобно при использовании SageMaker Hyperparameter Tuner.
  • entry_point в объекте PyTorch Estimator определяет наш сценарий модели, который описывается в следующем разделе.
  • source_dir в объекте PyTorch Estimator дает нам доступ к функциям, определенным в utils.py, а также устанавливает пакеты, определенные в requirements.txt. Полную версию source_dir можно найти здесь.
  • output_path в объекте PyTorch Estimator определяет, где ваша обученная модель будет сохранена в S3.

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

Скрипт модели

Написание скрипта для обучения модели в SageMaker ничем не отличается от написания этого на вашем локальном компьютере. Полный сценарий можно найти в репозитории GitHub.

Настройте argparse для приема аргументов командной строки

В блоке if __name__ == “__main__": внизу вашего файла нам нужно будет использовать модуль argparse, чтобы наш скрипт принимал гиперпараметры в качестве аргументов командной строки. В этом контексте гиперпараметром может быть любой аргумент, который вы хотите передать сценарию модели для предварительной обработки данных, а также для обучения модели.

Создайте собственный набор данных PyTorch.

Обучите модель.

Начальное обучение модели

Запустите train_model.py и дождитесь завершения задания или следуйте инструкциям в терминале, чтобы посмотреть модель поезда.

ВНИМАНИЕ! На момент написания ml.p2.xlarge экземпляров стоили 0,90 доллара США в час. Запуск этого сценария также потребует [минимальных] затрат на хранилище S3. Обязательно удалите данные в корзине S3, если не хотите, чтобы с вас взималась ежемесячная плата.

Проверьте вывод модели

Проверьте журналы CloudWatch, выполнив поиск по SageMaker в консоли AWS и нажав Training Jobs на панели навигации слева. Затем нажмите на только что завершенное задание по обучению и прокрутите вниз до пункта Просмотреть журналы.

Щелкните поток журнала, и вы сможете просмотреть журналы своего задания по обучению модели, включая все, что вы напечатали в src/model.py.

Найдите model.tar.gz, перейдя к output_path, определенному в train_model.py. Вы можете загрузить эту модель, чтобы использовать ее в другом месте, или получить к ней доступ по этому пути S3 для пакетного вывода или вывода в реальном времени в SageMaker.

Заключение

Я надеюсь, что теперь вы чувствуете себя готовым создавать и обучать модели в облаке с помощью Amazon SageMaker. На странице AWS Labs GitHub приведены примеры использования SageMaker с другими фреймворками, такими как Keras / TensorFlow, scikit-learn и т. Д.

Больше руководств по AWS

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

Связаться

Спасибо за чтение! Пожалуйста, дайте мне знать, понравилась ли вам статья или у вас есть критические замечания. Если хотите поздороваться, свяжитесь со мной в LinkedIn. Ваше здоровье!