之前服务器上的anaconda环境崩了,重装anaconda后,发现对于很多conda命令还是不熟悉,所以在此记录常用的conda命令,本教程适合人群:linux服务器上,安装完anaconda/miniconda后,不知道怎么操作这个环境来运行一个开源的深度学习项目,本文以sdnet项目为例
conda info --env
conda activate sdnet
conda deactivate
同理,退出环境后,前面的提示会变为base,表示回到了根环境下面
# 大部分包是通过conda命令安装的,所以conda list命令查看到的包是最全的,pip list也可以查看包,不过没有conda全
# pip只有当前虚拟环境下的, conda 除了虚拟环境下的还有关联文件下的
conda list
conda search 包名
# 这个是linux命令,不是conda命令,只不过方便查看conda执行过的命令
history
初始时,没有配置国内镜像地址,下载大部分包都会很慢,所以需要配置下载包的镜像源文件,这一步不需要在虚拟环境中,直接base环境中配置,激活进入其他环境中也可以使用base中配置好的镜像地址
无论创建多少个虚拟环境,镜像源都是共用的
conda config --show-sources
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 常用的一般是以上3个清华源就够了,以下是中科大的镜像源,供参考
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes
配置channels方法2
没有配置以上channels时,用户目录下不会有.condarc文件,配置完一条以后,会出现.condarc文件
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
vi .condarc
# 用vi命令在.condarc文件中添加其他channels
conda config --remove-key channels
# 因为配置channels时,设置的channels都配置在.condarc中,所以直接删除.condarc文件即可(linux命令)
rm .condarc
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch
使用永久源
在用户目录下,新建.pip文件夹,在.pip文件夹下,创建pip.conf文件,写入以下内容
pip镜像源的配置了参考这篇文章
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
配置完镜像源后,可以方便的进行包的升级/降级以及下载
conda update conda
conda upgrade --all
这里的sdnet是指创建的虚拟环境名称
conda create -n sdnet python=3.8.5
在虚拟环境中下载包
# 进入虚拟环境
conda activate sdnet
# 下载各种包
pip install allennlp==1.5.0
pip install numpy==1.19.1
pip install transformers==4.6.1
pip install torch==1.7.1+cu110 -f https://download.pytorch.org/whl/torch_stable.html
把以上pip install命令写到env.sh文件中,然后用linux的bash env.sh命令执行这个文件,相当于批量执行安装包的命令
# 最直观的区别在于指定安装的包的版本的时候,pip需要用==,conda需要用=,比如
pip install python==3.8
conda install python=3.8
# 某些包只支持pip安装,如果要使用conda安装,包名会产生变化(对于某些特殊的包来说)
# 1 PIL包只支持python2.7,和它作用相同的一个包是pillow,可以
conda install pillow
# 2 安装cv2失败
conda install opencv-python
# 3 安装sklearn
conda install scikit-learn
# 4 安装jupyterthemes(只能pip)
pip install jupyterthemes
有时候不知道什么原因,某个虚拟环境出了问题跑不了程序,最简单的办法就是卸载重建
conda remove -n sdnet --all
重要项目的环境,如果服务器需要维护调整显卡,我们就需要把这个项目的环境迁移到另一台服务器上,如果重复以上步骤非常麻烦,所以可以把该项目依赖的虚拟环境导出,并在新服务器的conda环境中重新导入
conda env export > env.yaml
会生成一个env.yaml文件,将其复制到目标服务器上并在目标服务器上配置好conda环境后,执行导入环境操作
conda env create -f env.yaml
以上方法只能导出conda命令直接安装的包,而pip安装的包无法导出,所以还需要把pip涉及到的包导出
pip freeze > env_pip.txt
本质上就是按照文件重新安装一遍,导出的env_pip.txt文件需要先过一遍,筛掉一部分重复的包/无用的包
pip install -r env_pip.txt
配置完以上环境后,我们可以用sdnet环境运行深度学习项目(这里以sdnet为例)
一般来说按照项目的readme文件配置所需要的包,在该环境中项目就可以直接跑起来,如果报错,大部分都是因为安装的包版本不支持
python main.py -dataset re3d -K 5 -sdnet -cuda 0
如果关闭xshell,则刚刚跑的代码也会随之关闭(暂停),所以需要一种手段,把程序扔到后台去跑,这样软件无论是否关闭都不会影响到正在运行的程序
nvidia-smi
gpustat
conda activate sdnet
创建虚拟终端,名字是test
screen -S test
运行程序
python main.py -dataset re3d -K 5 -sdnet -cuda 0
保存虚拟终端并挂起:ctrl+a+d(快捷键)
预计程序1天跑完,1天以后,打开xshell,输入命令查看当前后台的会话
screen -ls
会返回目前已经创建的所有虚拟终端,名字由ID.name组成(name是创建虚拟终端时指定的名字),输入以下命令回到指定的虚拟终端中,可以查看代码的运行情况
screen -r ID