conda命令速查,深度学习项目运行

目录

  • 1. 说明
  • 2. conda查询命令
  • 3. 国内镜像源配置
    • 3.1 conda镜像源配置
    • 3.2 pip镜像源配置
  • 4. 包的升级/降级
  • 5. 创建虚拟环境
    • 5.1 包的下载方法1
    • 5.2 包的下载方法2
    • 5.3 pip和conda下载包的区别
  • 6. 虚拟环境崩溃—卸载
  • 7. 环境导出,重新安装
    • 7.1 导出当前环境
    • 7.2 导入环境操作
    • 7.3 导出pip安装的包
    • 7.4 安装pip相关包到目标机器
  • 8. 深度学习项目运行
  • 9. screen 后台运行代码
  • 10. 遇到的问题

1. 说明

之前服务器上的anaconda环境崩了,重装anaconda后,发现对于很多conda命令还是不熟悉,所以在此记录常用的conda命令,本教程适合人群:linux服务器上,安装完anaconda/miniconda后,不知道怎么操作这个环境来运行一个开源的深度学习项目,本文以sdnet项目为例

2. conda查询命令

  • 查询目前anaconda环境下所有的虚拟环境,如果没有建立虚拟环境的话只有base环境,所有虚拟环境相关的文件都在envs文件夹中
conda info --env

这里我新建了3个环境所以显示了3个
conda命令速查,深度学习项目运行_第1张图片

  • 进入到某个虚拟环境,如果进入的是container环境,则把sdnet换成container,以下同理
conda activate sdnet

进入虚拟环境以后,前面的提示会变为虚拟环境的名字
请添加图片描述

  • 退出虚拟环境
conda deactivate

同理,退出环境后,前面的提示会变为base,表示回到了根环境下面
请添加图片描述

  • 进入某个虚拟环境后,可以查看当前环境下安装过的所有包(同理,查看base环境下所有包,不需要激活环境,直接在base里执行以下命令)
# 大部分包是通过conda命令安装的,所以conda list命令查看到的包是最全的,pip list也可以查看包,不过没有conda全
# pip只有当前虚拟环境下的, conda 除了虚拟环境下的还有关联文件下的
conda list
  • 查看某个包可供选择的版本(有时候不知道安装指定版本的包是否在当前环境中和其他包没有冲突,可以用这条命令查看是否可以安装指定版本的包)
conda search 包名
  • 查询当前用户下所有执行过的命令
# 这个是linux命令,不是conda命令,只不过方便查看conda执行过的命令
history

3. 国内镜像源配置

初始时,没有配置国内镜像地址,下载大部分包都会很慢,所以需要配置下载包的镜像源文件,这一步不需要在虚拟环境中,直接base环境中配置,激活进入其他环境中也可以使用base中配置好的镜像地址

无论创建多少个虚拟环境,镜像源都是共用的

3.1 conda镜像源配置

  • 查看现有的channels
conda config --show-sources

conda命令速查,深度学习项目运行_第2张图片
这里因为我已经配置好了,所以显示的channels多了3个

  • 配置channels
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
  • 删除channels(换回conda的默认源)
conda config --remove-key channels
  • 删除channels方法2
# 因为配置channels时,设置的channels都配置在.condarc中,所以直接删除.condarc文件即可(linux命令)
rm .condarc

3.2 pip镜像源配置

  • 使用临时源安装包,只需使用-i参数指定下载地址
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

4. 包的升级/降级

配置完镜像源后,可以方便的进行包的升级/降级以及下载

  • 升级conda包版本
conda update conda
  • 对所有工具包进行升级
conda upgrade --all

5. 创建虚拟环境

这里的sdnet是指创建的虚拟环境名称

conda create -n sdnet python=3.8.5

在虚拟环境中下载包

5.1 包的下载方法1

# 进入虚拟环境
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

5.2 包的下载方法2

把以上pip install命令写到env.sh文件中,然后用linux的bash env.sh命令执行这个文件,相当于批量执行安装包的命令

5.3 pip和conda下载包的区别

# 最直观的区别在于指定安装的包的版本的时候,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

6. 虚拟环境崩溃—卸载

有时候不知道什么原因,某个虚拟环境出了问题跑不了程序,最简单的办法就是卸载重建

conda remove -n sdnet --all

7. 环境导出,重新安装

重要项目的环境,如果服务器需要维护调整显卡,我们就需要把这个项目的环境迁移到另一台服务器上,如果重复以上步骤非常麻烦,所以可以把该项目依赖的虚拟环境导出,并在新服务器的conda环境中重新导入

7.1 导出当前环境

conda env export > env.yaml

7.2 导入环境操作

会生成一个env.yaml文件,将其复制到目标服务器上并在目标服务器上配置好conda环境后,执行导入环境操作

conda env create -f env.yaml

7.3 导出pip安装的包

以上方法只能导出conda命令直接安装的包,而pip安装的包无法导出,所以还需要把pip涉及到的包导出

pip freeze > env_pip.txt

7.4 安装pip相关包到目标机器

本质上就是按照文件重新安装一遍,导出的env_pip.txt文件需要先过一遍,筛掉一部分重复的包/无用的包

pip install -r env_pip.txt

8. 深度学习项目运行

配置完以上环境后,我们可以用sdnet环境运行深度学习项目(这里以sdnet为例)

一般来说按照项目的readme文件配置所需要的包,在该环境中项目就可以直接跑起来,如果报错,大部分都是因为安装的包版本不支持

python main.py -dataset re3d -K 5 -sdnet -cuda 0

9. screen 后台运行代码

如果关闭xshell,则刚刚跑的代码也会随之关闭(暂停),所以需要一种手段,把程序扔到后台去跑,这样软件无论是否关闭都不会影响到正在运行的程序

  1. 把程序放到后台运行之前需要先查看是否有足够的显卡资源,以下两条命令都可以查看
nvidia-smi
gpustat
  1. 激活当前环境并进入后台
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

10. 遇到的问题

  1. 如果conda create -n XXX这条命令报错(和HTTP相关),首先需要排查是否因为服务器的网断了才导致这样的情况,一般来说安装miniconda/anaconda是不需要网络的,所以在后面安装各种包报错的时候极可能忽略这种断网的原因
  2. 环境都安装好以后,如果报一些和NVIDIA相关的bug(最明显的问题就是nvidia-smi命令无法执行),那就是驱动失效了需要重新安装适配的驱动,具体参考这篇文章

你可能感兴趣的:(深度学习,深度学习,linux,人工智能,服务器,python)