在学习过程中遇到sumo仿真过程中需要结合nni来训练数据,自己电脑长时间运行程序也不太现实,于是写一篇文章来记录自己的摸索过程,下次再使用服务器训练的时候也能想起来怎么做。
本文主要解决两个问题:
1、如何在服务器中运行nni并使用nni中的webui可视化训练过程
2、如何在服务器中运行sumo仿真软件相关的程序
之前查询了相关资料,很少有sumo运行在服务器中运行的文章,一度怀疑sumo的程序能不能在服务器上运行,答案是肯定的。
我的训练程序不需要太多的训练资源所以直接申请了阿里云的学生免费服务器,申请地址贴在这里:
我使用的是ubuntu20.04系统,因为Ubuntu系统对安装sumo比较友好,等服务器准备好了以后就可以着手进行环境的布置,选择远程连接服务器。
第一步:安装Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
bash Anaconda3-5.3.0-Linux-x86_64.sh
之后不停地按回车输yes就可以成功安装。接着将anaconda加入环境变量中:
vim ~/.bashrc
按i将其变为编辑模式后在最后一行添加以下内容(username改为你当前的路径):
export PATH=/home/username/anaconda3/bin:$PATH
按esc后输入:wq按回车退出文件,最后输入:
source ~/.bashrc
更新环境变量,此时可以用conda info --envs检查一下是否成功。
第二步:创建一个新的运行环境(可以直接使用base环境如果懒得添加的话)
conda create -n nni python==3.8
conda activate nni
我给新环境命名为nni,之后安装一些依赖包
第三步:安装依赖
在自己的环境中安装以下包,这是我运行sumo仿真程序需要使用的部分库,你们可以根据需求添加,这里需要注意的是nni的2.10版本会出现很多意想不到的错误,所以推荐使用nni2.5版本,同时指定一些包的版本,如果运行程序过程中出现问题可以在nni的论坛上查找,这里po出地址:nni-github-issue
pip install nni==2.5
pip install typeguard==2.13
pip install filelock==3.10
pip install sumolib
第四步:安装sumo
sudo apt-get update
sudo apt-get install sumo sumo-tools sumo-doc
将sumo加入到环境变量中,方法同第一步,在最后一行添加:
export SUMO_HOME = /usr/share/sumo/tools
添加之后可以检查sumo是否成功安装:
显示如上即成功安装。
第五步:将服务器端口映射到本地端口
想要在本地打开服务器上运行nni的webui,需要将程序中使用的端口与本地端口建立连接,这样就可以在本地访问指定端口从而监视整个训练的过程
打开本地cmd,输入:
ssh -p 服务器端口(一般为22) -L 8012:127.0.0.1:8012 用户名@服务器ip地址
我这里需要映射8012端口,之后就可以打开127.0.0.1:8012监视程序运行状态
建立连接以后,需要将程序上传到服务器中,我这里使用pycharm中的服务器连接功能,在setting中选择Python Interpreter为服务器中的环境,如下图所示:
之后选择Tools中的deployment上传程序到服务器:
找到程序所在的路径,执行python指令,正确运行的情况下显示如下:
按住CTRL点击http://127.0.0.1:8012,即可在webui看见训练过程
至此,记录一下整个过程,希望可以帮助遇到同样问题的你。