Облачная платформа Google (GCP) широко известна своими великолепными возможностями и продуктами в области искусственного интеллекта и машинного обучения. Фактически, доступно множество материалов о том, как вы можете обучать и развертывать модели TensorFlow на GCP. Однако GCP предназначен не только для людей, использующих TensorFlow, но и имеет хорошую поддержку для других фреймворков. В этом посте я покажу, как использовать другой очень популярный фреймворк машинного обучения PyTorch в Обучение платформе AI. Я покажу, как настроить современную модель классификации последовательностей с помощью PyTorch и библиотеки преобразователей. Мы будем использовать предварительно обученную RoBERTa в качестве модели преобразователя для этой задачи, которую мы настроим для выполнения классификации последовательностей.

RoBERTa относится к семейству массивных языковых моделей на основе преобразователей, которые стали очень популярными в обработке естественного языка с момента выпуска BERT, разработанного Google. RoBERTa была разработана исследователями Вашингтонского университета и Facebook AI. По сути, это модель BERT, предварительно обученная с улучшенным подходом к обучению. Подробности о RoBERTa смотрите здесь.

В этом посте рассматриваются следующие темы:

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

Вы можете найти весь код на GitHub.

Структура проекта ML

Начнем с содержания нашего проекта машинного обучения.

├── trainer/
│   ├── __init__.py
│   ├── experiment.py
│   ├── inputs.py
│   ├── model.py
│   └── task.py
├── scripts/
│   └── train-gcp.sh
├── config.yaml
└── setup.py

Каталог trainer содержит все файлы Python, необходимые для обучения модели. Содержимое этого каталога будет упаковано и отправлено на платформу AI. Вы можете найти более подробную информацию и лучшие практики о том, как упаковать свое обучающее приложение здесь. Мы рассмотрим содержимое отдельных файлов позже в этом посте.

Каталог scripts содержит наши обучающие сценарии, которые настроят необходимые переменные среды и отправят задание в AI Platform Training.

config.yaml содержит конфигурацию вычислительного экземпляра, используемого для обучения модели. Наконец, setup.py содержит подробную информацию о нашем пакете python и необходимых зависимостях. AI Platform Training будет использовать сведения из этого файла для установки любых недостающих зависимостей перед началом обучения.

Код PyTorch для обучения модели

Давайте посмотрим на содержимое нашего пакета python. Первый файл __init__.py - это просто пустой файл. Он должен быть на месте и находиться в каждом подкаталоге. Файлы инициализации будут использоваться Python Setuptools для идентификации каталогов с кодом для упаковки. Можно оставить этот файл пустым.

Остальные файлы содержат разные части нашего программного обеспечения PyTorch. task.py - это наш главный файл, он будет вызываться AI Platform Training. Он извлекает аргументы командной строки для нашей обучающей задачи и передает их функции run в эксперименте.py.

Прежде чем мы рассмотрим основные процедуры обучения и оценки, давайте посмотрим на inputs.py и model.py, которые определяют наборы данных для задачи и модели преобразователя соответственно. Во-первых, мы используем библиотеку datasets для получения данных для эксперимента. Мы используем набор данных классификации последовательностей MultiNLI для этого эксперимента. Файл inputs.py содержит код для извлечения, разделения и предварительной обработки данных. NLIDataset предоставляет объект PyTorch Dataset для данных обучения, разработки и тестирования для нашей задачи.

Функция load_data извлекает данные с помощью библиотеки наборов данных, разделяет данные на наборы для обучения, разработки и тестирования, а затем токенизирует ввод с помощью RobertaTokenizer. и создает объекты PyTorch DataLoader для различных наборов.

Функция save_model сохранит обученную модель после ее обучения и загрузит ее в Google Cloud Storage.

Файл model.py содержит код для модели трансформатора RoBERTa. Функция __init__ инициализирует модуль и определяет используемую модель преобразователя. Функция forward будет вызываться PyTorch во время выполнения кода с использованием входного пакета токенизированных предложений вместе с соответствующими метками. Функция create - это оболочка, которая используется для инициализации модели и оптимизатора во время выполнения.

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

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

Наконец, функция запустить вызывает функции запустить и оценить и сохраняет настроенную модель в Google Cloud Storage после завершения обучения.

Запуск и мониторинг учебной работы

Когда у нас есть код Python для нашей учебной работы, нам нужно подготовить его для обучения платформе AI. Для этого требуются три важных файла. Во-первых, setup.py содержит информацию о зависимостях нашего пакета python, а также такие метаданные, как имя и версия пакета.

Файл config.yaml содержит информацию о вычислительном экземпляре, используемом для обучения модели. Для этой работы нам понадобится графический процессор NVIDIA V100, поскольку он обеспечивает повышенную скорость обучения и больший объем памяти графического процессора по сравнению с более дешевыми графическими процессорами K80. См. Этот замечательный пост в блоге от Google о выборе графического процессора.

Наконец, каталог scripts содержит сценарий train-gcp.sh, который включает необходимые переменные среды, а также команду gcloud для отправки задания по обучению AI Platform. Мы будем обучать модель для 2 эпох, используя размер пакета из 16. Мы также указываем местоположение корзины облачного хранилища, где мы хотим, чтобы платформа AI сохраняла настроенную модель.

Чтобы запустить код, убедитесь, что вы находитесь в корне каталога проекта, и выполните:

source ./scripts/train-cloud.sh

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

Вы также можете просмотреть использование графического процессора и память на странице задания AI Platform.

Заключение

На этом этот пост завершен. Вы можете найти весь код на GitHub. Надеюсь, вам понравилась демонстрация. Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы.

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