[UPD]
Сегодня вечером, 22 августа, перед началом очередного дня плей-офф The International, в рамках шоу-активностей пройдет первый показательный матч между профессиональными игроками и ботом OpenAI Five. Информация о матчах появилась на официальном сайте Dota 2 в разделе с расписанием игр плей-офф The International. Всего OpenAI сыграет три матча за три дня с про-игроками. Первая игра состоится примерно в 18:30-19:00 по МСК (точное время пока не указано). Проследить за противостоянием ботов и профессионалов можно на официальной русскоязычной и англоязычной трансляции на Twitch.
Знаменательно это событие тем, что год назад бот уже «расправился» Даниилом Ишутиным в противостоянии 1x1 solo mid mirror SF, а несколько недель назад одолел «сборную солянку» из комментаторов и бывших про-игроков.
На этот раз разработке компании, которая спонсируется Илоном Маском и другими видными бизнесменами из IT-сектора предстоит встретиться с более серьезным противником: The International ежегодно собирает лучшие команды мира, так что ботам будет непросто. Пока команда разработчиков не сообщала, будут ли действовать все старые ограничения по пикам и механикам, которые были актуальны в игре против людей в начале месяца, но о них стоит напомнить.
- пул из 18 героев в режиме Random Draft (Axe, Crystal Maiden, Death Prophet, Earthshaker, Gyrocopter, Lich, Lion, Necrophos, Queen of Pain, Razor, Riki, Shadow Fiend, Slark, Sniper, Sven, Tidehunter, Viper, или Witch Doctor);
- без Divine Rapier, Bottle;
- без подконтрольных существ и иллюзий;
- матч с пятью курьерами (ими нельзя скаутить и танковать);
- без использования скана.
В комментариях к нашей прошлой публикации на эту тему разгорелось множество споров о методах обучения нейросетей. На этот раз мы принесли немного наглядных материалов о том, как работает бот OpenAI и как это выглядит с точки зрения людей.
Разработчики заявляли, что благодаря серьезным вычислительным мощностям, огромному количеству записей и возможности запускать обучение в несколько потоков, ежедневно OpenAI имитировал до 180 лет непрерывной игры в Dota 2. Очевидно, что обучаемость этого ИИ на многие порядки ниже, даже чем у не самых «умных» животных, не говоря о собаках или высших приматах, к которым относится и человек.
Для обучения OpenAI команда использовала собственную разработку под названием Gym (репозиторий на github, официальная документация). Эта «качалка» совместима с любой публичной библиотекой, например TensorFlow или Theano. В обучении нейросетей в рамках Gym используется классическая петля «агент-среда»:
Разработчики заявляют, что любой желающий может использовать Gym для обучения своей нейросети игре в классические тайтлы для Atari 2600 или другие относительно простые для понимания проекты. Очевидно, что скорость обучения напрямую зависит от объема задействованных в этом ресурсов. В качестве примера разработчики OpenAI научили нейросеть играть в Montezuma’s Revenge.
Но наибольший для нас интерес представляют второй и четвертый этапы — действие и анализ результата (награды за действие). А в контексте Dota 2 уровень вариативности просто зашкаливает, а изначально оцененные ботом действия как «правильные» на длинной дистанции могут привести к проигрышу.
Как команда OpenAI учила ИИ играть в Dota 2 с точки зрения оборудования
К вопросу обучения OpenAI игре в Dota 2 команда разработки подошла более чем серьезно. Полный официальный репорт в блоге проекта вы можете прочитать тут, мы же приведем основные выдержки по технической части и реализации без маркетинга и прочих реверансов.
Наибольший интерес у комментаторов прошлой публикации вызывала мощность, потребляемая нейросетью OpenAI для обучения. Очевидно, что парой Ryzen дело там обойтись не могло, особенно в контексте имитации 180 лет игры в реальные сутки. При этом бот для Dota 2 — это вам не бот для шутера уровня Quake, что очень четко подметил пользователь yea в ответ одному из скептиков:
Мне кажется, вы просто слабо себе представляете размеры тактического простора в доте, потому что слабо знакомы с самой игрой. Нет никаких шансов сделать ботов без привлечения нейросетей, ограничиваясь хоть сколько-нибудь вменяемыми вычислительными ресурсами. Серьезно. Это не Quake, где можно быть полным дубом в плане тактики, компенсируя это нечеловечески быстрыми выстрелами в репу из рельсы. Идеальные в плане реакции и механических скиллов боты, не умеющие играть впятером и не «чувствующие карту», обречены против сколько-нибудь умелых мясных игроков.
Кроме того, дота — игра с неполной информацией, и это кардинально усложняет задачу. Задача «что делать, когда я вижу врага» намного проще, чем задача «что делать, когда врагов не видно» — не только для машин, но и для людей.
Это четко понимали и разработчики OpenAI, так что для обучения ботов были задействованы тысячи виртуальных машин одновременно. Конкретно такие цифры приводит официальный блог проекта для обучения бота 1х1 Solo Mid, способного с некоторыми ограничения победить в миде Даниила Ишутина, и для обучения полноценной команды для игры 5х5:
Это не десятичная запятая. Для обучения OpenAI в режиме 5х5 постоянно используется 128 тысяч процессорных ядер Google Cloud. Но и это еще не вся мякотка. Так как в обучении бота OpenAI используется машинное зрение (о котором мы поговорим чуть позже), в этой чудовищной конфигурации фигурирует еще 256 GPU P100 NVIDIA (Tesla accelerator).
Согласно официальной брошюре NVIDIA, P100 обладает следующими характеристиками:
Официальная стоимость одной P100 Tesla 12 GB PCI-E составляет около 5800$, Tesla P100 SXM2 16GB стартует от 9400$. В OpenAI используется как раз старшая модель SXM2. Нужны видеокарты не для отрисовки «графики» на виртуальных машинах, а обработки и вычисления данных, которые постоянно поступают из всех запущенных партий. Для обработки этого потока команде пришлось развернуть целую систему нод, в рамках которой и работают P100 Tesla. Видеокарты обрабатывают и вычисляют полученные данные, чтобы потом выдать усредненный по всем партиям результат и сравнить его с прошлыми показателями OpenAI.
Подобные мощности позволяют имитировать нейросети около 60 партий в минуту, за каждую из которых нейросеть анализирует около 1,04 млн циклов агент-среда, упоминаемых ранее.
Как OpenAI видит игру
Деньги — пыль, если они у вас конечно же есть. Даже самые приблизительные прикидки стоимости одного дня обучения OpenAI вызывают легкий шок, а выделяемого на серверах Google Cloud тепла хватит для отопления небольшого города. Но намного интереснее, как OpenAI «видит» игру.
Понятно, что графическая отрисовка ботам не нужна, но такие мощности используются не просто так. Бот в своих действиях опирается на стандартный API Valve для ботов, через который нейросеть получает поток данных об окружающем пространстве. API нужен для того, чтобы полученные данные прогонять через однослойную LSTM-сеть из 1024 блоков и получать, как итог, краткосрочные решения, которые согласуются с долгосрочными стратегиями, которыми располагает нейросеть.
LSTM-сети определяют приоритет задач для бота «здесь и сейчас», а в согласовании с долгосрочной моделью поведения нейросети выбирается наиболее выгодное действие. Например, боты охотно концентрируются на ласт-хите крипов для заработка золота и опыта, что согласуется с моделью получения долгосрочной выгоды в виде предметов и последующего преимущества по игре.
По информации от разработчиков, все партии происходят с отрисовкой событий на карте с частотой в 30 FPS. Нейросеть OpenAI постоянно анализирует каждый кадр через LSTM, на основе результата которого принимает дальнейшие решения. При этом бот имеет свои приоритеты: самому тщательному анализу подвергаются все возможные взаимодействия с окружением через специально выделенные области «зрения» бота — это квадраты 800х800, поделенные на 64 ячейки 100х100 (за размер взяты значения внутриигровой дальности действия и перемещения, а размер квадрата составляет 8х8). Вот как бот частично «видит» игру на одном конкретном кадре:
Полный конструктор с возможность переключения действий, оценки размера квадратов и прочими возможностями «покрутить настройки» доступен в официальном блоге разработчиков в разделе Model structure
А вот так выглядит визуализация работы LSTM-сети в плане прогнозирования игровых событий в режиме реального времени:
Кроме LSTM и оценки ситуации «здесь и сейчас» бот OpenAI постоянно пользуется сеткой «прогнозирования» и расстановки собственных приоритетов. Вот так это выглядит для людей:
Зеленый квадрат — область наивысшего приоритета и текущего действия бота (атака, перемещение и так далее), Светло-зеленый квадрат обладает меньшим приоритетом, но бот в любой момент может переключиться на этот сектор. Еще два серых квадрата — зоны потенциальной активности, если ничего не изменится.
Посмотреть, как бот «видит» игру и принимает решения на основе этих четырех зон можно увидеть на видеозаписи ниже:
Стоит отметить, что области приоритетов бота не всегда находятся рядом с моделью персонажа. При перетяжке по карте все четыре квадрата легко смещаются за несколько экранов от текущего положения бота, то есть OpenAI анализирует одновременно все игровое пространство на доступность и целесообразность каких-либо действий, а не только один экран.
OpenAI постоянно играет сам с собой. При этом 80% ботов обучаются, а 20% используют уже отработанные тактики и стратегии. Такой подход позволяет нейросети учиться на собственных ошибках, находя уязвимые паттерны в собственно поведении и одновременно закреплять удачные модели поведения.
Уже завтра. Люди-профессионалы против машины
Вместо итога стоит вернуться к теме завтрашнего противостояния между профессиональными игроками и OpenAI.
Пока неизвестны детали, однако с уверенностью можно сказать, что нейросети придется несладко. В отличие от прошлых своих противников, OpenAI столкнется с лучшими из лучших, а возможность маневрирования и командного взаимодействия в рамках шоу-матча позволит людям полностью раскрыть свой потенциал. Формат Solo Mid 1x1, конечно, крайне зрелищный, однако не раскрывает всей сути игры и крайне нетерпим к микро-ошибкам, которые люди зачастую допускают.
Весь вопрос в том, насколько серьезно к этому противостоянию отнесутся профессионалы. При появлении какой-то дополнительной информации публикация будет обновляться.
Автор: Crossover