各种常用环境配置
本文总结了在深度学习算法研发过程中常用的环境配置方法,包括VS Code 配置SSH,Docker使用,以及Conda常用指令。
VS Code中配置远程连接
假设账户为:
账户名: abc
密码: abc001
服务器: 180.180.180.180
端口: 1000
外网
首先先本地配置ssh-key
ssh-keygen -f ~/.ssh/abc_key
ssh-copy-id -p 1000 -i ~/.ssh/abc_key abc@180.180.180.180
进入vs code中,安装remote-ssh插件,然后进入到~/.ssh/config文件(点击插件右上方设置按钮进入)
文件中输入如下内容即可完成配置
Host gpu
HostName 180.180.180.180
User abc
Port 1000
IdentityFile ~/.ssh/abc_key
内网
如果是内网访问,没有端口号的情况下:
假设账户为:
账户名:abc
密码: abc001
服务器: 180.180.180.180
端口: 1000
配置本地ssh-key,注意这里无需-p 和端口号
ssh-keygen -f ~/.ssh/abc_key
ssh-copy-id -i ~/.ssh/abc_key hpb@180.167.240.213
vs code中的文件也无需端口号:
Host gpu
HostName 180.180.180.180
User hpb
IdentityFile ~/.ssh/hpb
错误信息
如果报错,尝试删除linux用户根目录下的.vscode_server文件夹
Docker 使用
docker是一个容器,镜像就是一个操作系统,容器就是一个虚拟机,所以使用docker的时候,需要下载一个镜像(配置运行环境的操作系统),然后开启一个容器(虚拟机)加载这个镜像,然后进入容器中,容器内就是一个独立的操作系统,无论怎么操作都跟外部系统无关。
下载镜像
下载镜像,之后可以使用下面命令加载一个镜像
nvidia-docker load --input digits.17.04.tar
打包一个镜像
nvidia-docker save --output ngc-tensorflow.image.tar nvcr.io/nvidia/tensorflow:19.03-py3
基本操作
创建容器
启动一个docker容器,以 nvcr.io/nvidia/pytorch:20.02-py3 镜像为例
nvidia-docker run -it --name torch_all_pengbo -v ~/dataset:/dataset -p 4422:22 nvcr.io/nvidia/pytorch:20.02-py3
下面是容器运行参数,其中需要注意的是:
1. 通过-v设置容器外和容器内部文件夹的关联
2. -p 设置容器外和容器内部端口的映射
3. 使用--name为容器设置一个名称,方便后续查看和操作,名称要包含自己的名字,以及所使用的的GPU的编号,方便管理员管理
其中,文件夹关联映射主要是因为docker删除后,文件全部丢失,建立映射之后,可以避免数据丢失。
配置远程链接
此步骤不是必须步骤,如果需要远程直接连入docker里面的操作系统,那么需要下面步骤。
创建完docker之后,就相当于进入了一个全新的linux系统,这个时候要进行一下几个步骤,为了配置远程环境
第一步:通过docker attach XX 进入 XX docker的控制台,然后进行如下设置
apt-get update #更新系统
apt install openssh-server # 安装ssh-server
passwd #更改密码
配置权限,可以使用root直接进行ssh
vim /etc/ssh/sshd_config , PermitRootLogin yes 或者创建一个新用户
service ssh start
如果不想ssh直接连接docker容器,可以直接连上服务器写程序,将程序放置到共享目录中,然后在进入docker执行,目测这种方法更加方便,需要注意的是在docker里面新建的文件默认是root权限,然后在dgx中进行更改的时候会发现没有权限,所以在docker里面新建的文件需要更改一下权限 (chown -R 1021:1021 model #根据实际情况自行更改命令)
如果不想root直接使用ssh ,可以新建一个用户
useradd -m -G sudo -g staff user
然后本地就可以ssh直接连上docker的这个环境了
ssh -p 4422 root@192.168.15.1
注意这里需要加入端口号,另外,如果新建了一个容器的话,需要在本地将user/.ssh/known_hosts文件里面的host信息删掉,不然会报错。
容器管理命令
下面的乱码是容器编号,如果创建容器的时候,设置了容器名字,就可以直接用名字代替
查看所有运行的容器: nvidia-docker ps –a
Conda常用命令
更新包
conda update package_name
conda update --all
安装包
conda install numpy scipy pandas
conda install numpy=1.10
删除包
conda remove package_name
创建环境
conda create -n env_name list of packages
conda create -n py3 python=3
环境共享
conda env export > environment.yaml
conda env create -f environment.yaml
对于不用conda的人的共享环境方法
pip freeze > requirements.txt
pip install -r requirements.txt
列出已经安装所有环境
conda info --envs
删除环境
conda env remove -n env_name