服务器环境配置(含awnas环境搭建)

2021/2/6

机缘巧合需要重新配一次服务器,环境打包也不会使,只好从头再来。

免密登录

不会真有人每次登录之前都输密码吧。
本地客户端生成公私钥:(一路回车默认即可,什么时候换电脑可以考虑进行233)

ssh-keygen

该命令在~/.ssh目录下创建了两个文件id_rsa(私钥)和id_rsa.pub(公钥)。
接下来把公钥传到对应的服务器上,默认已经配置好了ssh config:

ssh-copy-id -i *public_key_path*  sxs-eva7(for example)

之后就可以免密登录了,或者直接在要免密登录的服务器上cd ~/.sshvi config把本地的公钥粘进去,但是对于没有记录的服务器这样似乎缺了什么而不能免密登录(比如在eva7上的尝试)。

准入/出认证

两种方法,一种是在学校的网络自助服务网站(需要校内VPN)登录(账号*-**20,经典密码统一大小写),然后进行准出(校外)、上线操作。已知的ip对应关系为:

eva8 - sxs container: 166.111.224.133
eva8 - foxfi container: 166.111.224.130
eva10 - foxfi container: 166.111.224.126

非常麻烦,另一种方法是登录container之后使用下面的命令:

~/auth-thu.linux.x86_64 auth

在后面出现的User/Password里填入上面的账号密码就行。

服务器代理设置

2023/11/27 update
Finally solve this!


  • 首先,需要在ssh config文件里设置Remote Forward字段:
Host xxx
    HostName xxx
    Port xxx
    User xxx
    RemoteForward 127.0.0.1:12345(**remote_server_port**) 127.0.0.1:7890 (**local_proxy_port**)  
  • 在登陆到服务器之后,需要手动设置代理端口(把数据发送到服务器本地的这个端口),建议是在~/.bashrc文件里加上这么三行(不然就是临时的辣):
export http_proxy="http://127.0.0.1:12345" (**remote_server_port**)
export https_proxy="http://127.0.0.1:12345" (**remote_server_port**)
export all_proxy="socks5://127.0.0.1:12345" (**remote_server_port**)
  • 测试通没通的时候别用ping www.google.com!直接wget www.google.com

tmux设置

沿用TC的设置。请参考这个文档

bash快捷键设置

首先到bashrc里:vi ~/.bashrc,找到合适的位置,添加常用快捷键,比如:

alias nv="watch -n 0.1 -d nvidia-smi"

保存退出后记得source ~/.bashrc

GCC安装

eva9服务器上似乎有gcc,不用自己安装。
在eva8上跑awnas的时候需要gcc编译,要自己安装:

sudo apt-get install gcc

Anaconda安装

在上外网前一定要记得检查联网状态,进行准入准出认证!

创建一个文件夹并进入该路径:

mkdir miniconda
cd miniconda

下载miniconda的安装包:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

执行bash命令:

bash Miniconda3-latest-Linux-x86_64.sh

出现软件服务条款,按ctrl+C跳过,输入yes同意上述条款。接下来一路回车+yes就好。
安装之后conda命令都无法使用,需要重启终端才能使用conda。发现默认激活了base环境,修改一下默认配置:

conda config --set auto_activate_base false

*可选步骤:将conda和pip换源成清华源,但是不知道实验室的服务器是不是商用专线/conda的清华源已经挂掉了,所以这一步需要观察:
观察结果:不需要换源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

awnas环境搭建

首先创建一个新环境:

conda create -n awnas python==3.7.3 pip

找一个文件夹clone一下awnas工程:

git clone https://github.com/walkerning/aw_nas_private.git

aw_nas_private目录下执行pip命令:

pip install -r requirements.txt

然后出现了久违的错误,甚至忘了还有这种事来着:

解决方法:自己安装torch(1.2.0),记得激活awnas环境

pip install torch===1.2.0 -f https://download.pytorch.org/whl/torch_stable.html

遇到了一个非常离奇的BUG:eva8和eva9中的环境里安装的包和版本完全一致(不一致的只有setuptools包,但这个是包管理器,理应没有影响):

  • eva8环境:
  • eva9环境:

但实际上出现了这个问题:

网上说这是因为numpy版本过低导致的,实际上升级numpy确实也能解决这个问题:

pip install --upgrade numpy

但是原理非常不理解…

更新numpy包后解决了这个问题:

最后记得在安装awnas生成的./awnas/data下生成软链接(以eva7上的imagenet为例):

ln -s /data/eva_share/datasets/ILSVRC2012/ILSVRC2012_img_train /home/shixiangsheng/awnas/data/imagenet/train  
ln -s /data/eva_share/datasets/ILSVRC2012/ILSVRC2012_img_val /home/shixiangsheng/awnas/data/imagenet/test  

litte tip: 删除软连接用rm /home/shixiangsheng/awnas/data/imagenet/test,千万不要在后面加/rm /home/shixiangsheng/awnas/data/imagenet/test/

更新一些bug

  • 在eva7上装好环境执行训练命令,训练卡在了:
04/10 06:17:17 PM main                INFO: Component [final_model] type: bnn_final_model

GPU显存占用也只有300M左右,目前发现的问题是安装awnas的位置可能有问题,现在是在master上装的,但是bnn训练显然不能用master上的组件,所以改用bnn branch的awnas安装。

  • RuntimeError: CUDA error: no kernel image is available for execution on the device
    这个问题是使用的torch-CUDA版本错误所致。在EVA8上装的torch版本是1.7.0,CUDA版本是10.1(对应RTX2080Ti),但是EVA7上的3090最低仅支持CUDA11,因此需要把torch更新成1.7.0-cu11版本:
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html