淘优惠

淘优惠

open ai浣跨敤鏂瑰紡 OPENAI缁勪欢瑕佸畨瑁呭悧

热门文章 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】


最近入门强化学习,看到openai的教程不错,就想通过这个练练手,但是对于新手来说,在这份教程最初的安装程序这块就碰了钉子,各种新老板本不兼容造成安装不成功踩坑无数,很容易被劝退,废话不多说下面就把我的安装过程记录一下。

系统:ubuntu 20.04 LTS

一、安装anaconda、spinning up等

首先安装python环境,按照spinningup的教程来就好,我直接去anaconda官网安装了最新版的,anaconda的安装在这里就不展开说了,网上教程很多搜一搜;之后的安装conda环境、OpenMPI、Spinning Up等就按照官网教程来就好。如下图:

以上没有任何难度,但是我发现再往下还有选填项安装

对于完美主义的我来说这个必须安排上,这可能也是大多数新手的心理吧,但是后来发现还是太年轻,这是一个大坑,苦水最后再倒吧,先把这部分成功安装的过程贴出来。

二、安装mujoco

1、首先mujoco 21年10月份就开源了,也就是说不需要申请密钥就能直接使用,但是,新版本spinning up教程里不支持。。。所以我们要安装老版本的,这里我下载的mujoco200

mujoco旧版下载

2、还有密钥license,现在开源后不需要用邮箱申请了,直接页面就能下载,并且使用期到2031年。

License

3、在home文件夹下创建隐藏文件.mujoco

mkdir ~/.mujoco

4、然后去下载文件夹找到下载好的mujoco压缩包并解压到home下的.mujoco里面,这里注意以下,此时在隐藏文件夹.mujoco里有解压好的文件mujoco200_linux,这里一定要把这个文件夹的名字改成mujoco200,删掉后面的linux,不然后面安装mujoco-py时识别不了。

接着把下载好的密钥mjkey.txt分别复制到.mujoco和mujoco200/bin里

cp mjkey.txt ~/.mujoco  cp mjkey.txt ~/.mujoco/mujoco200/bin

5、添加环境变量,这里我添加的条数比其他教程上的要多,是我经过反复试验比较才确定的这种添加最后才不会报错。

打开bashrc文本

gedit ~/.bashrc

在.bashrc文本里添加:

export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}  export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia  export PATH="$LD_LIBRARY_PATH:$PATH"  export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so

保存文件ctrl+s并退出文本,接着激活一下

source ~/.bashrc

6、测试mujoco200是否安装成功

cd ~/.mujoco/mujoco200/bin  https://zhuanlan.zhihu.com/p/simulate https://zhuanlan.zhihu.com/model/humanoid.xml

如果出现下图则安装成功

三、安装mujoco-py

1、进入第一部分创建好的conda环境,环境名称spinningup(名称按照自己设定的写)

conda activate spinningup  或者  source activate spinningup

2、运行下面代码

sudo apt update  sudo apt-get install patchelf  sudo apt-get install python3-dev build-essential libssl-dev libffi-dev libxml2-dev    sudo apt-get install libxslt1-dev zlib1g-dev libglew1.5 libglew-dev python3-pip

3、下载mujoco-py安装包,这里我们直接用git克隆过来

sudo apt install git  cd ~/.mujoco  git clone https://github.com/openai/mujoco-py  cd mujoco-py  pip install -r requirements.txt  pip install -r requirements.dev.txt  python setup.py install

如果上边pip安装的很慢,可以考虑换源,我用的是清华源,换源后再进行上边操作就快多了

pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

4、重启电脑

5、进入环境并输入如下命令

conda activate spinningup  sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3

我参考的教程[1]在这里是用的pip3 install -U 'mujoco-py<2.2,>=2.1',由于我安装的是旧版本的mujoco,试了后安装失败,后来知道,要安装旧版本的mujoco-py对应才行[2]

pip install mujoco_py==2.0.2.8

6、测试

cd ~/.mujoco/mujoco-py/examples  python3 setting_state.py

如果出现下图则安装成功

