VectorizedMultiAgentSimulator
PyTorch向量化多智能体仿真引擎,一键安装即可实现万级并行MARL训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch向量化多智能体仿真引擎,一键安装即可实现万级并行MARL训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:城市中心十字路口,高峰时段数千辆自动驾驶汽车同时穿行,每辆车都需要实时感知周围环境、预测其他车辆意图、与前后左右的车辆协同避让。这不是科幻——这是多智能体强化学习(MARL)研究者每天面对的真实挑战。
传统仿真器一次只能运行一个环境,训练效率极低。2022年,ProrokLab(剑桥大学机器人研究组)发布了 VMAS(Vectorized Multi-Agent Simulator),用 PyTorch 的向量化计算彻底改变了这一局面——在单张 GPU 上同时仿真数万个并行环境,训练速度提升百倍以上。
VMAS 的核心是一个完全可微分的二维物理引擎,完全使用 PyTorch 实现,区别于常见的 C++/PhysX 物理后端。这意味着每一次仿真都能计算梯度,支持端到端的强化学习优化。
核心代码结构分为三层:
1. 物理引擎层(vmas/simulator/physics.py):
2. 仿真引擎层(vmas/simulator/core.py,约98KB):
World 类管理所有实体(Agent/Landmark)的状态更新3. 环境接口层(vmas/simulator/environment/environment.py):
reset()、step()、render() 接口import vmas
env = vmas.make_env("navigation", num_envs=32768, device="cuda")
observations, infos = env.reset()
# 32768个并行环境同时仿真,充分利用GPU并行计算能力
VMAS 内置了 23+ 个仿真场景,每个场景对应一种典型的多智能体协作问题:
| 场景 | 核心挑战 |
|---|---|
navigation | 多智能体协同导航与碰撞避免 |
football | 足球对抗(竞争性协作) |
transport | 协同搬运(需要协调力量方向) |
discovery | 未知区域探索与信息共享 |
joint_passage | 多智能体共同通过窄通道 |
wind_flocking | 风力干扰下的群体编队控制 |
road_traffic | 交通流仿真(路网级别) |
give_way | 交互式让路协议 |
其中 road_traffic.py 单文件达 168KB,是最复杂的场景模块,模拟真实城市交通网络中的多智能体决策问题。
① 真正的向量化:区别于"伪并行"的多进程仿真,VMAS 利用 PyTorch broadcast 机制,将 N 个环境打包成一个 batch tensor,单次 forward 即可完成 N 个环境的同步更新。在 A100 GPU 上可稳定运行 32768+ 并行环境。
② 完全可微分:物理引擎的每一步计算都保留梯度,支持 HJB 最优控制、NMPC 等需要梯度信息的算法。这是 Matterport3D、MPE 等竞品无法实现的核心特性。
③ 丰富的通信协议:内置 communicate() 接口,支持智能体间信息共享(如编队中后车向前车传递感知信息),且通信开销可通过 Torch 广播高效实现。
④ 统一基准:配套发布 BenchMARL(Facebook Research),提供标准化训练流程,消除"同一算法不同实现"导致的对比不公平问题,在 ICLR 2023 发表。
VMAS 通过 pip 一键安装:
pip install vmas
依赖极简:numpy + torch + pyglet(可视化)+ gym。CPU 环境下可正常运行,GPU 可大幅提升仿真吞吐。
有 Colab Notebook 支持,无需本地配置即可体验核心功能。可视化支持 pyglet 实时渲染(vmas.interactive_rendering),也支持无头(headless)批量仿真。
无 Web UI,纯 Python API 调用。
gymnasium APIVMAS 的发布解决了 MARL 领域长期存在的"基准分散"问题——此前研究者需要自行实现仿真器,导致实验结果难以复现、算法对比不公平。VMAS + BenchMARL 的组合(TorchRL 官方支持)正在成为 MARL 论文实验的标准配置,其论文引用量持续增长,代表了多智能体强化学习工程化的主流方向。