Пошаговое техническое руководство о том, как начать работу с IPU Graphcore в Paperspace на примере нашего преобразователя зрения HuggingFace Optimum.

Paperspace — это ведущая в отрасли платформа MLOP, специализирующаяся на высокопроизводительных вычислениях по запросу. Благодаря новому партнерству с Graphcore любой пользователь Paperspace теперь может быстро получить доступ к технологии Intelligent Processing Unit (IPU) за считанные секунды в веб-браузере через Gradient Notebooks, веб-среду Jupyter IDE.

Этот пост в блоге проведет вас через несколько простых шагов, чтобы начать работу с IPU Graphcore в Paperspace. Мы покажем вам, как обучить вашу первую модель, на примере одного из наших ноутбуков HuggingFace Optimum Vision Transformer (ViT). Мы также познакомим вас с другими функциями записных книжек Paperspace Gradient Notebook, чтобы вы могли запустить больше руководств и начать создавать свои собственные модели для IPU.

Чтобы узнать больше о партнерстве Graphcore с Paperspace, вы можете ознакомиться с нашим объявлением здесь или посетить специальную страницу Paperspace для IPU здесь.

Подписываясь

Во-первых, вам нужно убедиться, что вы создали учетную запись в Paperspace. Это процесс одним щелчком мыши, который дает вам мгновенный доступ к предварительно настроенным средам выполнения, оптимизированным для IPU, и вам не нужно беспокоиться о настройке среды разработки. Теперь у вас будет доступ к неограниченному количеству шестичасовых сеансов с Graphcore IPU-POD16 Classic, который состоит из 4 систем IPU-M2000, что в общей сложности составляет 16 микросхем IPU.

IPU — это совершенно новый тип массивно-параллельного процессора, специально разработанный для приложений искусственного интеллекта и машинного обучения. Каждый IPU имеет 1472 мощных процессорных ядра, которые выполняют почти 9000 независимых параллельных программных потоков. Система IPU-POD16 Classic, доступная на Paperspace, дает вам доступ к 4 петафлопам вычислительных ресурсов ИИ, что делает ее самым мощным бесплатным оборудованием для ИИ, доступным на платформе.

Увеличение времени выполнения вашего ноутбука

После входа в систему нажмите кнопку Создать проект в рабочей области. Проект позволяет вам получить доступ к различным функциям MLOps и, что наиболее важно, позволяет вам раскрутить Gradient Notebook. Среда IDE обрабатывает подготовку виртуальной машины и настройку контейнера Docker, SDK Poplar и репозитория кода.

В представлении создания блокнота вы увидите возможность запустить одну из нескольких сред выполнения, оптимизированных для IPU, таких как Hugging Face Optimum, PyTorch и TensorFlow 2 IPU Experience. Запуск блокнота загружает предварительно настроенный контейнер и блокноты, а также заботится обо всем, что находится под капотом, поэтому вы можете сразу перейти к запуску кода.

В этом случае мы выберем Hugging Face во время выполнения IPU. Эта среда выполнения использует контейнер PyTorch-Jupyter из официального Graphcore Docker Hub, гарантируя, что библиотеки Poplar SDK и PyTorch предварительно установлены и совместимы с системой IPU в Paperspace. Среда выполнения также загружает тщательно подобранный репозиторий блокнотов и заботится о различных конфигурациях среды и данных, чтобы оптимизировать простоту использования и позволить вам сосредоточиться на изучении IPU и разработке моделей.

Запуск виртуальной машины займет несколько минут. Когда это будет сделано, разверните папку get-started и откройте пошаговую учебную тетрадь ViT. Вы можете шаг за шагом следовать записной книжке, поскольку она проведет вас через обработку данных, обучение и оценку модели ViT. Мы расскажем о некоторых основных моментах того, что вы можете делать с этой записной книжкой в ​​Gradient.

Блокнот, который мы используем в качестве демонстрации, покажет вам, как предварительно обработать большой, широко используемый набор данных рентгенографии грудной клетки и запустить модель ViT в HuggingFace Optimum на этом наборе данных. Это хороший пример рабочего процесса, с которым вы обычно сталкиваетесь при разработке собственных моделей с использованием IPU и Hugging Face Optimum. Для получения дополнительной информации об этой конкретной реализации ViT (и моделях ViT в целом) ознакомьтесь с этим подробным описанием Запуск ViT в Hugging Face Optimum Graphcore.

