Используйте SageMaker Studio Lab для обучения собственных моделей НЛП

О чем это?

Обучение моделей машинного обучения становится все более ресурсоемким. Современные современные модели обработки естественного языка (NLP), например, представляют собой почти исключительно нейронные сети, для обучения которых требуется мощность графического процессора.

К счастью, число свободно доступных сред разработки с мощностью GPU также растет. В декабре 2021 года AWS анонсировала SageMaker Studio Lab. Studio Lab — это веб-среда IDE, основанная на популярной среде Jupyter Lab. И, что лучше всего, он поставляется с бесплатной мощностью графического процессора.

В этом уроке мы будем использовать этот GPU, чтобы научить модель НЛП писать как Шекспир. Сделать это стало до смешного легко благодаря примерам сценариев, разработанных Hugging Face. На самом деле нам понадобится всего одна команда и менее пяти минут, чтобы обучить эту модель НЛП.

Весь код для этого урока можно найти в этом репозитории Github.

Начало работы с Studio Lab

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

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

В этом меню мы можем выбрать, хотим ли мы запустить проект с CPU или GPU. Поскольку современные модели НЛП основаны на глубоком обучении (т. е. они основаны на нейронных сетях), мы должны использовать GPU для нашего проекта. После того, как мы выбрали GPU, мы можем запустить среду выполнения, нажав кнопку с символом воспроизведения. Это должно занять всего несколько секунд. Затем, наконец, мы можем открыть среду Studio Lab, нажав кнопку «Открыть проект».

Как научить модель ИИ

Как уже упоминалось, Studio Lab основана на Jupyter Lab, и если вы знакомы с Jupyter Lab, эта среда должна показаться вам знакомой. Слева у нас есть браузер файлов, а справа у нас есть панель запуска, где мы можем запустить блокнот, который мы будем использовать для обучения модели НЛП:

Чтобы научить модель ИИ генерировать текст в определенном стиле, требуется несколько вещей: (1) Предварительно обученная модель, которая уже знает, как генерировать текст (2) Учебный набор, в нашем случае текст Шекспира (3) Учебный сценарий.

Модель

На момент написания статьи Hugging Face предоставляет в своем Model Hub более 3800 моделей, которые можно использовать для генерации текста:

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

Набор данных

Мы снова возвращаемся к веб-сайту Hugging Face, так как они предоставляют набор данных, который идеально подходит для нашей цели, tiny_shakespeare:

Этот набор данных содержит 40 000 строк текста Шекспира и доступен по лицензии MIT.

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

Наконец, нам нужен сценарий обучения. Здесь мы готовим текст, чтобы его можно было использовать для обучения модели ИИ, и где мы проводим фактическое обучение. Обычно это занимает львиную долю нашего времени, но нам снова повезло: Hugging Face предоставляет полностью функциональный сценарий обучения, который мы можем использовать. Все, что нам нужно сделать, это указать скрипту модель и набор данных, которые мы хотим использовать.

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

Начало тренировки

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

Обучение нашей модели занимает около 3-4 минут в Studio Lab:

Модель будет сохранена в папке, которую мы указали в команде обучения (в моем случае она называется shakespeare-clm, но вы можете назвать ее как хотите).

Тестируем нашу модель

На этом этапе мы можем скачать модель и использовать ее где угодно. Но пока мы в Studio Lab, мы должны провести быстрый тест, чтобы увидеть, сработало ли обучение.

Для этого мы сначала воспользуемся моделью НЛП, прежде чем научить ее писать как Шекспир, и сравним ее результаты с нашей моделью Шекспира.

Необученная модель генерации текста

Генерация текста с помощью этих моделей НЛП проста благодаря Hugging Face Pipeline API. Используя этот API, мы можем создать текст с исходной моделью, то есть до того, как мы ее обучили:

Этот текст выглядит как «обычный» текст и не совсем в стиле Шекспира. Давайте попробуем нашу обученную модель Шекспира.

Модель генерации текста Шекспира

Как и выше, мы можем использовать Pipeline API для генерации текста с нашей моделью. Нам просто нужно явно указать API, где он может найти нашу модель:

Текст, созданный с помощью нашей модели, разительно отличается от первой модели. Это больше похоже на текст Шекспира.

Заключение

С помощью одной команды и всего за несколько минут мы научили модель ИИ писать как Шекспир. Полученную модель можно скачать и использовать где угодно.

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