OpenAI Five и Dota 2: как 45 000 лет игры в сутки победили чемпионов мира
В апреле 2019 бот от OpenAI обыграл чемпионов мира OG со счётом 2:0. За кулисами — 10 месяцев обучения, 128 000 CPU-ядер и алгоритм, который уместился в десяток страниц.

13 апреля 2019 года команда OpenAI Five выиграла у действующих чемпионов The International — состава OG — две партии в Dota 2 подряд. Через несколько дней бота выпустили в открытый интернет: за четыре дня он сыграл 7 257 матчей против людей и выиграл 99,4% из них. Это был первый случай, когда система на глубоком обучении с подкреплением победила чемпионов мира в киберспортивной дисциплине с полной сложностью — без упрощённых правил и ограничений на героев сверх минимума.
Технический отчёт OpenAI (Berner et al., 2019) описывает, как это было сделано. Главный вывод не в архитектуре нейросети — она подчёркнуто скучная, — а в том, что при достаточном масштабе и стабильном пайплайне обычный PPO способен обучаться месяцами без катастрофического забывания.
Почему Dota 2 — не шахматы и не Go
Разница со StarCraft, шахматами и Go — не количественная, а структурная:
- частичная наблюдаемость: игрок видит только карту вокруг союзников, туман войны скрывает половину информации;
- длинный горизонт: матч длится 45 минут при 30 тиках в секунду, то есть около 80 000 шагов принятия решений;
- непрерывное действие в реальном времени: бот делает выбор каждые 133 мс;
- огромное пространство действий: около 1 837 080 дискретных вариантов на каждом шаге с учётом целей и позиций;
- команда из пяти агентов, каждый управляет своим героем без явного канала связи.
Для сравнения: у го — примерно 10^170 возможных позиций, у Dota 2 количество состояний оценивают на десятки порядков больше просто из-за длины партии и размера состояния (около 16 000 признаков на кадре).
Архитектура: одна LSTM на 159 миллионов параметров
Нейросеть у OpenAI Five одна на всю команду, но веса разделены между героями — каждый агент прогоняет своё наблюдение через ту же модель. В основе — LSTM с 4096 юнитами, поверх которой навешаны головы под разные типы действий: что делать, куда идти, по кому кастовать, какой предмет купить.
Никаких трансформеров, никакого self-play с деревом поиска в духе AlphaZero, никакого имитационного обучения на человеческих реплеях. Просто PPO — Proximal Policy Optimization, стандартный on-policy алгоритм 2017 года — и очень много железа.
«Мы ожидали, что нам понадобятся принципиально новые алгоритмические идеи. Оказалось, достаточно масштаба и терпения: PPO продолжает улучшаться месяцами при условии, что вы не ломаете распределение опыта».
Инфраструктура
Обучение шло около 10 месяцев на кластере из примерно 128 000 CPU-ядер (Google Cloud) и 512 GPU V100. Игровые симуляции гоняли на CPU, обучение — на GPU, между ними стоял очередь-редьюсер, собирающий батчи опыта. Порядок цифр по отчёту:
| Метрика | Значение |
|---|---|
| Опыт за сутки обучения | ~180 лет игрового времени на героя |
| Суммарный опыт за проект | ~45 000 лет игры |
| Размер батча | ~2 млн наблюдений |
| Частота обновлений | каждые ~2 секунды wall-clock |
| Пропускная способность | ~170 000 наблюдений/с |
Хирургия модели вместо обучения с нуля
Главная инженерная находка проекта — техника, которую авторы назвали surgery. За 10 месяцев Dota 2 патчилась несколько раз: менялись герои, предметы, механики. Каждый патч по-хорошему требовал переобучения с нуля, а это ещё 10 месяцев и десятки миллионов долларов на GPU.
Вместо этого команда научилась пересаживать веса из старой сети в новую с изменённой архитектурой так, чтобы поведение бота на первом шаге после операции почти не отличалось от поведения до неё. По сути — инициализация новых слоёв тождественным преобразованием и постепенное вытеснение старых путей. За счёт этого одна и та же модель училась поверх примерно 20 крупных изменений среды.
Награда: почему бот не идёт фармить в лес
Просто «награда за победу» не работает: сигнал приходит раз в 45 минут и почти нулевой на длине эпизода. Разработчики собрали композитную функцию с формирующими наградами (reward shaping ?): за ластхит крипа, за смерть героя врага, за разрушение башни, за золото и опыт, с отдельным коэффициентом на командную и индивидуальную часть.
Балансировка этих коэффициентов — половина работы. Слишком много веса за золото — бот превращается в фармера-эгоиста. Слишком много за победу — не учится ничему конкретному.
Что это доказало и что нет
Проект часто цитируют как «доказательство, что RL масштабируется». Это правда, но с оговорками:
- Игра всё же была урезана: пул из 17 героев вместо 117, запрет на некоторые предметы (иллюзии, вардов-курьер частично), no mirror matches.
- Стоимость обучения — оценки колеблются вокруг нескольких миллионов долларов только за компьют, без зарплат.
- Sample efficiency — катастрофическая: 45 000 лет игры против ~20 лет практики у профессионала.
- Обобщение слабое: бот, обученный на патче 7.20, играл в разы хуже на 7.21 без хирургии.
Тем не менее это была первая демонстрация, что on-policy RL держит длинный горизонт и командную координацию без явных коммуникационных каналов между агентами. Пять сетей с одинаковыми весами и разными наблюдениями договаривались о ганках, разменах и защите башен просто потому, что видели, к чему приводят согласованные действия.
Наследие: куда это ушло
Прямых наследников OpenAI Five в киберспорте почти нет — экономика не сходится. Но техники из проекта расползлись по индустрии:
- тот же PPO лежит в основе RLHF, которым дообучают ChatGPT и Claude;
- идея «долгий self-play + surgery» применяется в robotics-стеке OpenAI (Rubik's Cube manipulation, 2019);
- подход «одна LSTM на всех агентов с shared weights» стал стандартом для multi-agent RL.
DeepMind следом закрыл StarCraft II проектом AlphaStar (январь 2019), но там уже использовался imitation learning на реплеях и league training с популяцией агентов — другой рецепт.
Если резюмировать одной фразой: OpenAI Five показал, что для среды с длинным горизонтом и командной игрой не нужны хитрые алгоритмы — нужен стабильный пайплайн и бюджет на компьют, сопоставимый с бюджетом небольшой AAA-игры. Дальнейшая история больших языковых моделей во многом переняла именно этот урок.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Dota 2 with Large Scale Deep Reinforcement Learning (Berner et al., 2019), OpenAI Five — блог проекта
Частые вопросы
OpenAI Five играл в полную Dota 2?
Почему выбрали Dota 2, а не StarCraft?
Сколько стоило обучение?
Обучали ли модель на человеческих играх?
Почему проект не продолжили после победы над OG?
Можно ли скачать веса и запустить бота?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.