5 доступных макетов. Новые макеты легко запрограммировать или сгенерировать программно.
Overcooked-AI — это эталонная среда для полностью совместного выполнения задач человека и ИИ, основанная на чрезвычайно популярной видеоигре Overcooked.
Цель игры — как можно быстрее доставить супы. Для каждого супа необходимо положить до 3 ингредиентов в кастрюлю, дождаться, пока суп приготовится, а затем попросить агента забрать суп и доставить его. Агенты должны оперативно распределять задачи и эффективно координировать свои действия, чтобы добиться высокого вознаграждения.
Вы можете опробовать игру здесь (играя с ранее обученными агентами DRL). Чтобы поиграть со своими обученными агентами, используя этот интерфейс, или собрать больше данных о человеке-ИИ или человеке-человеке, вы можете использовать код здесь. Вы можете найти некоторые данные об игровом процессе «человек-человек» и «человек-ИИ», уже собранные здесь.
Реализации DRL, совместимые со средой, включены в репозиторий как подмодуль src/human_aware_rl.
Старый вариант human_aware_rl устарел и должен использоваться только для воспроизведения результатов, изложенных в статье 2019 года: «О пользе изучения людей для координации между человеком и ИИ» (см. также сообщение в нашем блоге).
Для простоты использования среды стоит рассмотреть возможность использования этой оболочки среды.
Вы можете установить предварительно скомпилированный файл колеса с помощью pip.
pip install overcooked-ai
Обратите внимание, что выпуски PyPI стабильны, но выходят нечасто. Для получения самых современных функций разработки создайте сборку из исходного кода с помощью pip install -e .
.
Полезно настроить среду conda с помощью Python 3.7 (virtualenv тоже работает):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Клонировать репозиторий
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Наконец, используйте инструменты настройки Python для локальной установки.
Если вы просто хотите использовать среду:
pip install -e .
Если вам также нужны реализации DRL (возможно, вам придется ввести это в свой терминал как pip install -e '.[harl]'
):
pip install -e .[harl]
При сборке из исходного кода вы можете проверить установку, запустив набор модульных тестов Overcooked. Следующие команды следует запускать из корневого каталога проекта overcooked_ai
:
python testing/overcooked_test.py
Чтобы проверить, правильно ли установлен humam_aware_rl
, вы можете запустить следующую команду из каталога src/human_aware_rl
:
$ ./run_tests.sh
Это запустит все тесты, принадлежащие модулю human_aware_rl. Вы можете просмотреть README в подмодуле, чтобы получить инструкции по запуску тестов, специфичных для конкретной цели. Это можно запустить из любого каталога.
Если вы планируете широко использовать код планирования, вам следует запустить полный набор тестов, который проверит все вспомогательные инструменты Overcooked (это может занять 5–10 минут):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
содержит:
mdp/
:
overcooked_mdp.py
: основная логика игры Overcooked.overcooked_env.py
: классы среды, созданные на основе Overcooked mdp.layout_generator.py
: функции для программного создания случайных макетов. agents/
:
agent.py
: расположение классов агентов.benchmarking.py
: выборка траекторий агентов (как обученных, так и планировщиков) и загрузка различных моделей. planning/
:
planners.py
: почти оптимальная логика планирования агента.search.py
: логика поиска A* и кратчайшего пути. human_aware_rl
содержит:
ppo/
:
ppo_rllib.py
: основной модуль, в котором находится код для обучения агента PPO. Сюда входит совместимая с rllib оболочка для OvercookedEnv
, утилиты для преобразования классов Policy
rllib в Overcooked Agent
, а также служебные функции и обратные вызовы.ppo_rllib_client.py
Код драйвера для настройки и запуска обучения агента. Более подробная информация об использовании нижеppo_rllib_from_params_client.py
: обучить одного агента с помощью PPO в Overcooked с переменными MDP.ppo_rllib_test.py
Тесты воспроизводимости для локальных проверок работоспособностиrun_experiments.sh
Скрипт для обучения агентов на 5-ти классических раскладкахtrained_example/
Предварительно обученная модель для целей тестирования rllib/
:
rllib.py
: агент rllib и обучающие утилиты, использующие Overcooked API.utils.py
: утилиты для вышеперечисленногоtests.py
: предварительные тесты для вышеперечисленного. imitation/
:
behavior_cloning_tf2.py
: Модуль для обучения, сохранения и загрузки модели BC.behavior_cloning_tf2_test.py
: содержит базовые тесты воспроизводимости, а также модульные тесты для различных компонентов модуля bc. human/
:
process_data.py
для обработки человеческих данных в определенных форматах, которые будут использоваться алгоритмами DRL.data_processing_utils.py
утилиты для вышеперечисленного utils.py
: утилиты для репозитория.
overcooked_demo
содержит:
server/
:
app.py
: приложение Flask.game.py
: основная логика игры. Переходы между состояниями обрабатываются объектом overcooked.Gridworld, встроенным в игровую среду.move_agents.py
: скрипт, упрощающий копирование контрольных точек в каталог агентов. Инструкции по использованию можно найти внутри файла или запустив python move_agents.py -h
up.sh
: сценарий оболочки для запуска сервера Docker, на котором размещена игра.
См. этот Google Colab для примера кода для визуализации траекторий в Python.
Мы внедрили блокнот, который помогает пользователям в процессе обучения, загрузки и оценки агентов. В идеале мы хотели бы предоставить пользователям возможность запускать блокнот в Google Colab; однако, поскольку ядром Colab по умолчанию является Python 3.10, а наш репозиторий оптимизирован для Python 3.7, некоторые функции в настоящее время несовместимы с Colab. Чтобы обеспечить бесперебойную работу, мы предварительно выполнили все ячейки в блокноте, что позволяет вам просмотреть ожидаемый результат при локальном запуске после соответствующей настройки.
Overcooked_demo также может запустить интерактивную игру в браузере для визуализации. Подробности можно найти в README.
Необработанные данные, используемые при обучении, имеют размер >100 МБ, что делает неудобным их распространение через git. Код использует маринованные фреймы данных для обучения и тестирования, но если вам нужны исходные данные, их можно найти здесь.
Если у вас есть проблемы или вопросы, вы можете связаться с Микой Кэрроллом по адресу [email protected].