一、序言
随着深度学习在学术界和工业界的热度不断上涨,越来越多的深度学习环境配置教程不断出现,本blog试着脱离一般意义教程记录和分享笔者曾经在环境配置中所踩过的坑以及部分思考,期待与大家一起进步。
尽管linux仍是诸多大公司和研究者进行深度学习工作的首选系统,但windows的文件系统和UI交互仍具有诸多优势。此外,部分边缘端设备深度学习推理仍需要依赖windows系统。因此,如何在windows系统进行深度学习环境配置仍是大家关心的主要问题之一。本文仍然基于anaconda3进行win10下的深度学习环境配置和管理。
二、整体概览
在anaconda的支持下,整体配置过程已经变得十分简单,整体流程如下图所示。下面会对每一个小流程进行单独详细介绍。
2.1 Anaconda3安装
此处就不使劲吹Anaconda了,相比于单纯的python,anaconda具有如下优势:
1)Anaconda 自带了诸多常用数据科学包,包括 conda、pip、python 和 150 多个科学包及其依赖项。
2)Anaconda 是在 conda(一个包管理器和环境管理器)上发展起来的,可以很好的帮助你在计算机上安装和管理下载的第三方程序包,包括安装、卸载和更新包。
3)提供了强大的虚拟管理环境,避免多环境错乱。比如你在A项目中用了 Python 2,而新的项目使用Python 3,同时安装两个Python版本可能会造成许多混乱和错误,这时候 anaconda就可以进行妥善管理,保证不同项目加载不同的依赖项。
anaconda提供多系统多平台安装包,其官方网站为:https://www.continuum.io/downloads。但官方网站连接非常缓慢,此处推荐清华镜像:mirrors.tuna.tsinghua.edu.cn/anaconda/archive/。
值得注意的是,不同anaconda版本对应不同的python版本,在下载时要做好选择,安装后可以通过在anaconda prompt中输入命令:python查看已经安装的python版本号,如下图所示。
2.2 Cuda/Cudnn安装
GPU在每个深度学习爱好者的心中都有极高的地位,而本次深度学习热潮的来临也和GPU运算能力的大幅提升息息相关,正式由于通用并行计算能力的提升使得深度学习具备了训练的可行性。据百度百科指出,CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
下面直接上链接,cuda:https://developer.nvidia.com/cuda-downloads;cudnn:https://developer.nvidia.com/cudnn;
先根据自己显卡以及即将运行程序的requirements选定好cuda,一般10.1或10.2较好,并选择对应的cudnn。其中,cudnn下载需要用邮箱注册。
cuda下载完成后直接安装,安装过程中勾选添加环境变量的选项,否则需要自己手动添加,较为麻烦。如果按照过程中提示chrome_elf.dll拒绝访问,请勇敢关闭360。安装cuda后,在cmd窗口输入:nvcc -V ,如果不提示不识别的标识符,即证明安装成功。注意,在安装cuda后不要再更新显卡驱动,如果显卡驱动和cuda不匹配,深度学习训练和调用会出错。
cudnn下载后直接解压后复制到cuda的文件夹下即可。cudnn解压后如下图左图所示,复制至如右图所示的cuda文件夹下。
熟悉c++的朋友们应该清楚,cudnn文件夹中,include文件夹中是头文件,lib文件夹下是*.lib,而bin文件夹下是.dll。
2.3 创建并配置虚拟环境
首先应添加清华镜像以及pytorch库,当然不添加也可以,只是速度慢个几百倍吧。进入anaconda prompt输入下列命令:
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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud//pytorch/
conda config --set show_channel_urls yes
然后开始创建虚拟环境,使用如下命令:
conda create -n env_name python==x.x
env_name可以随意命名,但最好能具有一定辨识度,否则最后自己忘干净了。python==x.x是可选项,用于指定python版本,一般可以指定安装anaconda的python版本以下的。该命令的实质是在anaconda安装目录下的envs文件夹创建了一个名字为env_name的新文件夹,并将python相关依赖项(各种.dll)放入了下面。激活某个环境,其实质是只读取或更改该文件夹下面的包,以此实现不同环境的独立管理。
接下来就可以激活创建的虚拟环境:conda activate env_name,使用conda或pip安装各类库了,注意一定要先激活环境,不然安装的包是在默认的base环境下。接下来简要介绍pytorch和tensorflow的安装。
pytorch安装可以直接进入pytorch官网:https://pytorch.org/,并选择与安装cuda对应的版本即可。如我安装的cuda是10.2,希望安装pytorch 1.5.0, 则官网给出的安装代码为:conda install pytorch torchvision cudatoolkit=10.2 -c pytorch。官网的安装方式会随着时间的变化而变化,大家一定注意追本溯源。 -c pytorch的意思是指从官网下载,速度会比较慢,前面已经添加了清华镜像的pytorch包,因此可以仅使用前面部分:conda install pytorch torchvision cudatoolkit=10.2 从清华镜像下载并安装。
tensorflow安装可直接使用下列命令:conda install tensorflow-gpu 系统会自动识别cuda并下载最新的匹配的tf版本,如果希望指定版本,一定要先查清cuda和tf版本的兼容性,并使用conda install tensorflow-gpu=x.x指定版本。
在日常使用过程中,会碰到各类包不存在的情况,基本都是no module named xxxxx,这时可使用conda install xxx 或pip install xxx即可。这类包的安装实质是在env_name文件夹下的site-packages文件夹下下载了对应的dll用于调用。
这些安装完成后,需要安装IDE,我常用的是spyder,在激活环境后使用conda install spyder即可安装最新版spyder。当然,也可以通过anaconda navigator进行“点点点”的安装。
三、小结
因为有了anaconda的存在,深度学习的环境配置已经没有了什么难度。大家在安装过程中尽量使用conda进行在线安装,避免某些包安装不全。某些电脑不能上网的情况下,可以通过下载离线编译好的wheel进行手动安装。此外,在配置过程中有时也会遇到一些神奇的问题需要慢慢解决,只要秉承电脑是玩不坏的原则(大不了重装系统),绝对可以很快成为老司机。