文章目录
- 一、待解决问题
- 1.1 问题描述
- 1.2 解决方法
- 二、方法详述
- 2.1 必要说明
- 2.2 应用步骤
- 2.2.1 下载源码并安装
- 2.2.2 安装缺失的依赖项
- 2.2.3 训练+执行MAPPO算法实例
- 三、疑问
- 四、总结
一、待解决问题
1.1 问题描述
已配置好基础的运行环境,尝试运行MARL算法。
1.2 解决方法
(1)基于论文源码,尝试实例运行MAPPO算法
论文链接:The Surprising Effectiveness of PPO in Cooperative, Multi-Agent Games
源码链接:This is the official implementation of Multi-Agent PPO (MAPPO).
二、方法详述
2.1 必要说明
硬件、软件运行环境配置如下:
操作系统:ubuntu 22.04 LTS
显卡型号:Geforce RTX 4060 Mobile
显卡驱动:nvidia-550.120
CUDA版本:CUDA 12.4
预装软件:Anaconda | pip3
python版本:3.11.11
Pytorch版本:torch2.6.0 | torchaudio 2.6.0 | torchvision 0.21.0
TensorFlow版本: 2.17.0 (base + GPU)
2.2 应用步骤
2.2.1 下载源码并安装
github下载源码到本地,进入到虚拟环境开始安装
conda create -n mappo python=3.11
conda activate mappo
cd code/on-policy-main/
pip install -e .
出现个提示,但还是成功安装:
2.2.2 安装缺失的依赖项
由于最后测试代码是在MPE环境中,先安装依赖,再跑测试代码
conda install seaborn
cd onpolicy/scripts/train_mpe_scripts/
chmod +x ./train_mpe_spread.sh
./train_mpe_spread.sh
预期之内,缺少模块 ‘wandb’ ,报错如下:
过程当中还有许多模块存在缺失。
ModuleNotFoundError: No module named ‘wandb’
ModuleNotFoundError: No module named ‘absl’
ModuleNotFoundError: No module named ‘gym’
ModuleNotFoundError: No module named ‘tensorboardX’
ModuleNotFoundError: No module named ‘imageio’
没有咱就安装!但遵从一个原则:
🪶🪶🪶 “能用conda install就用,不能再用 pip3 install ,使用 conda 安装包可以避免依赖冲突,确保环境的稳定性” 🪶🪶🪶
pip3 install wandb
#安装了pytorch就没必要再安装
#pip3 install torch torchvision torchaudio
conda install absl-py
pip3 install gym
conda install tensorboardX
conda install imageio
./train_mpe_spread.sh
2.2.3 训练+执行MAPPO算法实例
./train_mpe_spread.sh
重新执行脚本,出现如下画面,简而言之,wandb 是一个机器学习实验跟踪和分析工具,可以线上共享结果和日志记录,可以看个人需求自行选择是否使用该工具。
暂时先选择 “3” ,开始 “ 漫长 ”的训练过程。
Scenario simple_spread Algo rmappo Exp check updates 0/6250 episodes, total num timesteps 3200/20000000, FPS 1838.
average episode rewards is -224.03669357299805
…
…
Scenario simple_spread Algo rmappo Exp check updates 6245/6250 episodes, total num timesteps 19987200/20000000, FPS 2333.
average episode rewards is -112.2522234916687
看起来像是总共跑了6250个episodes,不断优化奖励值reward,平均episode reward从初始的-224到最终的-112。
最终还有一些其它的数据统计,看样子是完美运行了,运行环境搭建 “ 大成功 ”!!!
wandb: Run history:
wandb: actor_grad_norm ▆▅█▆▇▆█▇▇▅▂▄▄▃▃▃▂▃▂▄▃▃▂▄▃▃▅▂▃▁▆▃▃▄▃▃▄▃▃▃
wandb: agent0/individual_rewards ▁▂▄▅▆▇▇▇▇█▇▇██▇█▇█▇█████████████████████
wandb: agent1/individual_rewards ▁▄▅▅▅▆▆▆▆▆▇▆▇▇▇▇▇█▇▇▇█▇▇▇█▇▇██▇███████▇█
wandb: agent2/individual_rewards ▁▃▄▅▆▇▇▇▇▇▇▇▇▇▇▇█▇▇▇▇▇█▇█▇█▇█▇█████▇▇▇██
wandb: average_episode_rewards ▁▃▄▄▅▆▇▇▇▇▇▇▇█▇▇▇████▇▇█▇▇▇▇████▇███████
wandb: critic_grad_norm █▆▄▄▂▃▂▂▂▂▁▁▁▂▁▂▂▂▂▁▂▃▁▂▂▁▂▂▂▂▁▂▁▁▂▁▁▂▂▁
wandb: dist_entropy █▇▇▇▅▅▄▅▅▄▄▄▄▄▄▃▃▃▂▂▂▂▂▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁
wandb: policy_loss █▄▄▁▃▄▁▁▂▄▂▂▁▂▂▃▃▁▂▁▃▂▂▁▂▂▁▂▂▁▂▂▃▁▂▂▃▁▃▃
wandb: ratio ▅▅▆▃█▃▄▄▆█▃▄▃▄▆▄▅▅▂▃▇▅▂▄▃▅▂▂▄▁▅▄▃▅▄▅▅▅▂▄
wandb: value_loss █▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▁▁▂▁▁▁▂▂▁▁▁▁▁▁▂▂▁▁▁
wandb:
wandb: Run summary:
wandb: actor_grad_norm 0.22411
wandb: agent0/individual_rewards -1.17638
wandb: agent1/individual_rewards -1.19982
wandb: agent2/individual_rewards -1.19982
wandb: average_episode_rewards -112.25222
wandb: critic_grad_norm 0.03261
wandb: dist_entropy 0.41139
wandb: policy_loss -0.00934
wandb: ratio 0.99943
wandb: value_loss 0.01067
同样的方式,运行另外一个脚本。
././train_mpe_reference.sh
得到反馈结果如下:
Scenario simple_reference Algo rmappo Exp check updates 0/937 episodes, total num timesteps 3200/3000000, FPS 3097.
average episode rewards is -68.8352644443512
…
…
Scenario simple_reference Algo rmappo Exp check updates 935/937 episodes, total num timesteps 2995200/3000000, FPS 4385.
average episode rewards is -9.302867949008942
并有其他训练结果数据反馈
wandb: Run history:
wandb: actor_grad_norm ▁▃▅▅▅█▆▇▇▇█▆▇▇▇▆▆▄▆▆▇▅▆▆▆▅▇▅▅▇▇▆▅▅▅▃▆▆▄▄
wandb: agent0/individual_rewards ▁▄▃▃▃▄▅▇▇▇▇▇▇▇██████████████████████████
wandb: agent1/individual_rewards ▁▂▃▃▃▅▅▆▇▇██████████████████████████████
wandb: average_episode_rewards ▁▄▃▃▄▅▆▆▆▇▇▇▇█▇▇████▇▇▇████████▇▇█▇█████
wandb: critic_grad_norm █▂▅▂▂▂▃▂▂▁▁▁▂▁▁▁▁▁▂▁▁▁▁▂▂▁▂▁▂▁▂▂▁▁▁▂▂▁▁▁
wandb: dist_entropy █▇▆▅▅▃▃▃▃▂▂▂▂▂▂▂▁▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
wandb: policy_loss ▅▄▃▃▂▂▁▂▂▄▄▅▄▅▄▆▆▇▇▆▆▅▇▆▆▆█▆▆▇▆▇█▇▆▇▇▇█▇
wandb: ratio ▆▆▆▆▆▄▅▄▄▆▆▄▅▆▆▅▅▇▄▂▆▅▇▃▄▃▅█▄▄▆▄▄▄▅▇▁▂▅▆
wandb: value_loss █▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
wandb:
wandb: Run summary:
wandb: actor_grad_norm 0.19407
wandb: agent0/individual_rewards -0.00368
wandb: agent1/individual_rewards -0.00423
wandb: average_episode_rewards -9.30287
wandb: critic_grad_norm 0.04375
wandb: dist_entropy 0.54034
wandb: policy_loss -0.01865
wandb: ratio 1.001
wandb: value_loss 0.00241
(下一步,进入到MAPPO算法原理学习环节,可跳转至【动手学强化学习】篇,共同学习!!!)
💐💐💐 完结撒花 💐💐💐
三、疑问
暂无。
四、总结
- 搭建一个学习环境,还是要以“目标导向”来实现,例如【OS安装与使用】这个系列就是为了运行MARL算法。学习的过程就像是 “搭积木” ,哪里缺失补充哪里,不要想着一口吃成一个胖子,一步一步解决当前存在的问题,脚踏实地。
- 遇到问题,不要总想着依赖其它人或物,先自身寻找答案,耐心一些,仔细一些。先确定问题本质,如若是创新性的难题,无人遇到过,可直接找 “大同行” 交流;如若是大家都做过的事项,先从自身出发,寻找解决之道,尝试许多方法,依然无解过后,再另寻他见。