5 种可用布局。新布局很容易硬编码或以编程方式生成。
Overcooked-AI 是一个完全协作的人类与人工智能任务性能的基准环境,基于广受欢迎的视频游戏 Overcooked。
游戏的目标是尽可能快地送汤。每份汤需要将最多 3 种食材放入锅中,等待汤煮好,然后让工作人员接汤并送出。智能体应该动态分配任务并有效协调,以获得高回报。
您可以在这里尝试这个游戏(与一些之前训练过的 DRL 代理一起玩)。要使用此界面与您自己训练的代理一起玩,或者收集更多人类与人工智能或人类与人类的数据,您可以使用此处的代码。您可以在此处找到一些已收集的人类与人类和人类与人工智能的游戏数据。
与环境兼容的 DRL 实现作为 src/ human_aware_rl 下的子模块包含在存储库中。
旧的 human_aware_rl 已被弃用,只能用于重现 2019 年论文中的结果:关于学习人类对于人类与人工智能协调的效用(另请参阅我们的博客文章)。
为了简单地使用环境,值得考虑使用此环境包装器。
您可以使用pip安装预编译的wheel文件。
pip install overcooked-ai
请注意,PyPI 版本稳定但不频繁。对于最新的开发功能,请使用pip install -e .
。
使用 Python 3.7 设置 conda 环境很有用(virtualenv 也可以):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
克隆存储库
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
最后使用python setup-tools进行本地安装
如果你只是想使用环境:
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 模块的所有测试。您可以查看子模块中的自述文件,以获取运行特定于目标的测试的说明。这可以从任何目录启动。
如果您考虑广泛使用规划代码,则应该运行完整的测试套件来验证所有 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 代理的代码的主要模块。这包括OvercookedEnv
上的 rllib 兼容包装器、用于将 rllib Policy
类转换为 Overcooked Agent
的实用程序,以及实用程序函数和回调ppo_rllib_client.py
用于配置和启动代理训练的驱动程序代码。有关使用的更多详细信息如下ppo_rllib_from_params_client.py
:使用可变 MDP 在 Overcooked 中使用 PPO 训练一个代理ppo_rllib_test.py
用于本地健全性检查的再现性测试run_experiments.sh
用于在 5 种经典布局上训练代理的脚本trained_example/
用于测试目的的预训练模型rllib/
:
rllib.py
:使用 Overcooked API 的 rllib 代理和训练实用程序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 服务器的 Shell 脚本
请参阅此 Google Colab,获取一些用于在 Python 中可视化轨迹的示例代码。
我们合并了一个笔记本,指导用户训练、加载和评估代理的过程。理想情况下,我们希望用户能够在 Google Colab 中执行笔记本;但是,由于 Colab 的默认内核是 Python 3.10,而我们的存储库针对 Python 3.7 进行了优化,因此某些功能目前与 Colab 不兼容。为了提供无缝体验,我们预先执行了笔记本中的所有单元,以便您在按照适当的设置在本地运行时查看预期输出。
Overcooked_demo 还可以在浏览器中启动交互式游戏以进行可视化。详细信息可以在其 README 中找到
训练中使用的原始数据>100 MB,这使得通过git分发不方便。该代码使用腌制的数据帧进行训练和测试,但如果需要原始数据,可以在这里找到
如果您有问题或疑问,可以通过 [email protected] 联系 Micah Carroll。