Вселенная (Universe)
Мы выпускаем Universe — программную платформу для измерения и тренировки общей искусственной интеллекта ИИ на базе доступных по всему миру игр, веб-сайтов и других приложений.

Universe позволяет агенту искусственного интеллекта пользоваться компьютером так же, как это делает человек: глядя на пиксели на экране и управляя виртуальной клавиатурой и мышью. Мы должны обучать системы ИИ на всем спектре задач, которые они должны решать, а Universe позволяет обучать единого агента любой задаче, которую человек может выполнить на компьютере.
В апреле мы запустили Gym, инструментарий для разработки и сравнения алгоритмов обучения с подкреплением (RL). С помощью Universe любую программу можно превратить в среду Gym. Universe работает, автоматически запуская программу за удаленным рабочим столом VNC — ей не нужен специальный доступ к внутренним компонентам программы, исходному коду или API ботов.
Сегодняшний релиз включает тысячу сред, включая Flash-игры, задачи в браузере, а также такие игры, как slither.io и GTA V. Сотни из них готовы к обучению с подкреплением, и почти каждую можно свободно запустить с помощью библиотеки Python universe следующим образом:
Python
1import gym2import universe # register Universe environments into Gym3
4env = gym.make('flashgames.DuskDrive-v0') # any Universe environment ID here5observation_n = env.reset()6
7while True:8 # agent which presses the Up arrow 60 times per second9 action_n = [[('KeyEvent', 'ArrowUp', True)] for _ in observation_n]10 observation_n, reward_n, done_n, info = env.step(action_n)11 env.render()
Приведенный выше пример кода запустит игру Dusk Drive Flash в исполнении вашего ИИ. Ваш ИИ будет получать кадры, подобные приведенному выше, 60 раз в секунду. Вам потребуются установленные Docker и universe.
Наша цель — разработать единого агента ИИ, способного гибко использовать свой прошлый опыт в средах Universe для быстрого освоения незнакомых и сложных условий, что станет серьезным шагом на пути к общему искусственному интеллекту. Существует множество способов помочь: предоставить нам разрешение на использование ваших игр, обучать агентов на задачах Universe, (в скором времени) интегрировать новые игры или (в скором времени) играть в игры.
При поддержке EA, Microsoft Studios, Valve, Wolfram и многих других мы уже получили разрешение на свободный доступ агентов Universe AI к играм и приложениям, таким как Portal, Fable Anniversary, World of Goo, RimWorld, Slime Rancher, Shovel Knight, SpaceChem, Wing Commander III, Command & Conquer: Red Alert 2, Syndicate, Magic Carpet, Mirror«s Edge, Sid Meier«s Alpha Centauri и Wolfram Mathematica. Мы с нетерпением ждем интеграции этих и многих других проектов.

Предыстория
За последние несколько лет в области искусственного интеллекта наблюдался стремительный прогресс. Компьютеры теперь могут видеть, слышать и переводить языки с беспрецедентной точностью. Они также учатся генерировать изображения, звук и текст. Система обучения с подкреплением AlphaGo победила чемпиона мира по игре го. Однако, несмотря на все эти успехи, создаваемые нами системы по-прежнему относятся к категории «узкого ИИ» — они могут достигать сверхчеловеческой производительности в конкретной области, но не способны сделать ничего разумного за ее пределами. Например, AlphaGo легко победит вас в го, но вы не сможете объяснить ей правила другой настольной игры и ожидать, что она сыграет с вами.
Системы с возможностями универсального решения проблем (нечто вроде человеческого здравого смысла, позволяющего агенту быстро решать новую сложную задачу) по-прежнему недоступны. Очевидная проблема заключается в том, что наши агенты не переносят свой опыт при переходе к новым задачам. В рамках стандартного режима обучения мы инициализируем агентов с нуля и позволяем им хаотично совершать движения на протяжении десятков миллионов попыток, пока они учатся повторять действия, которые случайно приводят к полезным результатам. Если мы хотим продвинуться в создании агентов общего искусственного интеллекта, мы должны позволить им приобретать опыт в самом широком репертуаре задач, чтобы они могли развивать знания о мире и стратегии решения проблем, которые можно будет эффективно повторно использовать в новой задаче.

