基于 TORCHRL 的多智能体强化学习(PPO)教程

本小节进入MARL的学习

1.VMAS 多机器人模拟器

教程主要包括 环境创建(如何规范,和库集成)不过由于VMAS已经是一个完整的环境库可以直接用;向量化环境;MARL架构;TensorDict如何承载MA数据,分成了agents特有的和共有的;如何在MA将库组件链接起来;

2.PPO

利用一步历史数据的on-policy

之前已经介绍过了PPO,在多智能体背景下就是按照中心化,去中心化,CTDE来区分;

MAPPO和IPPO;

各自有各自的优缺点,简单拼接可能会导致维度暴增,独立的话可能会导致环境非平稳;

3.教程结构

4.依赖项导入

fork和GPU的关系后面讲解了

5.环境

除了模拟器和变换之外,环境还由元数据定义,这里的元数据指的就是spec,相当于环境的说明书,规定了空间维度

上面可以访问每个值的域,有共享的参数比如done,也有独有的参数除了done;

上面提供了可以直接向环境查询相应的键;

其实环境这部分,展示了很好的归档原则,并不像之前的gym等环境那样比较原子化;

其实这样做也是为了数据的规范,已经并行化的实施;

转换

rollout执行

也就是说batch_size包括了环境数量和执行次数,相当于前导维度;

多加了一个维度也就是智能体数量

由于需要对应bellman的更新规则,因此,当前状态和下一时刻状态必须都有

可以看到obs,agents和done还有terminated无论是当前还是next都会有这部分数据

其实也就是为了说明,TensorDict的封装是很符合贝尔曼方程的更新公式的;

6.策略

三步定制策略
1.

MLP也就是NN网络模块

2.

将NN模块封装,并且告诉他将从tensordict读取什么数据;

3.

将其封装到一个分布中,上面的NN网络只是输出均值和方差,因此需要利用其构成一个分布;

所以这里的in和out_key就分别对于参数和最后的输出-采样到的动作;

7.Critic网络

共享不共享取决于任务和设施;

MAPPO就相当于有一个中央评价器

IPPO就相当于完全独立,不仅是CRITIC还是ACTOR

输出维度的话最后一维度=1,就是一个value;

其实从上面的环境和策略以及价值网络来看都已经封装的很好了MA和SA唯一的区别可能就是输入的参数存在区别,整体的pipline其实都看不出有什么区别;

8.Collector

9.ReplyBuffer

即使是on-policy,这个策略收集到的数据还是会被用来多次更新,可以理解为榨干这批数据的价值,而不是说一次更新就丢掉

10.损失函数

涉及到了GAE,也就是广义优势估计函数;

GAE

11.训练循环

解析

12.结果

可以看到其实该库代码封装的很好,即使是多智能体,其编写流程也没有发生改变;

问题

fork和GPU

理解根目录的next目录

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