GAIL之imitation代码运行(含PBS)

本文介绍了openAI的一篇论文对应的代码的运行

论文名称:《Generative adversarial imitation learning》
附上github链接:https://github.com/openai/imitation
大概步骤如下

  • 代码下载
  • 安装各种依赖
  • 安装仿真软件
  • 生成训练数据
  • PBS介绍
  • 训练及评估

1.代码下载

git clone https://github.com/openai/imitation.git

2.安装依赖

git上提出了以下的依赖要求

OpenAI Gym >= 0.1.0, mujoco_py >= 0.4.0
numpy >= 1.10.4, scipy >= 0.17.0, theano >= 0.8.2
h5py, pytables, pandas, matplotlib

其实直接跑scripts/im_pipeline.py文件也可以,不通过的部分会报错,比如No module named h5py,对应的解决措施就是

sudo apt-get install libhdf5-dev
sudo apt-get install python-h5py

类似的,可以用sudo apt-get install python-yaml安装yaml依赖
对于OpenAI Gym,pytables,theano等我是使用pip install的指令进行安装的,例如

pip install gym
pip install tables

其中theano的安装过程网上有详细教程,参考链接
http://deeplearning.net/software/theano/install_ubuntu.html

3.安装仿真软件

mujoco是一个非开源的仿真软件,但是要下载并使用它也是非常方便的,在你安装完相关的依赖,运行程序的时候,会发现仍有报错提示,关于mujoco的,访问他提供的网址,下载相应版本的mujoco并解压缩。接下来还有个步骤非常关键,因为不是免费开源的,需要申请key。访问网址https://www.roboti.us/license.html,填上姓名和邮箱地址,并下载它提供的文件到本地,我是linux系统,用chmod +x getid_linux加上执行权限,执行获得本机的id,注意每个电脑对应的id都是不一样的,这直接关系到你后面申请到的key是否有效。
填上id提交以后,会收到邮件,把mjkey.txt移动到mujoco的bin文件下,并在.bashrc中填写下列命令

export MUJOCO_PY_MJKEY_PATH=/home/username/imitation/mujoco/mjpro131/bin/mjkey.txt
export MUJOCO_PY_MJPRO_PATH=/username/imitation/mujoco/mjpro131

至此,仿真软件安装完毕了。

4.生成训练数据

做完上面几个步骤,应该是可以运行im_pipeline.py文件了,注意要在主目录下面运行

python ./scripts/im_pipeline.py ./pipelines/im_pipeline.yaml 0_sampletrajs

im_pipeline.yaml是参数文件,对应usage中的spec,当然作者也提供了其它几个spec,自选,后面的0_sampletrajs代表从expert data中进行采样,用于我们后面的训练。
如果这一步有问题,那么说明前面的安装还存在问题。
如果出现no module named policyopt的问题,那么你需要将当前的imitation文件夹这个目录添加到python路径中。

方法一:
在报错的py文件中
import sys
sys.path.append(“path/to/your/code”)
方法二:
在.bashrc文件中添加
export PYTHONPATH=/path/to/your/code:$PYTHONPATH
相对而言,方法二更方便一点,别忘了source一下

5.PBS部分

PBS全称是Portable Batch System,最初由NASA的Ames研究中心开发,为了提供一个能满足异构计算网络需要的软件包,特别是满足高性能计算的需要。
这里用到PBS原因很简单,有那么多的environments,还要比较不同的algorithms,训练时还对num_of_trajs进行了限制,他们的组合是乘法关系,我们会得到一系列的训练任务,一个个去敲打命令无疑很麻烦,用批处理系统就很省事(-。-其实我在搞懂pbs的时候也非常费力,说不定还不如一个个去训练。)
5.1安装

sudo apt-get install torque-mom torque-server torque-client torque-scheduler

5.2节点配置

host $HOSTNAME

查看自己的hostname,需要修改/etc/hosts这个文件,可以改成下面的形式,server命名为Node1
127.0.0.1 Node1 localhost
#127.0.1.1 Node1

sudo echo $HOSTNAME > /etc/torque/server_name
sudo echo $HOSTNAME > /var/spool/torque/server_name
sudo pbs_server -t create
sudo echo $HOSTNAME np=grep proc /proc/cpuinfo | wc -l > /var/spool/torque/server_priv/nodes
然后,在root权限下启动相应的进程
sudo qterm
sudo pbs_server
sudo pbs_mom
如果运行中出现什么问题,ps一下,kill所有pbs带头的进程,然后重新开启运行。
ps aux | grep pbs

参考链接:https://www.douban.com/note/239136237/
http://blog.sina.com.cn/s/blog_4a0a8b5d0102v2p1.html
5.3队列配置
这一部分非常关键,前面仅仅是启动了队列,但是使用怎样的队列还需要我们自己根据程序需要进行配置

#命名队列为batch
qmgr -c “create queue batch queue_type=execution”
qmgr -c “set queue batch resources_default.walltime = 72:00:00”
qmgr -c “set server query_other_jobs = True”
#资源配置
qmgr -c “set queue batch resources_max.ncpus=6”
qmgr -c “set queue batch enabled = True”
qmgr -c “set queue batch started = True”
qmgr -c ‘set server default_queue = batch’
#默认队列设置
qmgr -c “set queue batch resources_default.neednodes=Node1”
#自动调度,没有这句话作业提交以后不会运行,始终处于排队状态
qmgr -c “set server scheduling = True“

按照这个步骤,我们的pbs部分配置也完成了,如果有任何问题可以参考5.2中两个网址,以及这个链接提供pbs很多命令的用法http://blog.sina.com.cn/s/blog_48d42f430100s7u3.html

5.4补充

python ./scripts/im_pipeline.py ./pipelines/im_pipeline.yaml 1_train

如果这时候我们执行这条命令,还是会有些问题,我们需要对源代码进行修改
对im_pipeline.py中#PBS -e /dev/null后面增加#PBS -V,不然还是会出现无法import environments或者policyopt等问题,就是把一些环境变量都加进去

no feasible node

如果没有可行的节点,那么说明你配置的资源出现问题,去看看最开始的server的设置,确保你能提供相应的处理器以及内存等

此外,im_pipeline.yaml中100行的queue名称也需要更改,默认的是atlas,而我使用默认的队列名为batch,两者要一致

6.训练及评估

python ./scripts/im_pipeline.py ./pipelines/im_pipeline.yaml 1_train
python ./scripts/im_pipeline.py ./pipelines/im_pipeline.yaml 2_eval

你可能感兴趣的:(GAN)