Инфраструктура Universe
Universe предоставляет широкий спектр сред через единый интерфейс: агент управляет удаленным рабочим столом, наблюдая за пикселями экрана и генерируя команды клавиатуры и мыши. Среда предоставляет VNC-сервер, а библиотека universe превращает агента в VNC-клиент.

Наша проектная цель для universe заключалась в обеспечении работы одного процесса Python, управляющего 20 средами параллельно при 60 кадрах в секунду. Размер каждого буфера экрана составляет 1024×768, поэтому простое чтение каждого кадра из внешнего процесса требовало бы пропускной способности памяти 3 ГБ/с. Мы написали пакетный VNC-клиент на Go, который загружается как разделяемая библиотека в Python и инкрементно обновляет пару буферов для каждой среды. Экспериментируя с различными комбинациями VNC-серверов, кодировок и недокументированных опций протокола, мы теперь регулярно запускаем десятки сред со скоростью 60 кадров в секунду и задержкой 100 мс — практически полностью из-за кодирования на стороне сервера.
Вот некоторые важные свойства нашей текущей реализации:
Универсальность. Агент может использовать этот интерфейс (изначально разработанный для людей) для взаимодействия с любой существующей компьютерной программой без использования эмулятора или доступа к внутренней структуре программы. Например, он может играть в любую компьютерную игру, работать с терминалом, просматривать веб-страницы, проектировать здания в CAD-программах, работать с программами для редактирования фото или редактировать электронные таблицы.
Знакомо людям. Поскольку люди уже хорошо знакомы с интерфейсом пикселей/клавиатуры/мыши, они могут легко управлять любой из наших сред. Мы можем использовать показатели производительности человека в качестве надежного базового уровня и записывать демонстрации действий человека, просто сохраняя VNC-трафик. Мы обнаружили, что демонстрации чрезвычайно полезны для инициализации агентов разумными стратегиями с помощью клонирования поведения (т. е. использования обучения с учителем для имитации действий человека) перед переходом к обучению с подкреплением для оптимизации заданной функции вознаграждения.
VNC как стандарт. Множество реализаций VNC доступны в интернете, а некоторые по умолчанию входят в состав самых распространенных операционных систем, включая OSX. Существуют даже реализации VNC на JavaScript, которые позволяют людям предоставлять демонстрации без установки какого-либо нового программного обеспечения — это важно для таких сервисов, как Amazon Mechanical Turk.
Простота отладки. Мы можем наблюдать за нашим агентом во время его обучения или оценки — для этого достаточно подключить VNC-клиент к (общему) VNC-рабочему столу среды. Мы также можем сохранить VNC-трафик для последующего анализа.
Мы были сильно удивлены тем, что нам удалось заставить VNC работать настолько хорошо. По мере масштабирования до более крупных игр существует большая вероятность того, что мы начнем использовать дополнительные бэкенд-технологии. Но предварительные признаки указывают на то, что текущую реализацию можно развивать и дальше: при правильных настройках наш клиент может заставить GTA V работать со скоростью 20 кадров в секунду через публичный интернет.
Среды
Мы уже интегрировали большое количество сред в Universe и рассматриваем это лишь как начало. Каждая среда упакована в виде Docker-образа и содержит два сервера, которые взаимодействуют с внешним миром: VNC-сервер, отправляющий пиксели и принимающий команды клавиатуры/мыши, и WebSocket-сервер, отправляющий сигнал вознаграждения для задач обучения с подкреплением (а также любую вспомогательную информацию, такую как текст или диагностику) и принимающий управляющие сообщения (например, ID конкретной запускаемой среды).
Игры Atari
Universe включает игры Atari 2600 из среды Arcade Learning Environment. Теперь эти среды работают асинхронно внутри Docker-образа quay.io/openai/universe.gym-core и позволяют агенту подключаться по сети, что означает необходимость обработки агентом задержек и низких частот кадров. При работе в локальной сети в облаке мы обычно наблюдаем 60 кадров в секунду, задержку наблюдения 20 мс и задержку действий 10 мс; при работе через публичный интернет эти показатели падают до 20 кадров в секунду, 80 мс задержки наблюдения и 30 мс задержки действий.
Flash-игры
Мы обратились к Flash-играм как к отправной точке для масштабирования Universe: они повсеместно распространены в интернете, в целом обладают более богатой графикой, чем Atari, но при этом остаются индивидуально простыми. На данный момент мы просеяли более 30 000 таких игр и оцениваем их общее количество на порядок больше.
Наш первоначальный релиз Universe включает 1 000 Flash-игр (100 из них — с функциями вознаграждения), которые мы распространяем в виде Docker-образа quay.io/openai/universe.flashgames с согласия правообладателей. Этот образ запускает сервер TigerVNC и загружает управляющий сервер Python, который использует Selenium для открытия браузера Chrome на странице внутри контейнера с нужной игрой и автоматически кликает по любым меню, необходимым для запуска игры.
Извлечение вознаграждений. Хотя среды без функций вознаграждения могут использоваться для обучения без учителя или для генерации демонстраций действий человека, обучение с подкреплением (RL) требует функции вознаграждения. В отличие от игр для Atari, мы не можем просто считывать критерии успеха из памяти процесса, поскольку существует слишком много вариаций в том, как каждая игра хранит эту информацию. К счастью, во многих играх есть экранный счет, который мы можем использовать в качестве функции вознаграждения, если мы можем его распознать. Хотя готовые системы OCR (оптического распознавания символов), такие как Tesseract, отлично справляются со стандартными шрифтами на чистом фоновом изображении, они испытывают трудности с разнообразными шрифтами, движущимися фонами, яркими анимациями или перекрывающимися объектами, которые часто встречаются во многих играх. Мы разработали модель OCR на основе сверточной нейронной сети, которая работает внутри Python-контроллера Docker-контейнера, распознает счет (из буфера экрана, поддерживаемого через VNC-петлю) и передает его агенту по каналу WebSocket.
Задачи в браузере
Человечество коллективно превратилось интернет в огромную сокровищницу информации, предназначенную для визуального восприятия людьми. Universe включает среды на базе браузера, которые требуют от ИИ-агентов чтения, навигации и использования веб-сайтов точно так же, как это делают люди — используя пиксели, клавиатуру и мышь.
Сегодня наши агенты в основном учатся взаимодействовать с привычными элементами пользовательского интерфейса, такими как кнопки, списки и ползунки, но в будущем они смогут выполнять сложные задачи, например искать неизвестную им информацию в интернете, управлять вашей электронной почтой или календарем, проходить уроки на Khan Academy или выполнять задания на Amazon Mechanical Turk и CrowdFlower.
Mini World of Bits. Сначала мы поставили перед собой задачу создать новый бенчмарк, отражающий основные сложности взаимодействия с браузером в простой обстановке. Мы назвали этот бенчмарк Mini World of Bits. Мы рассматриваем его как аналог MNIST и верим, что освоение этих сред дает ценные сигналы для разработки моделей и методов обучения, которые будут успешно работать с полноценными веб-сайтами и более сложными задачами. Наш первоначальный бенчмарк Mini World of Bits состоит из 80 сред, от простых (например, нажать определенную кнопку) до сложных (например, ответить контакту в симулированном почтовом клиенте).
Реальные задачи в браузере. Мы начали работу над более реалистичными задачами в браузере. Агент получает инструкцию и выполняет последовательность действий на веб-сайте. Одна из таких сред передает агенту данные о желаемом бронировании авиабилета, а затем требует от него манипулировать пользовательским интерфейсом для поиска рейса. (Мы используем закэшированные записи этих сайтов, чтобы не заспамить их и не бронировать множество реальных авиабилетов.)
Будущие интеграции
Эта инфраструктура является универсальной: мы можем интегрировать любую игру, веб-сайт или приложение, которые могут работать в Docker-контейнере (что наиболее удобно) или виртуальной машине Windows (что менее удобно). Мы хотели бы получить помощь сообщества в дальнейшем расширении разнообразия сред Universe, включая завершение интеграции игр наших партнеров, Android-приложений (эмуляторы могут работать внутри Docker), fold.it, игр на Unity, HTML5-игр, онлайн-обучающих игр и вообще всего остального, что может прийти людям в голову.
Команда проекта Project Malmo от Microsoft также интеграрируется с Universe, и мы с нетерпением ждем возможности поддержать и другие ИИ-фреймворки.
Запуск среды
Несмотря на огромный выбор, запуск сред Universe требует минимальной настройки. Вам понадобится лишь установить Docker и universe:
Plain Text
1$ git clone https://github.com/openai/universe && pip install -e universeМы упаковываем каждую коллекцию похожих сред в «рантайм» (исполняемую среду) — сервер, предоставляющий два порта: 5900 (используется для протокола VNC для обмена пикселями/действиями клавиатуры/мыши) и 15900 (используется для управляющего протокола WebSocket). Например, Docker-образ quay.io/openai/universe.flashgames представляет собой рантайм, который может обслуживать множество различных сред Flash-игр.
Запуск рантайма. Вы можете запустить свой первый рантайм из консоли следующим образом:
Plain Text
1# -p 5900:5900 and -p 15900:15900 expose the VNC and WebSocket ports2# --privileged/--cap-add/--ipc=host needed to make Selenium work3$ docker run --privileged --cap-add=SYS_ADMIN --ipc=host \4 -p 5900:5900 -p 15900:15900 quay.io/openai/universe.flashgamesЭто загрузит и запустит Docker-контейнер с Flash-играми. Вы можете просматривать удаленный рабочий стол и управлять им, подключив собственный VNC-клиент к порту 5900, например с помощью TurboVNC или браузерного VNC-клиента, работающего через веб-сервер на порту 15900. Пароль по умолчанию — openai. В OSX также есть встроенный VNC-клиент, к которому можно получить доступ, выполнив команду open vnc://localhost:5900 в Терминале. (К сожалению, клиент в OSX не поддерживает сжатие Tight, что является лучшим вариантом для более крупных игр.)
Написание собственного агента. Вы можете довольно легко написать собственного агента, используя свой любимый фреймворк, такой как TensorFlow или Theano. (Мы предоставили стартовый агент для TensorFlow.) На каждом шаге наблюдения агента включают массив пикселей NumPy, и агент должен выдавать список VNC-событий (действия мыши/клавиатуры). Например, следующий агент запустит Dusk Drive и будет постоянно нажимать клавишу движения вперед:
Plain Text
1import gym2import universe # register Universe environments into Gym3
4env = gym.make('flashgames.DuskDrive-v0') # any Universe [environment ID](https://github.com/openai/universe/blob/master/universe/__init__.py#L297) here5# If using docker-machine, replace "localhost" with your Docker IP6env.configure(remotes="vnc://localhost:5900+15900")7observation_n = env.reset()8
9while True:10 # agent which presses the Up arrow 60 times per second11 action_n = [[('KeyEvent', 'ArrowUp', True)] for _ in observation_n]12 observation_n, reward_n, done_n, info = env.step(action_n)13 env.render()Вы можете держать собственное VNC-подключение открытым и наблюдать за игрой агента или даже использовать клавиатуру и мышь вместе с агентом в режиме совместной работы человека и агента.
Управление средой. Поскольку среды работают как серверные процессы, они могут выполняться на удаленных машинах, возможно, в рамках кластера или даже через публичный интернет. Мы описали несколько способов управления удаленными рантаймами. В OpenAI мы используем HTTP-сервис «аллокатор», который динамически выделяет рантаймы в кластере Kubernetes по требованию и который мы можем использовать для подключения одного процесса агента к сотням одновременных сред.
Проверка инфраструктуры Universe
Агенты Universe должны справляться с реальностями внешнего мира, от которых ограждены традиционные агенты RL: агенты должны работать в реальном времени и учитывать колебания задержки действий и наблюдений. Хотя вся сложность Universe спроектирована так, чтобы выходить за рамки текущих методов, мы также позаботились о том, чтобы сегодня можно было добиться прогресса.
Universe Pong. Нашей первой целью было решение задачи gym-core.PongDeterministic-v3. Pong — одна из самых простых игр для Atari, но она могла оказаться непосильной задачей для Universe, так как агенту приходится учиться выполнять очень точные маневры с четырехкратной скоростью реального времени (поскольку в среде используется стандартный пропуск кадров, равный 4). Мы использовали эту среду, чтобы подтвердить, что переменные задержки Universe все же позволяют обучаться точным и быстрым реакциям. В сегодняшний релиз входит universe-starter-agent, которому требуется один час обучения, чтобы набрать в Pong 17 очков из 21. Люди, игравшие в ту же версию Pong, смогли набрать лишь -11 очков по шкале от -21 до 21 из-за высокой скорости игры.

