ubuntu 18.04.5中flow, smarts & xingtian 多智能体RL环境构建
由于需要在同一个主机上运行多个环境,不同的环境具有不同的依赖包。因此每个智能体环境单独构建一个虚拟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的github主页
Flow的Documents
Flow需要安装anaconda,但是anaconda中无非就是提供了多个包版本之间切换的管理器并预先安装好了一些设定的python功能包。其中
因此之后操作中直接使用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)错误。当出现此错误时,可以在以下几个源中切换解决,总有一个能够下载到包。
另外如果如果在一个源中一直卡在一个包无法下载也可以使用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 -jN
N至少剩下2个逻辑处理器线程防止出现全部系统资源被make占用导致桌面GUI无响应情况。
运行例程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设置如下
Ctrl/Command + Alt + A 便可以实现自动保存在picture文件夹下。
在运行下面的代码之前请确保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。
请注意:
pip install
语句最后增加 -i https://pypi.tuna.tsinghua.edu.cn/simple
可以直接从tsinghua镜像中下载。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
# build scenarios/loop
scl scenario build --clean scenarios/loop
# start supervisord
supervisord
在成功运行完成上述两个环境之后,目前再重新切换虚拟环境回flow并运行其例程会失败,因为apt install sumo
缺少某些文件,因此还需要切换回源码安装的sumo。
~/.bashrc
中以下两行export PATH="$HOME/sumo_binaries/bin:$PATH"
export SUMO_HOME="$HOME/sumo_binaries/bin"
cd ~/work/RL/env/sumo/build/cmake-build
sudo xargs rm < install_manifest.txt
sudo apt remove sumo
~/.bashrc
中以下两行的注释#export PATH="$HOME/sumo_binaries/bin:$PATH"
#export SUMO_HOME="$HOME/sumo_binaries/bin"
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
# 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