至此,mujoco200和mujoco-py安装成功

四、安装spinning up教程里与mujoco对应的gym

如果说之前的安装还算顺利,那么这一步就是全场最难的了,教程上直接简单一句命令pip install gym[mujoco,robotics]就完事了,可是你绝对会报错,因为不管是安装最新版的mujoco210还是老版的mujoco200到这一步都会报错,因为教程只支持mujoco150。。。可是150我还装不上,不知道是不是我系统太新了。。。直到我找到了另外一个教程[3],需要排除gym对mujoco_py依赖,输入下边命令完美解决。

pip install gym[all]--no-deps mujoco_py

然后输入教程的测试代码

python -m spinup.run ppo --hid "[32,32]" --env Walker2d-v2 --exp_name mujocotest

安装成功后会开始训练,时间不长

观看一下刚才训练的过程动画

python -m spinup.run test_policy /home/hxh/spinningup/data/mujocotest/mujocotest_s0

至此,教程的整个安装过程结束。


OpenAI gym:安装与简单使用

openai为什么在中国用不了,openai是什么意思,openai 马斯克,openai创始人
OpenAI健身车比赛 一个OpenAI Gym环境,用于模拟赛道上的自动驾驶汽车。 专为。 该项目仍在积极开发中。 是受欢迎的。 先决条件 通过运行以下命令,确保您正在使用python3并已安装了所有必需的python模块: pip install --no-cache-dir -r requirements.txt 跑步 在此存储库的根目录中运行python example.py以执行示例项目。 这样做将创建必要的文件夹,并开始训练简单的神经网络的过程。 训练完成后,将打开一个窗口,显示汽车使用训练后的模型在预先保存的轨道上导航。 要创建新轨道,请将new=True传递到环境的重置功能。 这样做会打开一个窗口,您可以在其中选择以下选项: 左键单击:删除块 右键单击:放回一个方块 S键:放下绿色启动块 F键:放下红色的完成框 ESC键:完成创建轨迹并运行模拟 创建的轨道将保存在

OpenAI 多智能体强化学习环境(multiagent-particle-envs)详解

openai大股东,openai services are not available,openai 百度百科,openai 马斯克

multiagent-particle-envsOpenAI开源的多智能体学习环境。

Link:

简称小球环境,也是MADDPG用的环境,基本上可以看做是较为复杂的 gridworld 的环境。 在这个环境涵盖了ma里的竞争/协作/通讯场景,你可以根据你的需要设置agent的数量,选择他们要完成的任务,比如合作进行相互抓捕,碰撞等,你也可以继承某一个环境来改写自己的任务。状态信息主要包括智能体的坐标/方向/速度等,这些小球的的原始动作空间是连续型的,不过在类属性里有个可以强制进行离散的设置,可以把它打开以后小球的动作就可以被离散为几个方向的移动了。此外,在这个环境中,小球之间的碰撞都都是模拟刚体的实际碰撞,通过计算动量,受力等来计算速度和位移。(以上内容摘自:https://www.zhihu.com/question/332942236/answer/1295507780,作者:咸鱼天,来源:知乎)。

OpenAI官方的环境,需要依赖gym 0.10.5。
如果不想使用,可以使用我的修改版本,对gym版本没有限制,并且在安装后可以直接导入make_env创建环境。参考百度飞桨开源的强化学习框架Parl为环境增加了obs_shape_n和act_shape_n属性,可以直接输出观测和动作维数。Link:安装:
1、下载文件
2、cd multiagent-particle-envs
3、pip install -e .
即可。
 
multiagent-particle-envs基于gym开发,所以环境创建流程基本于gym一致。multiagent-particle-envs包含9个环境,分别为simple、simple_adversary、simple_crypto、simple_push、simple_reference、simple_speaker_listener、simple_spread、simple_tag、simple_world_comm。其中simple环境仅作验证环境是否安装成功的测试使用,其余环境的介绍可以自行查看文档。
 
下面就simple_world_comm环境进行详细介绍。
 
 
simple_world_comm环境下,包含6个智能体(agent),2个食物(food)、2个树林(forests)和1个地标(landmarks)。6个智能体中有4个捕食者(adversaries)和2个被捕食者(good_agents)。4个捕食者中有1个领导者(leader)。所有智能体、食物、树林和地标统称实体(entity)。所有食物、树林和地标又统称地标(landmarks)。
捕食者:刚体,可移动,最大速度1(默认),加速度缩放系数3(默认,疑似),速度阻尼0.25,红色,其中领导者颜色较深一点,
被捕食者:刚体,可移动,最大速度1.3(默认),加速度缩放系数4(默认,疑似),速度阻尼0.25,小绿色
食物:刚体,不可移动,蓝色
树林:非刚体,不可移动,大绿色
地标:刚体,不可移动,黑色
捕食者 :协同队友,阻拦被捕食者靠近食物。

被捕食者 :在捕食者的拦截下,利用森林及障碍物来尽可能的靠近食物。

食物 :被捕食者的目标,靠近可获得奖励,奖励大小与靠近的距离有关。

树林 :可以对进入自身内部的智能体提供掩护,敌方无法获取单位的位置坐标,除非两个智能体位于同一个树林

地标 :不可通过的阻碍物。

被捕食者 :2个,通过靠近食物来获取奖励,速度较快,数量较少。

捕食者:4个,需要有一定协同能力,通过阻碍被捕食者获取奖励,速度较慢,但数量较多。

原论文中6个智能体分别用MADDPG算法来训练。即训练成本会随着智能体的数量增加,由于交流功能的存在,训练成本和智能体数量并不为线性关系。

见文件:multiagent-particle-envs/multiagent/scenarios/simple_world_comm.py

捕食者的观测状态为1*34的向量,具体为自身的速度(x和y两个方向,2)+自身的位置(x和y两个方向,2)+所有地标与自己的相对位置(地标位置-自身位置,10)+其他智能体与自己的相对位置(其他智能体位置-自身位置,10)+被捕食者的速度(4)+自身是否在树林里(2)+交流信息(4),数据格式float32,Box(34,)。非领导者的交流信息直接继承领导者的。

array([ 0.        ,  0.        , -0.81360341,  0.31675768,  0.25026168,        -0.12137332,  1.26442749, -0.7671077 ,  0.90388104, -1.00294841,         0.70155893, -0.62365125,  1.09197528, -0.92503425,  1.31906775,         0.53801265,  1.30256252, -0.5290839 ,  1.3105693 , -0.16847554,         1.34816312, -0.82404067,  0.61383961, -1.30914401,  0.        ,         0.        ,  0.        ,  0.        , -1.        , -1.        ,         0.        ,  0.        ,  0.        ,  0.        ])
 
被捕食者的观测状态为1*28的向量,具体为自身的速度(x和y两个方向,2)+自身的位置(x和y两个方向,2)+所有地标与自己的相对位置(地标位置-自身位置,10)+其他智能体与自己的相对位置(其他智能体位置-自身位置,10)+其他被捕食者的速度(2)+自身是否在树林里(2),数据格式float32,Box(28,)。
array([ 0.        ,  0.        , -0.1997638 , -0.99238633, -0.36357793,         1.18777069,  0.65058787,  0.54203631,  0.29004143,  0.3061956 ,         0.08771932,  0.68549276,  0.47813566,  0.38410976, -0.61383961,         1.30914401,  0.70522814,  1.84715666,  0.68872291,  0.78006011,         0.69672969,  1.14066847,  0.        ,  0.        , -1.        ,        -1.        ,  0.        ,  0.        ])

 

领导者:MultiDiscrete2,1*9维的向量。第一位无操作,2-5位给定智能体x,y正负方向上的加速度,6-9位为交流信息。

np.array([0, 1, 0, 1, 0, 1, 1, 1, 1],dtype=np.float32)

非领导捕食者:Discrete(5),1*9维的向量。第一位无操作,2-5位给定智能体x,y正负方向上的加速度。

np.array([0, 1, 0, 1, 0], dtype=np.float32)

 

版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。