这里,我将自己在整个过程中遇到的问题以及注意事项记录下来,也算是进行一个整理,也希望可以帮助到一些人,来教大家从头搭建属于自己的深度学习环境。
其实这里主要要注意的就是各种版本的对应问题。
Anaconda是开源的python发行版本,里面包含了python、conda(一个python包管理器)和各种用于科学计算的包,可以完全独立使用,不再额外下载Python。
使用anaconda有以下好处:
- 屏蔽了系统平台的差异,解决底层依赖。安装一个包之后依赖的东西全部处理好,省心。
- 有一个虚拟环境的概念,每个环境之间是隔离的,都可以设定不同的python版本以及各种包,不和系统的冲突,可以随便切换,要删除也是整个一起清理。
先去Ananconda官网(https://www.anaconda.com/)上下载安装包,但是由于某些原因,可能下载速度特别慢,所以可以去清华镜像源进行下载(https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/),我这里下载的为2021.05月的版本,下载时还要注意系统版本!
安装过程基本如下:
这里注意修改安装位置,默认在C盘
这里建议两个都选,第一个意思是添加环境路径
,建议可以选上
安装完成之后直接点击 next
就好了
这里两个勾都不要,属于是没啥必要的步骤
安装完成,我们从电脑的开始菜单中可以找到如下三个快捷方式:
分别是 Anaconda的 启动快捷方式
和 管理员命令行窗口
和 命令行窗口
,我们可以将其发送个快捷方式到桌面上(主要是 Anaconda的 启动快捷方式 和 命令行窗口,图中红框的两个),方便以后使用。
其实用的最多的还是
命令行窗口(Anaconda Prompt)
,因为启动anaconda并且在里面进行切换环境等操作真的太慢了,使用命令行就会快很多,并且方便很多
我们打开Anaconda软件,其主界面如下,我们一般主要会用到里面的两个交互式的编程软件(Notebook和Spyder),我个人用的比较多的是Notebook,下面也会以这个为例进行讲解。
之前已经介绍过,Anaconda中可以创建多个互不干扰、相互独立的环境,图中的①表示当前所使用的编译器环境
,由于刚刚安装,所以这里还只有一个base环境,②中可以查看使用Anaconda安装Python包等东西时所使用的网址链接,③表示Notebook软件,点击launch即可打开,④是Spyder软件,通过⑤和⑥可以在主页面
和环境页面
中切换。
环境页面具体介绍如下:
在Anaconda里通过点击Notebook的launch
或者 直接在 命令行窗口(Anaconda Prompt)中输入命令jupyter notebook
即可打开Notebook。注意,不同环境下的Notebook需要先激活到对应环境下才可以打开对应的Notebook
因为Notebook是基于web设计的,所以会自动打开电脑浏览器,并打开一个页面
如果我们要在Anaconda里下载包等东西,因为他默认的下载路径在国外,所以速度特别慢,还容易断,为了解决这个问题,我们可以为他添加国内的镜像源地址。
打开 Anaconda Prompt
,输入如下命令添加镜像源,这里添加的是中科大的镜像源:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
运行后,就会为Anaconda添加镜像源路径。这时,我们打开Anaconda,可以看到 channels 里已经有我们添加的这条路径了(也可以在Anaconda软件里手动添加,但我每次添加都会有问题,所以放弃了)
再列出一些其他的镜像源地址:
中科大:https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
清华:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
我们的程序编写等都是在Notebook的这个网页里进行的。
但我们会发现,这里已经显示有文件夹了(每个人显示的文件可能不一样,但都是已经有文件在里面了),看起来非常的不爽,这是因为现在它使用的是Notebook的默认路径,所以我们可以对其进行修改。
(1)找到并打开 Anaconda Prompt
,输入如下命令,然后执行。
jupyter notebook --generate-config
执行后会生成一个配置文件(jupyter_notebook_config.py)并在窗口中输出文件的路径,找到并打开生成的配置文件(其实这里的C:\Users\Administrator就是Jupyter notebook的默认路径)
在jupyter_notebook_config.py中找到并修改如下配置项(大概在385行左右):
修改前: # c.NotebookApp.notebook_dir = ‘’
修改方法:删除前面的 # 号,在后面的单引号里输入要设置的目录路径,保存关闭。
注意:这里的路径中的 ‘\’ 要换成 ‘\\’ 或 '/’,否则可能出现转义字符
(2)在win开始菜单中找到jupyter notebook快捷图标,鼠标右键>>属性>>快捷方式>>目标
删除最后的 “%USERPROFILE%/” ,最后点击确定。
OK,现在重新启动Notebook,打开的就是刚配置的目录。里面啥也没有,看着很舒服!
到这里,Anaconda的安装及主要使用基本都介绍了,还有一些环境的新建
会在下面的GPU环境搭建中一起介绍。
深度学习主要有两种库tensorflow
和pytorch
,下面会一一介绍。为使其互不打扰,我们新建两个环境并分别会将其安装在两个环境中(个人建议搭建深度学习之类的环境可以单独创个环境搭建,不要搭建在base环境或其他已有的环境中,这样的话,如果环境搭建失败了,直接将这个环境删掉就好了,不会影响到其他的环境)
要使用GPU加速,首先就要去安装CUDA和cuDNN。
首先要看一下你的电脑的显卡对应的是哪个版本的CUDA,千万不要下错了,不然运行不了的。
查看方法很多,网上都很容易搜得到,这里介绍其中一种:
打开 NVIDIA控制面板 -> 帮助 -> 系统信息->组件
,就可以查看自己的显卡对应哪个版本。我电脑的是GTX 965M,对应的是CUDA9.0
找好对应的版本后,就去下载,给出网址:https://developer.nvidia.com/cuda-toolkit-archive
进去后选择相应的版本和电脑信息。这里选择本地安装,也就是将安装包下下来,在线安装容易受网络影响。这个网址没有被墙,可以正常访问,下载速度也是可以的。
下载CUDA的同时,来看一下cuDNN吧。这个也要注意版本的对应。给出网址:https://developer.nvidia.com/rdp/cudnn-download
下载这个时要先进行注册什么的,按照要求进行就可以了。进去后,每个版本的cuDNN后面都会写明其对应的CUDA版本(网上也搜得到其对应的关系),选择相应的版本下载就好了。
下载完成之后,就可以开始安装了。
安装CUDA。
启动exe文件,会让你选择一个目录地址,这个只是文件的解压目录,并不是安装的目录,在安装完成之后会被自动删除,这里根据自己的情况选一下就好了。然后就会自动检测系统兼容性什么的,完成之后,就可以正式的安装了。
在安装时,选择自定义安装的方法。然后勾选,只要不勾选
里面的 Visual Studio Integration 就好了,至于为什么,我暂时也不知道,反正我第一次安装时只勾选了CUDA,然后就出问题了。
点击下一步,就会选择安装路径,这里网上说建议安在C盘,所以我也就没有改(注意不要选到你刚刚的解压文件夹里了,不然安装完成后又会被删掉,就尴尬了)。这里最好记住这里的三个路径,后面会用得到。
然后点击下一步,让它安装就好了。
安装完成之后,就安装cuDNN,这个很简单,是插入式安装。把文件解压,然后把里面的三个文件夹里的文件(注意,是文件)复制到CUDA安装文件夹(就是上面的 CUDA Development 的那个安装路径下)的对应文件夹内。
到这里,就安装完了,可以测试一下是否安装成功。
进入到上面的安装文件夹下的 extra/demo_suit
文件夹(如:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\demo_suite)下,然后在地址栏输入 cmd,打开命名提示行。运行 bandwidthTest.exe
和 deviceQuery.exe
,结果如下,得到两个 PASS,就基本是安装成功了。
到这里,CUDA和cuDNN就算是全部安装成功了。
这里又得要注意版本了。
首先,根据自己的 CUDA 和 cuDNN 找到自己的 tensorflow-gpu 版本。对应关系如图或tensorflow官网
注意:这里除了CUDA和cuDNN的版本,还要注意 python的版本,比如我的最高只支持到3.6。我开始就没有注意,结果一堆问题,搞得想砸电脑!!!
那如果我们的base等环境下的python版本过高怎么办?
不要急,我们创建一个新的环境就可以了,并且对于深度学习等环境的搭建也最好新建一个环境来操作,这样可以避免各个环境之间的干扰!
创建新环境有两种方法:
- 使用 anaconda 命令行窗口
- 直接在anaconda软件里
这里先介绍第一种方法,第二种在pytorch的安装里介绍
现在就来创一个python3.6的环境。
打开anaconda的命令提示窗口Anaconda Prompt (anaconda3)
,输入:
conda create --name tf-gpu-py36 python=3.6
其表示: 创建一个名为
tf-gpu-py36
的环境,指定Python版本是3.6
如果中途断了,重新运行就好了,会接着下
其实环境名字建议起的简明易懂,比如这里的tf-gpu-py36
, 表明是 tensorflow-gpu的环境,且python版本为3.6
运行,系统就会开始去解析并且创建环境。解析完成之后,会出来一个 package plan ,并询问是否继续,这就是我们创建这个新环境所需要下载的包,直接输入 y 回车,让它下载并创建环境,你只需要耐心等待即可。
下载完成后,就会自动创建环境,完成之后。我们也可以在 anacodna 的environments里看到这个环境。可以看到,这个环境很干净,只有一些python必要包,其余的都没有。
# 激活环境:
conda activate tf-gpu-py36
# 离开环境
conda deactivate
激活环境后,在命令行前面会有一个当前所处环境的表明,如图,激活前是base环境,激活后进入到了tf-gpu-py36环境
现在这里,就是一个全新的环境了
更多的关于anaconda环境管理的,可以参考这个:https://www.jianshu.com/p/2a628a462e87
Notebook的安装
创建好环境后,打开anaconda软件,进入环境,因为这是一个新环境,所以notebook之类的也都没安装,所以我们进行手动安装,直接点击 install 即可
因为我们添加了镜像源,所以安装起来还算是比较快的,安装完后,install
就变成 launch
了。
打开notebook,就可以直接使用了。
注:所有环境的notebook的工作路径应该是一样的,如果你出现两个环境的notebook工作路径不一样(有的人电脑会出现这种情况),那就按照前面的
1.2.5 notebook默认路径的修改
进行修改。
注意:
到这里,创建python3.6的新环境就基本OK了!
对tensorflow-gpu,在Anaconda Prompt (anaconda3)里使用 pip 安装并且指定安装版本(不指定的话,会默认安装最新版的,这就可能跟你的CUDA等不对应了)。
这里是用的是清华大学的镜像源:https://pypi.tuna.tsinghua.edu.cn/simple。我这里按照对应关系,安装的1.12.0。
pip install --upgrade tensorflow-gpu==1.12 -i https://pypi.tuna.tsinghua.edu.cn/simple
因为pip使用的默认路径也是国外的,所以也要用镜像源
其他镜像源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
豆瓣:http://pypi.douban.com/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
安装tensorflow-gpu时,还会自动下载一些相应依赖,所以要稍微等待一下下。安装完成之后,可以用 pip list
看一下是否有这个模块。
到这里,基本就可以使用GPU了,给几个例子试试:
(1)看看 tensorflow 检测到的 能使用的设备情况
# 检测 tensorflow 能使用的设备情况
from tensorflow.python.client import device_lib
#os.environ["CUDA_VISIBLE_DEVICES"] = "1" # 这个可以指定使用哪个设备
print(device_lib.list_local_devices())
(2)输出是否能使用GPU
import tensorflow as tf
print(tf.test.is_gpu_available())
print(tf.test.gpu_device_name()) #输出gpu的名称
返回了True,也就是可以使用GPU,并且设备名字也跟上面得到的结果相同。
(3)使用tensorflow-gpu
说了这么多,能够直接使用tensorflow-gpu让GPU进行计算才是王道。
import tensorflow as tf
import os
import numpy as np
# 加载数据集
# from keras.datasets import mnist
# (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# 这里加载数据集要去访问一个网址进行下载,由于众所周知的原因,这个网址是访问不了的
# 所以这里使用下载下来的本地数据集。
# 链接:https://pan.baidu.com/s/1rzqWrlsO7Zg2gtmCxYQZjA
# 提取码:ff9z
path='./mnist.npz'
f = np.load(path)
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
f.close()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
可以看到,训练数据时,GPU1(也就是我的NVIDIA显卡)被使用了。这里数据的训练不是很复杂,所以利用率也不是很明显。
到这里,你就已经取得阶段性胜利了!!!
如果你安装的是tensorflow 2.x 版本的,那就不需要安装keras了,因为keras已经被tensorflow收购了!
这里同样也要注意版本。
版本对应关系见:https://docs.floydhub.com/guides/environments/
部分如图:
找好版本后(我对应的是图中的红框框,所以下载的keras2.2.4),同样使用 pip 安装并且指定安装版本,不指定的话,会默认安装最新版的,这就可能跟你的tensorflow-gpu不对应了,一般会显示你的tensorflow版本过低,需要安装高版本!
安装完成后,试试import keras
,如果程序没有报错,那就安装成功了!大功告成!!!
pytorch的安装没有tensorflow那么繁琐。
同样,我们新创建一个环境来安装,这里使用第二种方法
首先打开anaconda软件,进入到environment,点击create来创建新环境,在弹出的窗口中输入名字并选择python版本
最后点击create并耐心等待,创建成功后就会又有一个新环境,对这个环境,同样按照2.2.1 创建一个新的环境
里的方法去安装notebook
这里再介绍一种离线安装包的方法,避免在线安装时文件下载到一半掉线!
先去https://download.pytorch.org/whl/torch_stable.html下载对应版本的pytorch安装包,对应方式见下图,或者也可以直接去官网寻找
下载完成后,打开Anaconda Prompt (anaconda3)
, 进入到安装 pytorch的环境,输入命令:
pip install 你的pytorch安装包地址(注意‘\’改成 ‘\\’或‘/’)
# 如:
# pip install E:\\Downloads\\torch-1.1.0-cp36-cp36m-win_amd64.whl
等待安装完成后,可以测试一下。
import torch
x = torch.rand(5, 3)
print(x)
这段代码的输出应该与下面的结果接近:
同样,也可以直接检测是否能用GPU
import torch
torch.cuda.is_available()
如果输出为True
,则表示可以使用GPU。大功告成!!!
找到anaconda的安装文件夹,如我的D:\Anaconda3
:
(1)这个文件夹下的文件就是base环境中的文件,在这个文件夹下,有个python.exe
的可执行文件,它就是base环境下的python解释器
。
因此,我们如果想要在
Windows的cmd窗口
中直接运行python,则需要将这个文件夹路径添加到系统环境变量
的path
下
(2)在该文件夹中的\Lib\site-packages
文件夹下存放的就是我们自己通过pip等方式安装的包
(3)在该文件夹中的envs\
文件夹中,存放的就是我们新创建的环境的文件,如我们上面新建了两个环境,那么这里就会有这两个环境的文件夹。这两个文件夹中的目录结构和base环境的基本相同,这也说明了不同环境之间是 相互独立 的。
Anaconda Prompt (anaconda3)
中完成,如果在Windows的cmd窗口中运行,则会报错不是一个可执行的命令
。当然,通过下面第三条的方法,可以解除限制。pip
,但是通常这里所有的操作都是在base
环境下的,不能切换环境。当我们在cmd中运行命令时,其实就是运行的对应的
exe
可执行文件,而系统就是通过环境变量中path下的文件路径来搜寻这些exe文件的。
如 我们运行一个python文件,我们会输入命令python 文件名.py
,这个时候,系统会对path下的路径进行搜索,寻找python解释器
,当通过里面的路径可以找到python.exe
时,我们这个文件就可以成功编译运行,否则就会报错不是一个可执行的命令
。
因此,要想某个命令可以直接在cmd中运行,则需要将其exe文件的路径添加到path中,当然,当我们在cmd中进入到该文件夹中再运行exe文件时,是可以正常运行的。(详细的可以自行搜索,很容易搜到相关的)
pip安装Python包,而conda安装包可以包含用任何语言编写的软件的包。
在使用pip之前,必须通过系统包管理器或下载并运行安装程序来安装Python解释器。
而Conda可以直接安装Python包以及Python解释器。conda包不仅限于Python软件,它还可以包含C或C ++库,R包或任何其他软件
python.exe
文件File->settings->Python Interpreter
,即可选择切换环境。同时,点击旁边的设置(图中黄框位置),也可以按照上面类似的方法去添加一个新的环境。