ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建

ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建

Flow

虚拟环境构建

由于需要在同一个主机上运行多个环境,不同的环境具有不同的依赖包。因此每个智能体环境单独构建一个虚拟python环境。

首先安装虚拟环境相关依赖库。

sudo apt install python3.7
sudo apt install python3.7-venv
sudo apt install python3.7-dev
cd ~
mkdir -p ~/venv
cd ~/venv
python3.7 -m venv <virtual_env_name>

Note: python3.7-venv用于创建虚拟环境。
Note: python3.7-dev用于提供Python.h以及开发环境。

启动某个虚拟环境

source ~/venv/<virtual_env_name>/bin/activate
pip --version
pip list

之后在这个虚拟环境中安装的包将和主机完全不同。
此外,在虚拟环境中运行python3启动的仍然是主机中的默认python3版本。python3.7仍然需要使用python3.7

安装Flow的相关依赖

Flow主页

Flow的github主页
Flow的Documents

环境依赖

Flow需要安装anaconda,但是anaconda中无非就是提供了多个包版本之间切换的管理器并预先安装好了一些设定的python功能包。其中

  1. 多个版本之间切换功能可以直接通过上方python自带的虚拟环境功能提供,无需使用anaconda。
  2. 包可以直接自己安装也无需使用anaconda。

因此之后操作中直接使用python手动安装。

创建python3.7虚拟环境(注意python3.6虚拟环境中的最新版本pip3无法搜索到tensorflow=1.15.2,因此之后仅使用python3.7,也是anaconda的默认python版本)。

python3.7 -m venv ~/venv/python37_flow

创建新的工作目录并安装flow的相关依赖

cd ~/work/RL/env/
git clone https://github.com/flow-project/flow
cd flow
source ~/venv/python37_flow/bin/activate
pip --version #应当是python3.7对应的pip
python -m pip install --upgrade pip #升级pip以防止新版本检测不到
pip install --upgrade setuptools
pip install scikit-build #opencv-python安装的依赖
pip install -r requirments.txt

如果上述镜像网站下载速度过慢,可以使用-i https://pypi.tuna.tsinghua.edu.cn/simple从国内的pip镜像网站中下载对应软件包。
在安装过程中,使用清华镜像的确出现了不稳定的情况,即偶尔pip下载链接会断掉。在默认的pip源中下载会出现torch==1.4.0下载到一半连接超时(real timed out)错误。当出现此错误时,可以在以下几个源中切换解决,总有一个能够下载到包。

  1. 阿里云 http://mirrors.aliyun.com/pypi/simple/
  2. 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  3. 豆瓣(douban) http://pypi.douban.com/simple/
  4. 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
  5. 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

另外如果如果在一个源中一直卡在一个包无法下载也可以使用pip install ==直接下载,比如pip install torch==1.4.0

随后运行官方说明的步骤

pip install -e .

最后根据系统版本运行环境设置程序

cd ~/work/venv/source 
scripts/setup_sumo_ubuntu1804.sh

继续安装sumo并使用sumo验证当前flow是否正确安装。
sumo可以使用sudo apt install sumo直接安装,但是flow要求指明sumo的安装根目录export SUMO_HOME="$PWD/sumo",在apt install sudo方法安装时无该目录,因此转而采用GitHub源代码安装方式,即flow指明的sumo安装方式,如果不小心采用apt install sumo方式安装了sumo,使用sudo apt remove --purge sumo来删除sumo中的全部文件。删除之后需要重新启动terminal以更新系统应用的启动PATH。

 source ~/venv/python37_flow/bin/activate
 sudo apt-get install cmake python g++ libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev swig
 git clone --recursive https://github.com/eclipse/sumo
 export SUMO_HOME="$PWD/sumo"
 mkdir sumo/build/cmake-build && cd sumo/build/cmake-build
 cmake ../..
 make -j$(nproc)
 pip install sumolib
 sudo make install
 sudo ldconfig

安装后需要重新启动terminal
sudo make -jNN至少剩下2个逻辑处理器线程防止出现全部系统资源被make占用导致桌面GUI无响应情况。
ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建_第1张图片

运行例程ring:

$ python examples/simulate.py ring
Round 0, return: 424.12213238365126
Average, std returns: 424.12213238365126, 0.0
Average, std velocities: 2.883939027587335, 0.0
Average, std outflows: 0.0, 0.0
Total time: 23.562071561813354
steps/second: 383.9111238481452

附:CSDN博客中的图片不支持直接从剪切板复制粘贴。其仅支持从本地文件或者网络url中选择,那么在ubuntu中截屏一个区域就需要将其保存下来,可以通过设置shortcut来实现。
shortcut设置如下
ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建_第2张图片
Ctrl/Command + Alt + A 便可以实现自动保存在picture文件夹下。

SMARTS

在运行下面的代码之前请确保FLOW模块已经可以正常工作。
下面构建smarts。 SMARTS github主页

