【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
(下一步,进入到MAPPO算法原理学习环节,可跳转至【动手学强化学习】篇,共同学习!!!)
💐💐💐 完结撒花 💐💐💐
三、疑问
暂无。
四、总结
- 搭建一个学习环境,还是要以“目标导向”来实现,例如【OS安装与使用】这个系列就是为了运行MARL算法。学习的过程就像是 “搭积木” ,哪里缺失补充哪里,不要想着一口吃成一个胖子,一步一步解决当前存在的问题,脚踏实地。
- 遇到问题,不要总想着依赖其它人或物,先自身寻找答案,耐心一些,仔细一些。先确定问题本质,如若是创新性的难题,无人遇到过,可直接找 “大同行” 交流;如若是大家都做过的事项,先从自身出发,寻找解决之道,尝试许多方法,依然无解过后,再另寻他见。
相关文章:
【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…...
【Python爬虫(35)】解锁Python多进程爬虫:高效数据抓取秘籍
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
HarmonyOS 开发套件 介绍 ——上篇
HarmonyOS 开发套件 介绍 ——上篇 在当今科技飞速发展的时代,操作系统作为智能设备的核心,其重要性不言而喻。而HarmonyOS,作为华为推出的全新操作系统,正以其独特的魅力和强大的功能,吸引着越来越多的开发者和用户的…...
Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复
一、日志管理 (1)基本介绍 日志文件是重要的系统信息文件,记录了如用户登录、系统启动、系统安全、邮件及各种服务等相关重要系统事件在安全方面,日志也至关重要,它能记录系统日常发生的各类事情,可用于检…...
deepseek与其他大模型配合组合
DeepSeek与其他大模型的配合组合,展现了其在多个领域中的强大应用潜力和灵活性。以下是对DeepSeek与其他大模型配合组合的详细分析: 一、DeepSeek与华知大模型的组合 背景介绍: 华知大模型是同方知网与华为联手打造的,具备全学科…...
经验分享—WEB渗透测试中遇到加密内容的数据包该如何测试!
经验分享—WEB渗透测试中遇到加密内容的数据包该如何测试! 01 加解密的意义 现阶段的渗透测试让我发现越来越多的系统不只是在漏洞修补方面做了功夫,还对一些参数进行加密,干扰爬虫或者渗透测试的进行。 在我小白阶段看到下图这种加密方式…...
JUC并发—9.并发安全集合四
大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 4.JUC的各种阻塞队列介绍 (1)基于数组的阻塞…...
JSON格式,C语言自己实现,以及直接调用库函数(一)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下为你提供不同场景下常见的 JSON 格式示例。 1. 简单对象 JSON 对象是由键值对组成,用花括号 {} 包裹&…...
MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)
1、背景 1)因为项目要用这个库:MinkowskiEngine,Minkowski Engine — MinkowskiEngine 0.5.3 documentation 然后就用了之前安装好 MinkowskiEngine 的torch1.8.1,cuda11.1的环境。 2)自己的代码出现cuda不支持torch用gpu进行矩…...
Spring监听器Listener
目录 1、Spring监听器简介 2、事件(Event) 3、监听器(Listener) 3、事件发布器 4、监听器使用 4.1、自定义事件 4.2、自定义监听器 4.3、发布事件 4.4、测试 4.5、使用注解方式监听 4.6、异步事件处理 5、总结 1、Spri…...
【深度学习在图像配准中的应用与挑战】
图像配准在深度学习中的解决方案越来越多,尤其是通过卷积神经网络(CNN)和生成对抗网络(GAN)等方法,可以显著提升图像配准的效果,尤其是在处理复杂的非刚性变换和大范围的图像差异时。 1. 基于深…...
使用 Docker-compose 部署 MySQL
使用 Docker Compose 部署 MySQL 本文将详细指导如何使用 docker-compose 部署 MySQL,包括基本配置、启动步骤、数据持久化以及一些高级选项。通过容器化部署 MySQL,你可以快速搭建一个隔离的数据库环境,适用于开发、测试或小型生产场景。 关…...
blender笔记2
一、物体贴地 物体->变换->对齐物体 ->对齐弹窗(对齐模式:反方,相对于:场景原点,对齐:z)。 之后可以设置原点->原点--3d游标 二、面上有阴影 在编辑模式下操作过后,物体面有阴影。 数据-&g…...
特殊符号_符号图案_特殊符号大全
特殊符号↑返回顶部 © ℗ ร ಗ ย ☫ ౖ ஃ ⁜ ☊ ☋ ❡ ๑ ి ▧ ◘ ▩ ▣ ◙ ▨ ۞ ۩ ಔ ృ ☎ ☏ ⍝ ⍦ ▤ ▥ ▦ ✠ @ ಓ ↂ ూ ☮ ி ﺴ ✈ ✉ ✁ ✎ ✐ 〄 # ‡ ☪ ⌚ ☢ ▪ ▫ ✆ ✑ ✒ ☌ ❢ ▬ ☍ □ ■ ؟ ‼ ‽ ☭ ✏ ⌨…...
Unity学习part4
1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作,更方便,画布与游戏窗口的比例一般默认相同 如图所示,图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式:屏幕空间--覆盖,指画布覆盖在游戏物体渲…...
【AI绘画】大卫• 霍克尼风格——自然的魔法(一丹一世界)
大卫• 霍克尼,很喜欢这个老头,“艺术是一场战斗”。老先生零九年有了iphone,开始用iphone画画,一零年开始用ipad画画,用指头划拉,据说五分钟就能画一幅,每天早上随手画几幅送给身边的朋友。很c…...
MySQL日志undo log、redo log和binlog详解
MySQL 日志:undo log、redo log、binlog 有什么用? 一、前言 在MySQL数据库中,undo log、redo log和binlog这三种日志扮演着至关重要的角色,它们各自承担着不同的功能,共同保障了数据库的正常运行和数据的完整性。了解…...
C++中的指针
一.指针的定义 在C中,指针是一种特殊的变量,它存储另一个变量的内存地址。简单的说,指针是指向另一个数据类型的“指针”或“引用”,我们可以通过指针来间接操作其他变量的值。 指针的基本语法: 数据类型 *指针变量名 …...
拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!
2025年2月19日 知名博主Dwarkesh Patel对话微软CEO萨蒂亚纳德拉 在最新访谈释放重磅信号:AI将掀起工业革命级增长,量子计算突破引爆材料科学革命,游戏引擎进化为世界模拟器。 整个视频梳理出几大核心观点,揭示科技巨头的未来十年…...
智能算法如何优化数字内容体验的个性化推荐效果
内容概要 在数字内容体验的优化过程中,个性化推荐系统的核心价值在于通过数据驱动的技术手段,将用户需求与内容资源进行高效匹配。系统首先基于用户行为轨迹分析,捕捉包括点击频次、停留时长、交互路径等关键指标,形成对用户兴趣…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
