Conda深度学习使用指南
编辑什么是conda?
Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。Conda 是为 Python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件。
再简单点说就是一个预装了一些“常用”的软件包的环境管理工具,在所有系统上都可以用。
什么是环境和虚拟环境?为什么要使用conda?
环境就是代码运行的一些基础背景,例如说操作系统的版本、驱动的版本、依赖包的版本等等,但凡可能影响代码运行的因素都可以成为环境(aka玄学)。环境管理是一件非常麻烦的事情,在复现或者迁移代码时,要尽可能保证代码运行在相同的环境中(否则可能跑不通或者出现不同的结果)。
如果使用python官网安装的python解释器,那就只有一个默认的环境,在这个环境下某个包只能有一个版本。如果需要同时使用tensorflow 1.13和1.14版本,就无法实现。因此虚拟环境应运而生。虚拟环境就是创建不同的python解释器,环境之间依赖是独立的。
conda有环境管理的功能,通过conda可以方便地切换环境,安装不同的包和他对应的驱动等,尤其是安装cuda和cudnn这两个深度学习必须的依赖。
安装
可以在 Anaconda 找到对应系统的安装包。以Windows系统为例,提供了.exe的安装器,下载后双击安装,一路下一步即可。在Linux和MacOS下均有对应的安装器,根据架构和版本下载,按照提示安装即可。
在Windows环境下,在开始菜单中找到Anaconda Prompt (Anaconda 3)
,打开后出现命令行,如
(base) C:\Users\some_username>
输入conda —version
能显示conda当前的版本即为安装成功。以下演示均为Windows环境,其他环境的命令行与Windows的类似,不再赘述。
在linux或其他命令行环境下,输入conda
不提示命令不存在或输入conda —version
能显示当前版本即为安装成功。
基本使用
创建conda环境
前面说到,环境管理是conda的一个核心功能,在使用中,一般一个项目对应使用一个环境。在创建项目前,先创建一个环境。
conda create -n project_name_and_stuff python=3.7
这条命令的意思是创建一个名为project_name_and_stuff
的环境,其python版本为3.7
。
对于项目名称的命名,建议采用项目名称+深度学习框架及版本+CPU/GPU环境+其他需要说明的版本
的形式,例如DIGIX_tf1_gpu
表示该项目名称为DIGIX,使用TensorFlow1版本,使用GPU环境。若不需要深度学习环境,则只采用项目名称即可。python版本建议选择当前稳定的版本或适配环境中其他依赖的版本。
激活环境
环境创建完成后,可以根据项目的需要安装响应的依赖。首先需要激活环境。
conda activate demo-project
输入后,命令行会变成如下
(demo-project) C:\Users\some_username>
此时已经进入了demo_project
的环境,可以开始安装对应的依赖了。
若要退出该环境,输入
conda deactivate
安装依赖
有两种安装方式,先介绍conda特有的conda install
,另外还有原来的pip
方式也可以用于安装依赖。
conda install
以requests
库为例,只需要输入
conda install requests
若要安装指定版本的某个包,可以使用
conda install package=version
其中package
为包名,version
为其版本号。连续输入多个包名和对应的版本号可以一次性安装多个包。可以使用的版本可以使用以下命令查询。
conda search package
pip
就是正常的包安装过程,输入
pip install package==version
注意这里版本前面是==
而不是前面的=
。连续输入多个包名和对应的版本号可以一次性安装多个包。
固化依赖
建议在安装好所有需要的依赖后,将目前依赖版本导出,方便复现或迁移项目时,能快速恢复环境。
conda方式
通过以下命令可以快速导出当前环境中所有依赖。
conda env export > environment.yml
到了新环境中,使用以下命令即可恢复。
conda env create -f environment.yml
** 2022-01-16 更新 **
以上方式适合导出同操作系统和架构的环境,能够保证依赖能原封不动安装。在不同操作系统/架构间迁移时,可能会由于系统/架构原因导致依赖有所不同,不能使用该方式导入。
对于这种情况,应该手动创建environment.yml
,手动输入需要的主要依赖和其版本(如tensorflow、python和其版本号)。例子如下:
name: medusa
channels:
- defaults
dependencies:
- coverage=5.5
- pytest=6.2.4
- pytest-cov=3.0.0
- python=3.7.11
- requests=2.27.1
- sqlite=3.37.0
pip方式
通过以下命令可以快速导出当前环境中所有依赖。
pip freeze > requirements.txt
到了新环境中,使用以下命令即可恢复。
pip install -r requirements.txt
删除环境
conda remove -n demo-project --all
在pycharm中使用该环境
在打开项目之后,在右下角点击环境这部分,选择Interpreter Settings...
,进入项目环境,点击Show All
。
点击+
,找到Conda Environment
,然后选择Existing Environment
,在Interpreter
中找到刚才新建的环境的python.exe
即可。一般来说,路径在你的用户目录下的Anaconda3\envs
下。最后点击ok
即可。
然后选择刚添加的环境,点ok
即可。
安装深度学习环境
TensorFlow
可以参考这篇文章。 https://docs.anaconda.com/anaconda/user-guide/tasks/tensorflow/
Conda可以为深度学习环境提供对应的cuda和cudnn版本,只需要在安装的时候指定cudatoolkit
版本即可。
conda install tensorflow-gpu=1.14 cudatoolkit=10.0 // 1.x
conda install tensorflow=2.1.0 cudatoolkit=10.1 // 2.x
其中,cudatoolkit的版本请查阅https://www.tensorflow.org/install/source#linux。
pytorch
可以参考 https://pytorch.org/get-started/locally/
安装方式比较简单。
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
拓展阅读
conda的安装与使用(2021-04-27更新)https://www.jianshu.com/p/edaa744ea47d
conda Command Reference https://docs.conda.io/projects/conda/en/latest/commands.html
Cheatsheet
清理空间
conda clean -p // 删除没用的包
conda clean --all // 删除所有缓存
升级conda
conda update conda
conda update anaconda
列出所有环境
conda env list
conda info --envs
重命名环境
conda create --name newname --clone oldname //克隆环境
conda remove --name oldname --all //彻底删除旧环境
- 0
- 0
-
赞助
微信赞赏码 -
分享