avalon
首个专用于强化学习泛化研究的3D程序化游戏基准环境,20个任务覆盖导航/狩猎/采集等技能,由 Gen
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个专用于强化学习泛化研究的3D程序化游戏基准环境,20个任务覆盖导航/狩猎/采集等技能,由 Gen
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否曾想过,为什么 AI 在游戏中能够大杀四方,却在换一个全新地图时遭遇"一夜回到解放前"的尴尬?这正是强化学习(Reinforcement Learning,RL)领域的核心难题——泛化能力不足。Avalon 正是为解决这一痛点而生的基准测试平台,由 AI 安全和研究公司 Generally Intelligent(现更名为 Imbue)于 2022 年 NeurIPS 会议上正式发布,论文已被引用 37 次,成为 RL 泛化研究领域的重要基准。
Avalon 是首个专为强化学习泛化能力评测而从零设计的 3D 视频游戏环境。设定在一个程序化生成的 3D 自然世界中,智能体(可以是人类,也可以是 AI)需要通过导航地形、收集食物、狩猎、投掷物品和躲避危险等多种技能来完成任务并生存。这个设定模拟了真实世界中的复杂决策场景——不是简单的网格世界,而是需要感知、规划、执行的完整闭环。
Avalon 精心设计了 20 个任务,难度跨度极大:从最基础的"吃食物"(eat)到复杂的"狩猎"(hunt)和"导航"(navigate)。最核心的设计哲学是:所有任务共享同一套奖励函数、物理引擎和动作空间,任务的区分仅通过改变环境本身来实现。 这与其他 RL 基准(如 Atari、Procgen)形成了鲜明对比——那些基准通过改变奖励函数或动作空间来区分任务,而 Avalon 只改变环境,从而能够更纯粹地测试智能体的泛化能力。
Avalon 让研究者可以从三个维度系统评估智能体的泛化能力:
任务内泛化(Within-task generalization):同一任务在不同生成的世界上表现是否一致。例如,在不同地形的森林中"狩猎"是否都能成功。
跨任务泛化(Between-task generalization):在任务 A 中学到的技能能否迁移到任务 B。例如,在"收集食物"中学到的导航能力是否有助于"狩猎"。
组合任务泛化(Compositional tasks):需要同时组合多个技能才能完成的高难度任务。
评测结果显示,标准 RL 基线(PPO、Dreamer v2)在大多数任务上有所进展,但距离人类表现仍有相当大的差距——这说明 Avalon 的难度足够推动领域进步,而非一个容易解决的问题。
Avalon 的技术栈设计充分体现了工程严谨性:
游戏引擎:基于经过深度定制的 Godot 3D 开源引擎,专门针对无头 Linux 服务器上的 GPU 渲染进行了优化。训练可以在云端大规模并行进行,而不需要图形界面。相比使用 Unity 或 Unreal 的 RL 环境,Godot 的开源特性让底层调试和定制更加透明。
标准 Gym 接口:Avalon 实现了标准的 OpenAI Gym 接口,开发者可以像使用任何其他 Gym 环境一样使用它,几行代码即可开始训练:
from avalon.agent.godot.godot_gym import GodotEnvironmentParams, AvalonEnv
env_params = GodotEnvironmentParams(resolution=256, training_protocol=TrainingProtocolChoice.SINGLE_TASK_FIGHT)
env = AvalonEnv(env_params)
env.reset()
action = env.action_space.sample()
obs, reward, done, info = env.step(action)
内置 RL 基线库:项目自带经过调优的 PPO 和 Dreamer v2 基线实现,README 中提供了开箱即用的训练命令,配合 WandB 记录训练曲线。同时还提供了与 RLlib 集成的教程,展示如何将 Avalon 融入已有的 RL 训练框架。
Avalon 对硬件有明确要求:必须在 Linux 系统上配合 NVIDIA GPU 运行(CUDA 11.3+)。这是因为 Godot 的无头 GPU 渲染只针对 Linux CUDA 环境进行了优化。macOS 可以运行但不支持无头模式(会弹出 Godot 窗口)。
部署有两条路径:
原生安装:需要手动安装大量系统依赖(libegl-dev、libglew-dev、libglfw3-dev、libnvidia-gl 等),并通过 python -m avalon.install_godot_binary 下载 Godot 二进制文件。步骤较为繁琐,适合有 Linux 系统管理经验的开发者。
Docker 部署:项目提供了完整的多阶段 Dockerfile,分为 dev(内置 Jupyter Notebook,用于探索和开发)和 train(用于训练)两个镜像。GPU 支持通过 --gpus 'all' 标志启用:
docker build -f ./docker/Dockerfile . --target train --tag=avalon/train
docker run -it --gpus 'all,"capabilities=compute,utility,graphics"' avalon/train bash
不支持 Docker Compose,也无 Web UI 界面,属于纯代码工具包。硬件门槛为 8GB+ 显存 GPU、16GB+ 内存、10GB+ 磁盘空间。
Avalon 的代码质量在学术项目中属于上乘:项目根目录配置了 mypy.ini(静态类型检查)、pytest.ini(测试框架),通过 pytest-forked 实现并行测试隔离,pytest-xdist 支持分布式测试执行。nptyping 类型注解广泛使用,代码具备良好的可维护性。
唯一的显著不足是近年来活跃度下降:代码最后一次推送为 2023 年 5 月,距今已超过 3 年。对于快速发展的 RL 领域,3年的"冰冻期"意味着与现代 Gymnasium API、新版 PyTorch 的兼容性可能存在滞后。不过在学术基准项目中较为常见——项目在论文发表后通常进入维护模式。
项目提供了一系列有价值的公开资源:
这些资源使得研究者可以在完全相同的世界上直接比较 AI 和人类的表现,这也是 Avalon 评测体系科学性的重要保障。
Avalon 在 RL 泛化研究中占据独特地位——它是目前唯一同时满足以下条件的基准:3D 高维视觉输入 + 程序化生成世界 + 恒定奖励/动作空间 + 细粒度泛化控制 + 高效易用。2022 年发表以来被引用 37 次,在 NeurIPS Datasets and Benchmarks Track 中获得认可。
对于需要系统研究 RL 泛化问题的研究团队,Avalon 仍是目前最科学、最完整的测试平台之一。其程序化生成 + 细粒度控制的设计理念在学术界具有开创性意义,影响深远。

图1:Avalon 环境中随机策略智能体的观察输出。图中展示了程序化生成世界的视觉效果和智能体的第一人称视角(来源:Avalon-Benchmark/avalon 官方仓库)。