DS в реальном мире

Обслуживание GPT-2 в рабочей среде на Google Cloud Platform

Путешествие по CloudOps

Вы пробовали выключить и снова включить его?

Наша миссия в Deepdesk - разгрузить контакт-центры с помощью ИИ. Мы предоставляем рекомендации по ответам в реальном времени (подумайте о Smart Compose) и автоматизацию повторяющихся диалогов.

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

До сих пор это сработало для нас достаточно хорошо. Мы видим сокращение набора текста (он же время, он же деньги) в среднем с 8% до 15% и даже до 30% для некоторых агентов контакт-центра.

Ограничения

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

В шокирующем открытии ...

В прошлом месяце мы изучали модели Transformer, могут ли они повысить ценность нашего текущего подхода. Трудно не быть пораженным историей Единорога GPT2, верно? И обещание моделей генерации языка на самом деле кажется нам идеально подходящим для нас - предлагая варианты завершения текста где угодно в разговоре.

Однако за это приходится платить. Модели-трансформеры огромны, и для вывода (получения прогнозов модели) в процессе производства действительно требуется использование графических процессоров.

После месяца экспериментов у нас была доработанная модель GPT-2, которую стоило опробовать в производстве. Надеюсь, мы сможем поделиться своими знаниями в области науки о данных в отдельном блоге. Здесь я хочу поделиться нашим опытом внедрения модели в производство.

Heroku

До сих пор мы успешно запускали нашу платформу в контейнере Docker на Heroku. Могу порекомендовать его любой команде с небольшой мощностью DevOps. Мы обслуживаем 50 миллионов запросов в месяц, и это было очень просто. Несмотря на то, что Heroku скоро станет дорогим, это далеко не стоимость дополнительных инженеров DevOps.

Однако проблема при использовании моделей машинного обучения в производстве - это размер изображения. Автомасштабирование будет работать хаотично, потому что для запуска нового экземпляра требуется несколько минут. И без дополнительных мер запросы будут перенаправляться на экземпляры, которые все еще загружаются. Это то, с чем мы много боролись, и в основном это требует большего контроля над параметрами автомасштабирования и проверки работоспособности. И то, и другое Heroku не предлагает. До сих пор нам удавалось управлять этим, но с нашим Docker-образом GPT-2, имеющим колоссальные 6 ГБ и более, теперь это настоящая проблема.

Еще одно требование для обслуживания GPT - это настоящий блокировщик: нам нужны графические процессоры. Ранние тесты показали, что вывод только для ЦП может занять секунды, тогда как использование графического процессора снизило его в 10 раз. Heroku в настоящее время не предлагает графические процессоры, поэтому нам пришлось искать в другом месте. Хотя есть многообещающие платформы, такие как FloydHub, мы уже использовали Google Cloud Platform (GCP) для обучения наших существующих моделей, поэтому имело смысл изучить возможности там.

Облачная платформа Google

K8S

После исключения решений без GPU и предпочтения работы с контейнерами Docker мы выбрали Kubernetes. Вот краткое изложение стека:

  • Кластер GKE из n1-highmem-2 машин с одним графическим процессором Tesla T4
  • Сценарий демона для установки драйверов Nvidia / CUDA
  • Базовый образ Nvidia Pytorch Docker, готов к работе с графическим процессором
  • Микросервис Simple Flask, обслуживающий модель
  • Модель на основе GPT-2 HuggingFace, адаптированная под наши конкретные задачи.
  • Cloud Build для создания производственного образа
  • Облачные конечные точки как прокси, обработка SSL и аутентификация

Резюме

Попасть в мир Трансформеров довольно сложно. Однако благодаря работе Open AI и HuggingFace доступно множество моделей и примеров скриптов. Требования к оборудованию для обслуживания моделей Transformer напомнили мне о первых игровых годах, когда вы потратили много времени на установку правильных драйверов Nvidia, чтобы ваша GeForce заработала. Также здесь доступно множество готовых решений, таких как GCP Deep Learning VM или образы Nvidia Docker. Kubernetes не для слабонервных, и вы должны ожидать, что хотя бы один член вашей команды потратит много времени, если не полностью, на настройку конфигурации и дальнейшее обслуживание.

Особая благодарность Тому Хастьярджанто за обзор GCP.