当前位置: 首页 > news >正文

【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)

文章目录

  • 一、待解决问题
    • 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算法。学习的过程就像是 “搭积木” ,哪里缺失补充哪里,不要想着一口吃成一个胖子,一步一步解决当前存在的问题,脚踏实地。
  • 遇到问题,不要总想着依赖其它人或物,先自身寻找答案,耐心一些,仔细一些。先确定问题本质,如若是创新性的难题,无人遇到过,可直接找 “大同行” 交流;如若是大家都做过的事项,先从自身出发,寻找解决之道,尝试许多方法,依然无解过后,再另寻他见。

相关文章:

  • python学习
  • Jenkins整合Jmeter实现接口自动化测试
  • nacos编写瀚高数据库插件
  • 【Linux专栏】rsync 同步文件时自动创建目录
  • VMWare安装Debian操作系统
  • Could not download npm for node v14.21.3(nvm无法下载节点v14.21.3的npm)
  • HTTP 常见状态码技术解析(应用层)
  • Blender小技巧和注意事项
  • 如何在 Linux 内核中实现自定义协议族并使用 Socket 通信
  • c++ std::vector使用笔记
  • 【联盛德 W803-Pico 试用】简介、工程测试
  • 安装可视化jar包部署平台JarManage
  • 【算法系列】leetcode1419 数青蛙 --模拟
  • ROS2下编写package利用orbbec相机进行yolov8实时目标检测
  • iOS端集成人脸识别功能、人证合一、JavaScript接口集成
  • ChatGPT超级AI对话模型 黑客十问十答
  • Hadoop-HA集群部署
  • AI刷题-多零件流水线优化问题
  • vue 判断一个属性值,如果是null或者空字符串或者是空格没有值的情况下,赋值为--
  • 【并发压测】高并发下Linux流量监控
  • 网站特效网/百度推广中心
  • 海南住房和城乡建设网站/互联网平台
  • 网站后台代码如何做/优化关键词排名
  • 网站本地被劫要怎么做/深圳市企业网站seo营销工具
  • 响应式网站建设信息/seo工具有哪些
  • 做现货黄金网站/百度的主页