Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек
Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

❤ 204 , Категория: Новости,   ⚑ 13 Фев 2020г

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

AI Dungeon 2

AI Dungeon 2

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

Во-первых, игроки могли выбирать только те варианты, которые им предоставила игра. Я хотел по-настоящему открытый мир, где игроки могли бы писать все, что они хотели. С другой стороны, в длинных игровых сессиях игра слишком быстро и легко превращалась в тарабарщину:

AI Dungeon 2

AI Dungeon 2

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

Однако в ноябре OpenAI выпустил модель GPT-2 с 1.5 миллиардами параметров и тем самым открыл возможность для создания новой версии игры, которая была намного ближе к моей первоначальной идее. Месяц спустя я выпустил AI Dungeon 2, текстовое приключение с действительно открытым миром, построенном на полной модели GPT-2:

AI Dungeon 2

AI Dungeon 2

В игре вы можете делать все, что угодно. Организовать рок-группу из скелетов? Съесть луну? Установить Windows 10? Все это возможно.

Отклик был фантастическим. Мы попали в топ Hacker News, несколько популярных геймеров опубликовали видео-ролики, а в Twitter было полно скриншотов сгенерированных ML приключений. В течение недели у нас было 100,000 игроков и более полумиллиона игр.

Однако неожиданным недостатком этого внезапного всплеска внимания стала стоимость.

Как потратить $50,000 на GCP

Когда я впервые выпустил AI Dungeon 2, игра не была “приложением на сервере”. Это была записная книжка Google Colab, которую пользователи копировали и запускали, загружая модель AI Dungeon и устанавливая интерфейс игры.

Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

Такой подход имел смысл по нескольким причинам. Во-первых, Colab бесплатен, что делает его хорошей платформой для побочного проекта. Во-вторых, Google обеспечивает каждый блокнот Colab бесплатным GPU инстансом, который был необходим для работы модели объемом 5 ГБ.

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

Второй — и более существенной — проблемой стали деньги.

Я выбрал Colab из-за его ценовой эффективности, но я не учел расходы на передачу данных. Для каждого нового блокнота Colab надо было загрузить модель объемом 5 ГБ, а для пользователей, находящихся в разных регионах, каждая загрузка стоила от 0.30 до 0.40 долларов.

Когда ежедневный счет достиг 2,000 долларов в день, BYU Perception, Control, and Cognition Lab (PCCL) достаточно любезна справилась с затратами. Когда стоимость достигла 7,000 долларов, они и тут помогли. После 15,000 долларов они начали нервничать. На 20,000 долларов мы все согласились, что нужно что-то делать. Когда общий счет достиг 30,000 долларов, они приготовились к отключению игры.

К тому времени, когда все было сказано и сделано, стоимость достигла $50,000 долларов за три дня.

Развертывание GPT-2 в масштабе

В течение 12 часов после того, как PCCL закрыл AI Dungeon 2, наше сообщество разработало одноранговое решение для обмена моделью через торрент, что означало, что игра вернулась в строй без дополнительных платежей. (Примечание: это только один из удивительных способов, с помощью которых наше сообщество поддерживает и улучшает AI Dungeon 2. Подробнее об этом позже.)

Это, однако, было явно временной мерой. Идея AI Dungeon 2 заключалась в том, чтобы она была игрой, в которую может играть каждый, а не только те, кто способен запустить ноутбук Colab. Для этого нам нужно было выпустить игру как настоящее приложение.

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

Вопрос в том, как вы строите микросервис из модели машинного обучения?

Как оказалось, есть инструмент с открытым исходным кодом, который автоматизирует эту задачу, называется он Cortex. На высоком уровне Cortex:

  • Оборачивает вашу модель в API и контейниризирует ее.
  • Развертывает вашу модель в облаке, выставляя ваш API как конечную точку для HTTP-запросов.
  • Авто масштабирует ваши экземпляры, чтобы справиться с колебаниями трафика.

Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

Как мы масштабировали AI Dungeon 2 для игры 1 миллиона человек

Вместо развертывания собственной инфраструктуры с использованием Flask, Docker, Kubernetes и множества сервисов AWS, мы смогли консолидировать и автоматизировать нашу инфраструктуру.

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

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

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

После некоторой обработки мы смогли сделать наше развертывание Cortex примерно на 90% более экономичным, чем наша предыдущая установка в Colab. В течение двух недель количество серверов увеличилось до 715, и мы поддержали более 100,000 игроков. Шесть недель спустя мы перешли отметку в 1,000,000 пользователей и сделали 6,000,000 уникальных приключений.

Масштабирование AI Dungeon было общей работой

На каждом этапе развития сообщество было ключом к открытию нашего следующего этапа масштабирования.

Самый очевидный пример — люди, играющие в AI Dungeon 2. Без них не было бы такого масштаба. Однако, помимо наших игроков, нам помогали такие участники сообщества, как:

  • BYCL PCCL оплатил наш первоначальный счет GCP
  • Пользователи, которые вернули AI Dungeon 2 обратно в онлайн через торрент в течение 12 часов после его закрытия
  • Брайдон Батунгбакал, который вызвался создавать приложения для iOS и Android
  • Сторонники на Patreon, которые продолжают финансировать развитие AI Dungeon
  • Проекты с открытым исходным кодом, такие как Cortex, которые работали над поддержкой AI Dungeon
  • По мере того, как мы продолжаем разрабатывать AI Dungeon — и, возможно, большую платформу для других игр, основанных на ML — наше сообщество, без сомнения, будет оставаться движущей силой решений, которые мы принимаем, и нашей способности их выполнять.

Спасибо всем, кто участвовал до сих пор, и следите за новостями.

Источник

Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.


По теме: ( из рубрики Новости )

Оставить отзыв

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*

8 + 11 =

Похожие записи

наверх