如果已经完成了FLOW的构建,请按照SMARTS官网上面的步骤卸载sumo并重新安装SMARTS的安装方式重新安装sumo,卸载sumo的方式为在suomo的根目录下运行sudo xargs rm < install_manifest.txt,同时需要将~/.bashrc中以下两行注释成以下状态

#export PATH="$HOME/sumo_binaries/bin:$PATH"
#export SUMO_HOME="$HOME/sumo_binaries/bin"

随后按照Setup安装SMARTS

cd [project]
./install_deps.sh
python3.7 -m venv ~/venv/smarts
source ~/venv/smarts/bin/activate
python -m pip install --upgrade pip #升级pip以防止新版本检测不到
pip install --upgrade setuptools
pip install scikit-build #opencv-python安装的依赖
pip install sumolib
pip install traci
pip install -r requirements.txt
pip install -e .[train]
make test

install_deps.sh运行完成成功后在命令行中会显示补充sumo环境变量的创建指令,运行后便可以启动sumo。
请注意:

  1. flow和SMARTS所需要的sumo有所不同。为了保险起见,用什么安装什么就行。
  2. 无论使用哪个pip源都有一定概率出现real time out的问题。如果出现,多多尝试即可。在pip install语句最后增加 -i https://pypi.tuna.tsinghua.edu.cn/simple可以直接从tsinghua镜像中下载。
  3. make test在我的机器上有一个fail的测试用例 smarts/env/tests/test_rllib_hiway_env.py::test_rllib_hiway_env smarts/env/tests/test_social_agent.py::test_social_agents
    运行以下程序来验证SMARTS是否正确安装
# build scenarios/loop
scl scenario build --clean scenarios/loop

# start supervisord
supervisord

ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建_第3张图片

切换sumo的方法。

在成功运行完成上述两个环境之后,目前再重新切换虚拟环境回flow并运行其例程会失败,因为apt install sumo缺少某些文件,因此还需要切换回源码安装的sumo。

从 FLOW -> SMAR需要运行

  • 首先注释~/.bashrc中以下两行
export PATH="$HOME/sumo_binaries/bin:$PATH"
export SUMO_HOME="$HOME/sumo_binaries/bin"
  • 删除sumo安装的环境变量
cd ~/work/RL/env/sumo/build/cmake-build
sudo xargs rm < install_manifest.txt

从SMARTS-> FLOW

  • 删除sumo安装文件
sudo apt remove sumo
  • 首先解除~/.bashrc中以下两行的注释
#export PATH="$HOME/sumo_binaries/bin:$PATH"
#export SUMO_HOME="$HOME/sumo_binaries/bin"

使用QMIX训练

python3.7 -m venv ~/venv/python37_pymarl
source ~/venv/python37_pymarl/bin/activate
cd ~/work/RL/env/
pip install wheel
git clone https://github.com/ying-wen/pymarl
cd pymarl
pip install -r requirements.txt
pip install gym 
cd ../SMARTS
pip install enum34
#pip installsmac sacred cloudpickle==1.3.0 distributed==2.20.0
cd ~/work/RL/env/SMARTS
pip install --upgrade pip
pip install --upgrade setuptools
pip install -e .[train]
pip uninstall requests six matplotlib scipy numpy pytest jsconpickle
pip install jsconpickle==1.3 pytest==6.0.0 requests==2.2.5 numpy==1.16.0 scipy==1.4.1 six==1.12.0 matplotlib==2.2.5 requests==2.22.0

XINGTIAN

# create virtual environment
python3.7 -m venv ~/venv/python37_xt
source ~/venv/python37_xt/bin/activate

# ubuntu 18.04
sudo apt-get install libopencv-dev redis-server -y
pip install opencv-python

pip install zmq h5py gym[atari] tqdm imageio matplotlib==3.0.3 Ipython pyyaml tensorflow==1.15.0 pyarrow lz4 fabric2 line_profiler redis absl-py psutil torch==1.3.0 torchvision=0.4.1.dev1 tf-models-official==0.0.3.dev1 mmcv pareto 

pip install -e .

运行quick start,在xingtian/docs/user.en.md路径中。

cd ~/work/RL/env/xingtian
vim ./docs/user.en.md
xt_main -f examples/cartpole_ppo.yaml

运行完成最后一个指令后,在terminal中会输出models path,比如/home/jimmy/xt_archive/xt_CartPole-v0_PPO+20201119220004,将其输出的model path添加到examples/cartpole_ppo.yaml(下方语句添加到该文件中)

test_model_path: /home/jimmy/xt_archive/xt_CartPole-v0_PPO+20201119220004/models

随后运行如下语句以评估cartpole_ppo的功能。

xt_main -f examples/cartpole_ppo.yaml -t evaluate

你可能感兴趣的:(科技,linux,人工智能,强化学习,自动驾驶)