Чтобы запустить ViT Notebook, вам не нужно загружать набор данных рентгенографии грудной клетки: мы сделали его доступным в /graphcore/chest-xray-nihcc вместе с другими полезными наборами данных и предварительно скомпилированными исполняемыми файлами, используемыми в средах выполнения на /graphcore. Папка данных доступна во всех средах выполнения IPU.

Paperspace Gradient — это мощная платформа MLOps, позволяющая ускорить жизненный цикл разработки и развертывания модели. Одной из его наиболее важных функций является хранилище данных. При запуске вашего кода, который требует создания или загрузки больших данных, мы рекомендуем хранить его в папке /tmp, чтобы не заполнять ограничения на локальное хранилище данных.

Запуск IPU в Gradient дает вам начальные 10 ГБ хранилища данных на бесплатном уровне (на 5 ГБ больше, чем в других средах выполнения) с возможностью получить больше бесплатного хранилища. Кроме того, пользователям платных планов Gradient предоставляется ряд других вариантов хранения. Если вам нужно постоянное и совместно используемое хранилище, вы можете использовать высокопроизводительное хранилище данных с помощью наборов данных Paperspace, которое позволяет хранить данные и получать к ним доступ во всех средах выполнения вашего проекта.

Обучение модели

Для обучения модели ViT на IPU нам нужно использовать IPUTrainer, который принимает те же аргументы, что и исходный Transformer Trainer, в тандеме с объектом IPUConfig, который определяет поведение при компиляции и выполнении на IPU. Работа с записной книжкой будет включать в себя загрузку IPUConfig, доступного через Graphcore/vit-base-ipu, использование предварительно обученной карты модели vit checkpoints, найденной в google/vit-base-patch16-224-in21k, и ее точную настройку с помощью набора данных рентгена грудной клетки. Это позволяет проводить обучение на IPU с использованием оптимизированных конфигураций времени выполнения.

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

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

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

Мы внедрили пользовательскую метрику для области под кривой ROC (рабочая характеристика приемника) (AUC_ROC). Это часто используемый показатель производительности для задач классификации с несколькими метками, поскольку он нечувствителен к дисбалансу классов и легко интерпретируется. После завершения обучения и оценки вы можете увидеть, что оценка AUC_ROC для проверки по 3 эпохам составляет 0,7811 для этой задачи классификации с несколькими метками из 14 категорий.

Раскрутка сред выполнения с расширенными параметрами

Теперь, когда вы смогли запустить свой первый ноутбук в Paperspace Gradient, вы можете нажать Дополнительные параметры, чтобы просмотреть предварительно загруженную конфигурацию и изменить ее для собственного использования.

Глядя на среду выполнения Hugging Face Optimum, вы можете увидеть в расширенных параметрах, что она настроена на загрузку репозитория gradient-ai/Graphcore-Huggingface и запуск его с док-контейнером PyTorch из Graphcore Docker Hub, содержащим все необходимые библиотеки и SDK Poplar.

Вы можете легко изменить дополнительные параметры среды выполнения, чтобы загрузить собственный репозиторий и запустить его в другой комбинации образов Docker. В этом примере показано, как можно изменить поле репозитория, чтобы использовать репозиторий Примеры приложений Graphcore и выбрать образ TensorFlow 1 из официальных выпусков Graphcore Docker Hub.

Обратите внимание, что при настройке дополнительных параметров вручную вам необходимо сопоставить ОС хост-сервера IPU (в данном случае AMD) с правильными тегами ОС Docker (tf1-amd).

Это должно позволить вам запускать любой код TensorFlow 1 из репозитория примеров приложений Graphcore в этой IDE Notebook.

Расширенные задания CLI

Хотя Gradient Notebooks ориентирован на предоставление интерфейса в стиле ноутбука, это полноценная IDE с доступом к терминалу. Эта мощная функция позволяет запускать остальные сценарии, доступные в примерах и руководствах Graphcore.

Щелкните значок терминала, чтобы запустить интерфейс оболочки. Оттуда вы можете напечатать, чтобы воспроизвести один из опубликованных тестов Graphcore или запустить наши учебные пособия.

Что дальше?

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