Создавайте, развертывайте и прогнозируйте

Код этого примера доступен на Github.

Цели

Мир машинного обучения огромен. Есть много разных инструментов, которые можно объединить, если вы хотите максимизировать ценность. Переход от исследования к производству не является тривиальным. Есть много вещей, которые нужно учитывать, и много решений, которые нужно принять. Я часто натыкаюсь на клиентов, которые используют разные фреймворки, такие как Sci-kit, Pytorch и Tensorflow. Некоторые клиенты используют несколько фреймворков, а некоторые даже хотят обслуживать устаревшие модели Python.

В этом посте мы рассмотрим все шаги, необходимые для создания и развертывания контейнеров для «моделей» продукта AI Platform. Этот пост нацелен на то, чтобы предоставить отправную точку для тех, кто имеет базовую модель, кто хочет настроить не зависящий от структуры уровень обслуживания, который защищен, масштабируется и поддерживается соглашением об уровне обслуживания. Мы будем использовать возможности AI Platform для обертывания любого кода и его обслуживания.

Нецелевые

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

Зачем использовать конечные точки платформы AI?

Организация должна сосредоточиться на своей основной деятельности. Редко бывает, что создание надежного масштабируемого уровня обслуживания является бизнес-целью. Вы можете спроектировать и построить уровень обслуживания, используя настраиваемые компоненты, такие как балансировщик нагрузки и группа экземпляров виртуальных машин. Платформа искусственного интеллекта GCP позволяет нам ускорить разработку за счет использования дополнительных услуг, таких как подготовка данных, уровень метаданных, хранилище функций и т. Д. Это может значительно сократить цикл развертывания и накладные расходы на обслуживание.

Преимущества

  • Фреймворк агностик
  • Инфраструктура
  • Графические процессоры
  • Масштабируемость
  • Безопасный
  • SLA
  • Запросы в реальном времени / пакетные запросы
  • Легкость развития
  • Время развертывания
  • gRPC

Архитектура

Работа с кастомными контейнерами

Наша конечная цель - иметь сервис, доступный за конечной точкой, который мы можем использовать для выполнения запросов в реальном времени и пакетных запросов. Несмотря на то, что платформа AI изначально способна обслуживать такие фреймворки, как Tensorflow, Pytorch и Sci-kit, контейнеры де-факто стали основным элементом на каждом этапе конвейера MLops. Вы можете выбрать из широкого списка готовых изображений, доступных на платформе AI.

Подготовка контейнера

Чтобы мы могли работать со слоем обслуживания платформы AI, мы должны загрузить контейнер в реестр артефактов, размещенный в том же проекте. Убедитесь, что у используемой учетной записи службы есть соответствующие разрешения на чтение контейнера (подробнее о учетных записях служб). При создании контейнера нам необходимо следовать требованиям платформы AI.

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

Создайте файл Dockerfile:

И отсюда мы видим, что нам нужно добавить файл requirements.txt, содержащий одну строку с зависимостью от колбы:

И app.py, который можно заменить любым другим кодом, например, обслуживающим модель Tensorflow:

Шаги

Теперь воспользуемся контейнером. Мы выполним шаги, используя управляемую службу ноутбуков на платформе AI.

  1. Создайте докер:

2. Переместите окно настройки в Репозиторий артефактов:

3. Создайте модель:

4. Загрузите новую версию в модель из шага №3:

5. Установите версию по умолчанию:

6. Протестируйте конечную точку:

7. Промыть и повторить ~~~~~

Заключение

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

Следующие шаги

Следуйте этому руководству по обслуживанию моделей pytorch.