Дополнительные эксперименты. Мы применили RL к нескольким гоночным Flash-играм, что сработало после применения некоторых стандартных приемов, таких как нормализация вознаграждений. Некоторые браузерные задачи, где мы пробовали RL, имели сложные проблемы с исследованием (exploration), но были разрешимы с помощью клонирования поведения на основе данных демонстраций людей.
Некоторые из наших успешных агентов показаны ниже. Хотя решение задач Universe потребует создания агента, далеко выходящего за рамки текущих методов, эти видео показывают, что к множеству интересных сред Universe можно успешно подступиться с помощью сегодняшних алгоритмов.
Удаленное обучение. Мы также экспериментировали с агентами slither.io на нашей физической инфраструктуре (которая имеет доступ к GPU Titan X) и средами в облаке. Как правило, агент управляет 32 одновременными средами со скоростью 5 кадров в секунду — наблюдения доступны гораздо чаще, но более низкая частота кадров помогает современным алгоритмам RL, которым трудно работать с зависимостями на протяжении многих временных шагов.

«Время реакции» нашего агента в среднем составляет около 150 мс при работе через публичный интернет: 110 мс уходит на доставку наблюдения, 10 мс на вычисление действия и 30 мс на то, чтобы действие вступило в силу. (Для сравнения, человеческая реакция в среднем составляет около 250 мс.) Время реакции сокращается до 80 мс в локальной сети и до 40 мс на одном компьютере.
Взгляд в будущее
Прогресс в исследованиях требует осмысленного измерения производительности. В предстоящие недели мы выпустим бенчмарк для обучения с передачей знаний (transfer learning), который позволит исследователям определить, добиваются ли они успехов в решении задач общего характера.
Universe черпает вдохновение из истории датасета ImageNet в сообществе компьютерного зрения. Фей-Фей Ли и ее соавторы намеренно спроектировали бенчмарк ImageNet так, чтобы он казался практически невыполнимым, однако доля ошибок стремительно снизилась с 28% в 2010 году до 3% в 2016 году, что соответствует (а в некоторых случаях даже превосходит) человеческому уровню производительности.
Если сообщество специалистов по искусственному интеллекту поступит так же с Universe, то мы сделаем реальный шаг вперед к созданию систем с широким и общим интеллектом.
Помогите нам улучшить Universe
Universe добьется успеха только при поддержке сообщества. Есть множество способов внести свой вклад (и один из самых прекрасных — присоединиться к нам):
Дайте нам разрешение на использование вашей игры, программы, сайта или приложения.
Если ваша программа может послужить хорошей тренировочной задачей для ИИ, мы будем рады вашему разрешению упаковать ее в Universe. Хорошими кандидатами являются программы с отображаемым на экране числовым значением (например, игровые очки), которое можно интерпретировать как награду, либо программы с четко определенными целями (встроенными изначально или задаваемыми пользователем).
Обучайте агентов на задачах Universe.
Прогресс в области ИИ требует совместной работы всего сообщества, и мы приветствуем помощь в обучении агентов решению этих задач. Мы выпустили стартовый пакет агента, который послужит отличной отправной точкой для создания собственных агентов. В ближайшие недели мы представим подборки бенчмарков, с которых, по нашему мнению, лучше всего начать.
Интегрируйте новые среды. (Скоро)
У нас есть гораздо больше сред, ожидающих интеграции, чем мы можем обработать самостоятельно. В ближайшие недели мы выпустим инструменты для интеграции сред, чтобы каждый мог внести свой вклад в этот процесс. А пока мы запускаем бета-тестирование для разработчиков интеграций.
Предоставляйте демонстрации. (Скоро)
Мы собираем обширный датасет демонстраций прохождения сред Universe людьми, который вскоре будет опубликован в открытом доступе. Если вы хотите поиграть в игры на благо науки, пожалуйста, запишитесь в нашу бета-версию.
- Работа в OpenAI
- Обсудить с другими
- Связаться с нами
Автор
Участники
Приобретения и партнерства: Эрин Петтигрю, Джек Кларк, Джефф Арнольд
Базовая инфраструктура: Грег Брокман, Катрин Ольссон, Алекс Рэй
Демонстрации: Том Браун, Джереми Шлаттер, Мари Ла, Катрин Ольссон
Инфраструктура распределенного обучения: Вики Чунг, Грег Брокман, Йонас Шнайдер
Документация и коммуникации: Джек Кларк, Андрей Карпатый, Катрин Ольссон
Интеграция сред: Алек Рэдфорд, Джонатан Грей, Том Браун, Грег Брокман, Алекс Рэй, Катрин Ольссон, Тревор Блэквелл, Тамбет Матиисен, Крейг Квайтер
Первые результаты агентов: Рафал Юзефович, Дарио Амодей, Ильи Суцкевер, Джонатан Хо, Тревор Блэквелл, Авитал Оливер, Ярослав Булатов
Управление удаленными средами: Вики Чунг, Грег Брокман, Катрин Ольссон, Цзе Тан
Базовые алгоритмы обучения с подкреплением (RL baselines): Дарио Амодей, Харри Эдвардс
Веб-сайт: Людвиг Петтерсон, Цзе Тан, Том Браун, Алек Рэдфорд, Йонас Шнайдер, Шимон Сидор
World of Bits: Андрей Карпатый, Тяньлинь (Тим) Ши, Линьси (Джим) Фань, Джонатан Эрнандес, Перси Лян
Партнеры
Ключевую роль в создании Universe сыграли следующие партнеры: EA, Valve, Microsoft, NVIDIA, Kongregate, Newgrounds, Yacht Club Games, Zachtronics, Ludeon Studios, Monomi Park, 2D Boy, Адам Ригл, Alvin Team, Rockspro, Анубхав Шарма, Arkadium, Beast Games, Char Studio, Droqen, Перси Пи, deeperbeige, Денни Менато, Dig Your Own Grave, Free World Group, Gamesheep, Hamumu Software, Hemisphere Games, Icy Lime, Insane Hero, inRegular Games, ДжекСмак, Nocanwin, Джо Уилмотт, Джонни Ту Сьюз, The Gamest Studio, Ласло Циглески, Madalin Games, Martian Games, Матеуш Скутник, Николай Радчук, Neutronized, Nitrome, ooPixel, PacoGames, Pixelante, Plemsoft, Роб Донкин, robotJam, Rumble Sushi 3D, SFB Games, Simian Logic, Smiley Gamer, Sosker, tequibo, kometbomb, ThePodge, Васко Фрейтас, Vitality Games, Wolve Games, Xform Games, XGen Studios
Полный текст статьи читайте на OpenAI
