title: 深度学习环境配置(pytorch)
date: 2023-04-22 11:26:28
深度学习显卡与CUDA
CPU(Central Processing Unit) vs GPU(Graohics Processing Unit)
如下图所示,CPU中有大量的控制电路和缓存,计算能力(ALU)只是CPU中很小的一部分;而在GPU中有很多算术逻辑处理单元用于运算,只有很少的缓存。因此我们可以将图片放到GPU的处理单元进行运算,加速深度学习网络的训练。
下面简单介绍一下深度学习用到的显卡:
- 显卡,主要用于在屏幕上显示图像,用于与视频、图像处理相关的任务
- 主流的显卡分为独显(独立显卡)和核显(核心显卡),独显一般较大,性能更加强,深度学习中常用。核显,比较小,跟CPU合在一起,性能较低,但完全可以胜任日常工作
- 在深度学习中使用的显卡一般都是NVIDIA的显卡,一般不用amd的显卡做深度学习
- 有了CUDA,我们就可以使用NVIDIA显卡了。像pytorch,tensorflow这种深度学习库,可以通过调用CUDA这个库,把相关数据发送给GPU进行运算,以加速深度学习网络的训练
Windows下判断有无NVIDIA GPU:
检查任务管理器,如果GPU中带有NVIDIA字眼,说明有NVIDIA GPU
安装Anaconda
在配置深度学习环境的过程中,我们并不直接从python官网下载安装,更多的是安装Anaconda这个软件,那么Anaconda用什么作用呢?
我们安装好Anaconda后,直接就有了一个python的环境,并且可以使用conda install 包名
命令。此外,anaconda的虚拟环境功能是我们选择它的一个重要原因,我们可以利用anaconda在计算机上创建多个虚拟环境,类似于一个个的虚拟机,它们互不干扰。当我们经常需要用到不同版本的python解释器/库时,我们可以在不同的虚拟环境中安装不同版本的解释器/库,当我们需要用到某个版本时切换一下虚拟环境即可,而不必反复卸载重装。
安装:
- 到anaconda官网下载安装包:https://www.anaconda.com/
- 也可以下载距今一两年左右的历史版本,比较稳定(https://repo.anaconda.com/archive/)。 注意安装anaconda后我们可以给不同的虚拟环境配置不同版本的python解释器,但python的版本小于等于安装的anaconda的python版本
- 如果下载很慢的话可以右键赋值地址,粘贴到迅雷上下载
- 安装路径最好全英文
- 安装完成后,在开始菜单中找到anaconda,打开它的图形化界面。如果在environment中有base,说明安装成功
创建虚拟环境
什么是虚拟环境?打个比方,虚拟环境相当于一个工作室,它有序地管理这不同的包和库这些工具,当我们要做一个项目时就需要一个工作室。那为什么需要虚拟环境呢,一个直接的原因,例如我们一个项目要用pytorch开发,而另一个要用tensorflow开发,这样,我们可以创建两个虚拟环境,在里面分别安装pytorch和tensorflow,两个虚拟环境中的包和库不会互相冲突
为了创建虚拟环境,首相我们要为它取一个名字,这个名字最好有意义,方便我们以后看到它就知道它是做什么的。打开anaconda的命令行:
-
使用
conda creat
指令创建虚拟新的虚拟环境
conda create -n 虚拟环境的名字 python=版本
在创建虚拟环境的过程中会下载一些包,它会问你是否继续,选择y。接下来等待环境创建完毕即可。新创建的虚拟环境位于ananconda安装目录的envs文件夹下。
-
使用
conda env list
可以查看目前有哪些虚拟环境 -
虚拟环境创建好之后,使用
conda activate 虚拟环境名
切换虚拟环境,然后可以用conda list
命令查看当前这歌虚拟环境下有哪些包 -
如果在创建虚拟环境时,下载包的速度很慢,可以使用
conda create -n 虚拟环境的名字 python=版本 -c 镜像地址
命令添加镜像加速镜像名 用于创建虚拟环境的地址 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main 北京外国语大学镜像 https://mirrors.bfsu.edu.cn/anaconda/pkgs/main 阿里巴巴镜像 https://mirrors.aliyun.com/anaconda/pkgs/main -
删除虚拟环境:
conda remove -n 虚拟环境名 --all
补充:conda的通道与镜像地址
当我们使用
conda install xxx
或者conda creat -n xxx
命令时,就会从一个叫做配置文件的地方去下载一些包,通道(channel)就在配置文件中,其实就相当于下载地址。当我们安装anaconda之后,就有一个默认的下载地址defaults,它是anaconda服务器的地址。当conda想要下载一些包,它就会去配置文件里面找有哪些下载地址,然后从这些地址去下载需要的内容。使用
conda config --get
或者conda config --show
可用查看配置文件中有哪些通道但是defaults的下载地址在国外的服务器上,当我们的配置文件中只有defaults这个通道时,(在国内)使用conda下载一些包的时候就会很慢。于是我们可用通过在使用的命令后面添加
-c 通道地址
来告诉conda从指定的地址(国内的镜像地址)里面去找想要的包,例如conda install xxx -c xxx
,但是这个镜像地址只会对当前这一条指令生效。我们也可以在配置文件里面添加一些镜像地址,当配置文件里面有多个地址是,conda会优先使用最新添加的通道地址。
- 持久添加通道:
conda config --add channels 通道地址
- 删除通道:
conda config --remove channels 通道地址
添加/删除后可以通过
conda config --get
来查看
GPU与CUDA准备工作
前面我们已经创建好了虚拟环境,但在安装pytorch包之前,我们还需要进行一些准备工作。进入pytorch官网,点击install后我们可以看到一些选择,其中一项是选择CUDA的版本,这一部分主要介绍如何配置CUDA和选择CUDA的版本。
整个CUDA涉及到三个方面的内容:硬件显卡(算力)、显卡驱动(cuda driver version)、cuda runtime version(上图中要选择的内容)。一定要让它们三个之间互相匹配,pytorch的GPU版本才能够运用显卡。
显卡是一个硬件,需要有一个驱动才能够被我们计算机识别出来,在安装驱动的时候,会随着驱动安装一个叫做cuda driver的东西,cuda是可以让显卡进行并行运算的一个平台,当我们的计算机想利用显卡做一些并行运算的时候,它就可以通过cuda driver去操作显卡。但是对于pytorch或者一些其它软件来说,还得有一个cuda runtime才能去调用cuda driver里面的一些东西,进而去调用显卡去做一些加速运算。为了使上述三者能够协调工作,它们之间的版本需要满足:
- cuda runtime version ≤ cuda driver version (如果cuda runtime的版本较高的话,可能会增加新功能,当它调用cuda runtime时,可能会没有相应的功能)
- cuda runtime version支持显卡对应的算力
了解上述三个的关系后,我们需要进行如下工作:
- 确定自己显卡的算力
首先通过驱动软件或者任务管理器确定自己的显卡型号 (NVIDIA GeForce MX350)
google搜索cuda,点进Wikipedia后往下翻可以看到一张表格,找到上面显卡型号对应的算力(这个网站里面输入显卡型号也可以查询)(6.1)
- 确定自己可选择的cuda runtime version
根据下图确定cuda runtime version (8.0-12.0都可以)
- 进入NVIDIA官网根据自己的显卡型号安装显卡驱动最新版本
- 查看自己的cuda driver version
打开命令行窗口,输入nvidia-smi
(11.8)
- 最终确定适用的cuda runtime version,确保cuda driver version ≥ cuda runtime version。(可以选择小于自己cuda driver version的最高版本,这里我们选择11.7)
安装pytorch
安装pytorch需要安装pytorch,torchvison,torchaudio三个包
利用conda安装pytorch:
-
进入pytorch官网,点击install,根据自己的情况进行选择后,复制最后一行的指令
-
打开anaconda的命令行,用
conda activate xxx
切换到要安装pytorch的虚拟环境 -
执行第1步复制好的指令,会显示需要下载的一些包,我们先检查这些包的版本是否正确后,输入y回车后继续执行
主要检查pytorch这一项,后面的py3.9表示适用于python3.9,cuda11.7是之前选择的cuda版本,cudnn是神经网络可以利用gpu加速的包(很多教程会要你单独安装cudnn,其实并不需要,pytorch现在已经将它集成进来了)
由于pytorch的通道的服务器在国外,可能会出现下载速度非常慢的情况,可以
ctrl+c
关掉当前下载,在添加镜像源后重新进行下载(将之前命令中的-c pytorch
改成-c + 镜像地址
)
验证pytorch是否安装成功
-
打开anaconda命令行窗口,输入
conda activate xxx
激活安装pytorch的虚拟环境 -
输入
conda list
,看有没有pytorch或者torch -
输入
python
,进入python解释器 -
输入
import torch
-
输入
torch.cuda.is_available()
,如果显示True,就说明pytorch安装成功
安装PyCharm并进行配置
-
下载PyCharm(https://www.jetbrains.com/pycharm/):下载社区版即可,学生也可以免费申请专业版
-
安装PyCharm:安装路径中最好不要有中文字符,在安装选项中按下图勾选
-
配置合适的python解释器
我们的python项目,要运行起来就需要一个python解释器,在pycharm中新建项目时,它会我们先配置一个python解释器。接下来介绍一下如何配置python解释器。打开PyCharm,点击New Project新建项目
如果选择创建新的环境,它就需要重新下载一下包和库,所以我们一般选择使用之前已经配置好的虚拟环境
点击①下拉找到虚拟环境,再点击create即可
如果点击①没有找到需要的环境,那么点击②,之后选择Conda Environment,它会自动检测我们之前创建虚拟环境
可以发现这里只有我们自己创建的虚拟环境,也就是envs底下的虚拟环境。但是我们在安装anaconda的时候有一个base虚拟环境,它位于我们的安装目录底下如果想添加base虚拟环境,PyCharm又没有检测到的话,我们可以按照下面步骤添加。
首先确定你的虚拟环境位于什么地方(base在安装目录底下,自己创建的环境在安装目录的envs文件夹底下),点击右边的按钮,找到anaconda的安装目录,下拉找到python.exe选中即可(如果要添加自己创建的虚拟环境,就选envs文件夹下面的对应环境中的python.exe)
给下载的项目设置合适的虚拟环境
在上一部分已经介绍了在pycharm中新建一个项目如何选择虚拟环境,但是我们有的时候并不是新建项目,而是从网上下载一个项目再用pycharm打开它,这一部分就来介绍一下我们拿到这些项目代码或文件夹,怎么用pycharm打开它并进行合适的配置。
以github上的项目为例
-
首先下载项目。用
git clone
或者下载压缩包后解压。 -
打开PyCharm,找到项目位置并打开
如果打开pycharm是下面的界面的话就按找下图步骤选择项目
-
有的项目因为有一个叫requirements.txt的文件,它里面写了这个项目中需要用到哪些包,我们在用pycharm打开这个项目时会跳出一个弹窗,问我们是否根据requirements.txt文件创建虚拟环境。但一般情况下我们都不按照这种方式创建虚拟环境,选择cancel即可。
-
点击File->Settings->Project->Python Interpreter,选择想要的python解释器后点击OK
-
打开requirements.txt,它会提示还有哪些包需要安装,点击安装即可
如果我们的项目没有requirements.txt文件,我们可以先直接点击运行,它缺什么包就会报错,然后直接根据报错的信息用命令行安装相应的包