在Ubuntu16.04上安装 显卡驱动 + CUDA + cuDNN + Tensorflow-gpu + Keras + PyCharm,目的是为了深度学习所用,博主参考了众多资料,最终成功将所有软件安装完毕,且能成功运行使用,因而写下该篇安装教程,供借鉴参考。
1、虚拟机使用 CUDA 问题
CUDA需要使用电脑的物理显卡,而在某些虚拟机中无法调用本机的物理显卡,仅能使用其提供的虚拟显卡,因此无法使用CUDA,例如VMware,但也有某些虚拟机能够使用电脑的物理显卡,不过,虚拟机的性能相对较低,对后期实验的效率有较大影响,推荐使用本身系统为Ubuntu的电脑或安装双系统使用。博主的另一篇博文 Windows系统下,Ubuntu安装至移动硬盘(简单分析与详细安装教程)提供了在移动硬盘中安装Ubuntu系统的方法,若有需要,可以借鉴。
2、版本问题
虽然许多博客都有强调 CUDA 与 cuDNN 或与 Tensorflow 需要对应版本的问题,但经博主安装后发现,不仅仅是这三个软件需要安装对应版本,显卡驱动、CUDA、cuDNN、Tensorflow-gpu、Keras、Python、GCC 这7类都必须实现版本一一对应,否则会产生一系列似是而非的错误。具体的版本对应,博主会在本教程中列出。
3、检查电脑配置
某些博客在安装之前都强调需要检查自己电脑的一些配置,例如显卡为单显卡还是双显卡、显卡种类是否符合安装要求等。其实不同的安装方法对这些配置的要求并不相同,但以防万一,检查配置总是万无一失的。
检查显卡配置可参考:Ubuntu如何正确地切换Intel和Nvidia显卡
若上方的网址未有响应,可使用该网址:Ubuntu如何正确地切换Intel和Nvidia显卡
在终端中可使用以下命令查看电脑中有哪些显卡:
lspci -k | grep -A 2 -i "VGA"
博主个人认为该条命令无法查看电脑中的全部显卡,例如博主在终端执行该命令后的结果如下图,图中显示了Intel显卡,但博主电脑中的Nvidia显卡没有显示,但不排除博主将Nvidia显卡关闭了所以无法显示的情况。
若与博主出现以上相同的情况也无需担心,可使用以下命令查看电脑中是否有Nvidia显卡:
lspci | grep -i nvidia
该命令将会显示出电脑可使用的Nvidia显卡的简单信息,例如博主的:
而后可通过CUDA官网提供的方法,检查你的显卡能否支持CUDA的使用,官网网址:Frequently Asked Questions(将滚动条拉到最底,在该页面下方有相关回答)
在安装过程中还有其他需要查看的配置,会在而后的教程中说明,Nvidia显卡的支持保证了能否使用CUDA,如果连该条件都无法满足,也无需查看其他配置了。
4、Anaconda图形界面一站式安装
博主查阅许多资料,发现有提供 Anaconda 图形界面自动安装CUDA+cuDNN+Tensorflow的方法,博主也尝试过该方法,但不知是博主的Anaconda图形界面安装有问题,还是其他的原因,在正式安装前,Anaconda会显示将自动安装的CUDA与cuDNN版本信息,博主无论安装任何版本的Tensorflow,CUDA与cuDNN的版本都是不正确的,所以博主最终放弃了这种方法,如果有想尝试的同僚可以参考:Ubuntu搭建TensorFlow GPU环境——无错详细完整版
在安装之前,请确定显卡驱动、CUDA、cuDNN、Tensorflow-gpu、Keras、Python、GCC的版本,最好记录在TXT文件中,防止版本安装错误,卸载重装的问题!!!
对于CUDA、cuDNN、Tensorflow-gpu、Python、GCC的版本,Tensorflow的官网提供了部分对照版本:经过测试的构建配置(将滚动条拉到最底,在该页面下方有相关表格,博主直接将其截取了一份)
CUDA与cuDNN的版本某些仅显示了一个整数,例如cuDNN版本为7,但实际上7.4版本的cuDNN也是支持的,在cuDNN的官网中提供了某些版本的对应下载选项(官网网址:cuDNN Archive)
在某些博客中也提供了官网未提供的其他对应版本,这里就不一一写出,需要的同僚可以自行搜索。
显卡驱动的版本是与CUDA版本对应的,在Nvidia的官网中提供了对应版本(官网网址:CUDA Toolkit and Compatible Driver Versions,拉动滚动条,可找到对应的表格,博主直接将其截取了一份)
显卡驱动的版本号对于不太熟悉的同僚可能会觉得有点奇怪,对于该教程而言,只需记下版本的编号,代表的含义可以不用理会
Keras的版本与Tensorflow和Python相关,博主找到了一个网址,提供了其对应的关系(网址:Environments,因提供的表格内容过多,博主仅截取了一部分内容)
在安装之前一定要确定配置的各个版本,Python的版本博主推荐3.6,该版本也是博主安装教程中使用的版本
该安装教程手动安装了对应的显卡驱动,博主尝试过通过CUDA自动安装对应的驱动,但没有成功,据说是因为博主的电脑是双显卡导致(Intel显卡与Nvidia显卡),既然如此,手动安装显卡驱动的成功率与受众范围应该会更符合当下需求。
CUDA的官网其实有提供安装CUDA的详细方法,但官网的安装方法主要基于CUDA自动安装显卡驱动,而本教程的安装方法实则手动安装显卡驱动,若按照本教程的方法安装失败,可参考官网的安装教程,具体网址与推荐博文会在本教程中的“安装CUDA”部分给出。安装之前,建议多查阅几篇不同的安装教程,选择最适合自己的方法。
该步骤的目的是为下载显卡驱动做好准备,若不换源,显卡驱动将下载得特别特别特别慢!!!
1、备份源,将sources.list备份到sources.list.bak
cd /etc/apt/
sudo cp sources.list sources.list.bak
2、换源,换成阿里云源,打开sources.list文件后,直接将以下的阿里云源替换原本文件的全部内容
sudo gedit sources.list
阿里云源:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
3、保存并关闭sources.list文件后,使用以下命令更新源
sudo apt-get update
4、查看源的更新情况,在Ubuntu系统最上方的菜单栏的最右侧,有个关机按钮,选中其中的“系统设置…”,在弹出界面的“系统”中选中“软件和更新”,在最新的弹出界面中可查看目前使用的源地址
安装显卡驱动的方式共有三种:
(1)使用Ubuntu自带的驱动进行安装
(2)使用PPA源进行安装
(3)使用官方的Nvidia驱动包进行手动安装
由于Ubuntu自带的驱动可能不满足所需,而官方的Nvidia驱动包安装过于复杂,容易出错,因此本教程选择使用PPA源的安装方法,精简显卡驱动的安装过程。若采用本教程的方法未能成功安装显卡驱动,可自行搜索使用官方的Nvidia驱动包进行手动安装的复杂方法。
1、禁用 Nouveau,防止显卡驱动安装完毕,电脑重启后循环停留在用户登录界面的情况
在终端使用以下命令查看此时nouveau的加载情况,若没有输出,则说明nouveau已被禁用,可跳过该步骤,若有输出,则需要禁用nouveau
lsmod | grep nouveau
在 /etc/modprobe.d 中创建 blacklist-nouveau.conf 文件
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
在 blacklist-nouveau.conf 文件中输入以下内容(键入“i”转成输入模式,将内容输入后,键入“Esc”退出输入模式,而后键入“:wq”保存并退出文件)
blacklist nouveau
options nouveau modeset=0
更新文件
sudo update-initramfs -u
重启
sudo reboot
重启后再次输入以下命令,若无内容输出,则nouveau已被禁用
lsmod | grep nouveau
2、添加PPA源
sudo add-apt-repository ppa:graphics-drivers/ppa
3、更新系统
sudo apt-get update
4、查看可供安装的显卡驱动版本
ubuntu-drivers devices
sudo apt-get install nvidia-driver-xxx
也可使用图形化界面,安装所需版本的显卡驱动,选择需要安装的显卡驱动,点击“应用更改”,等待安装完毕
sudo reboot
7、重启后,在终端输入以下命令,查看此时的显卡驱动情况
nvidia-smi
安装CUDA之前,需要查看电脑中的某些配置,确保满足条件,能够成功安装CUDA使用,该部分的配置要求在CUDA官网中有提供相关文件,但由于不同版本的CUDA需求的配置并不相同,只有在CUDA官网选定下载的软件包后,才会提供对应版本的安装手册,其中便有提供环境配置的需求表格
CUDA不同版本的安装流程没有差别,只是在一些界面和语言表述方面有细微不同,但不影响安装使用,若对本教程中的某些步骤存有疑惑,可参考官方给出的安装手册
1、下载CUDA软件包
在CUDA官网选择需要下载的CUDA软件包,注意软件包的版本,点击软件包的名称即可进入对应下载页面,官网网址:CUDA Toolkit Archive
选择软件包的安装平台信息,注意最后的 Installer Type 请选择 runfile,据说以该方式下载,成功率较大,若某一版本的CUDA没有你需要的安装平台可供选择,可以换一版本使用
安装平台信息选择完毕后,会出现对应的下载按钮,先不将其软件包下载至本地,找到下载信息的下方,会有一段小字,其中的 Installation Guide for Linux 是CUDA官网为该版本的CUDA提供的安装手册,将其打开,查看所需的环境配置(图中提供的是9.0版本的环境配置)
在终端使用以下命令查看本地Linux系统的版本信息:
uname -m && cat /etc/*release
uname -r
gcc --version
ldd --version
若CUDA的环境配置符合要求,即可下载对应的软件包,若某配置不符合要求,可以换一版本的CUDA下载,或是查看官方安装手册,解决问题
下载CUDA软件包,可能出现两种形式,一种直接提供了 Download 按钮以供下载,另一种仅提供了两行命令进行下载
若是提供了 Download 按钮,可直接下载,保存到自己能够找到的位置,若是提供了两行命令,则需打开Ubuntu系统的文件管理器(下图为Ubuntu系统的文件管理器可执行图标),选择你想保存文件的位置,在该位置鼠标右键打开终端,输入整行的 wget 命令,下载软件包,而另一条安装命令先暂时忽略它
成功下载好CUDA软件包后,需要检查其序列和,保证该软件包下载正确,使用以下命令可检查其序列和,若无报错,则该软件包可用,若报错,则需重新下载该软件包(其中 xxx 是你所下的软件包的名称补充位)
md5sum cuda_xxx.run
2、安装CUDA
该步骤需要脱离图形界面,使用命令行界面安装CUDA,因此,建议将该教程转移至智能手机或平板中查看,以防步骤错误,导致安装失败
为了命令行界面的安装方便,建议将下载的CUDA软件包,即 .run 文件移动到 “Home” 所在,如下图所示的位置,或是记住该软件包根目录起始的路径,同时可将该软件包更名,以便记忆输入
若设有自动登录的用户,请先关闭自动登录,可在 系统设置–>用户账户 中关闭,而后重启电脑,在需要输入密码的登录界面中,键入 Ctrl + Alt + F1 ,进入命令行界面,不要直接输入密码登录图形界面,若登入图形界面,请重启电脑在登录界面进入命令行界面
进入命令行界面后,根据提示,输入用户名与密码,登录用户,而后根据以下步骤完成CUDA的安装:
(1)关闭图形化界面
sudo service lightdm stop
(2)执行安装命令,若将CUDA软件包移动至 “Home” 所在,则无需添加软件包路径,直接输入安装命令即可,若未移动软件包,则需添加该软件包所在路径(其中 xxx 是CUDA软件包的名称,添加路径需要在名称前添加,例如 sudo sh /home/wjh/xxx.run )
sudo sh xxx.run
(3)按照提示安装CUDA,不同版本的CUDA安装的提示可能不同,注意以下几点,基本能够成功安装:
某些版本会在安装之前显示一堆的服务条款,此时按回车可继续服务条款的阅读,请注意服务条款结束的时机,防止回车默认安装的输入
请注意安装提示要求的输入,可能提示输入 accept ,可能提示输入 yes 等,一定要看清输入的要求
某些版本的CUDA会询问安装的内容,因本教程已安装显卡驱动,若询问是否安装 Driver(驱动) 或是 openGL ,一定一定一定要选择 no ,某些版本在安装之前提供了安装选项,而不是一步步地询问安装内容,在选择的时候一定不要选择安装 Driver(驱动) 或是 openGL
CUDA的安装过程会询问某一内容安装的位置,可根据提示,回车默认安装位置,或是自行输入安装的位置
若CUDA安装成功,在最后会提示 successed 或 installed ,若安装失败,则会提示 failed ,通常在每一安装内容之后,都会有对应的提示,若其中有某一内容提示安装失败,此CUDA都无法使用,此时可根据安装最后显示的卸载命令,在命令行界面中将CUDA卸载重装
(4)安装成功后,重新启动图形化界面
sudo service lightdm start
(5)若输入以上命令没有跳转图形化界面,则键入 Ctrl + Alt + F7 手动返回图形化界面,而后输入用户密码,登录用户,若成功进入桌面,则CUDA安装成功,若循环停留在用户登录界面,请重新进入命令行界面,将安装的CUDA卸载重装
3、设置环境变量
(1).bashrc 文件设置
在终端输入以下命令,打开 .bashrc 文件
sudo vim ~/.bashrc
在 .bashrc 文件末尾添加以下内容,若是安装CUDA时安装位置都设为默认,则路径不变,否则需要根据自己的情况修改路径
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
以上的export内容是博主查看他人博客添加的,事实上添加以上的内容还存有一定的错误,博主最终的 .bashrc 文件内容如下:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
配置生效
source ~/.bashrc
(2)/etc/profile 文件设置
在终端输入以下命令,打开 /etc/profile 文件
sudo gedit /etc/profile
在 /etc/profile 文件末尾添加以下内容,若是安装CUDA时安装位置都设为默认,则路径不变,否则需要根据自己的情况修改路径,其中 cuda-9.0 需要根据自己的文件名进行修改
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH
输入完毕,保存文件,关闭文件后重启电脑
4、测试CUDA
查看CUDA
nvcc --version
CUDA安装完毕后,自带有用于测试的例子,默认存放于 “Home”
进入该Samples文件,鼠标右键打开终端,向终端输入以下命令,编译测试代码
make
若编译成功,会提示 Finished building CUDA samples
编译完成后,在终端输入以下命令,进入Samples中的 bin/x86_64/linux/release 文件夹
cd bin/x86_64/linux/release
./deviceQuery
若最终结果为 PASS ,则说明测试成功
./bandwidthTest
若最后结果为 PASS ,则说明测试成功
可在cuDNN的官网上下载对应版本的cuDNN安装包,官网网址:cuDNN Archive
1、安装cuDNN
cuDNN的安装方法有两种,需要下载不同的安装包:
(1).tgz 文件安装
该方法仅需下载一个安装包,如图所示
下载完毕后,进入文件所在位置,解压安装包(其中 xxx 为安装包的补充名称)
tar -xzvf cudnn-xxx.tgz
而后将cuDNN拷贝,放入CUDA对应的文件夹中,并赋予其权限
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
(2).deb 文件安装
该方法需要下载三个安装包,如下图所示
分别对这三个安装包执行以下命令进行安装,文件名请自行修改,要注意,必须按以下顺序进行安装,否则会因依赖问题而报错
sudo dpkg -i libcudnn7_7.6.4.38-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.4.38-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.4.38-1+cuda9.0_amd64.deb
2、测试cuDNN
选择 .deb 文件安装cuDNN,默认在 “Home” 位置,会安装有cuDNN的测试案例
进入 samples 文件中的 mnistCUDNN 文件夹下,鼠标右键打开终端
编译文件
make clean && make
编译后执行
./mnistCUDNN
若最后结果显示 Test passed,则说明测试成功
本教程基于 Anaconda3 安装 Tensorflow-gpu,Anaconda3内置可安装Python的不同版本,因此无需特地手动安装Python
1、下载 Anaconda3 安装包,使用清华镜像下载,网址:清华大学开源软件镜像站
2、进入下载安装包所在位置,鼠标右键打开终端,输入以下命令安装Anaconda3(其中 xxx 为你所下载的 Anaconda3 安装包名称)
bash ./xxx.sh
安装 Anaconda3 过程中会有一些提示,除去最后一个询问是否安装VSCode软件可以自行选择,其余提示都输入 yes ,默认Anaconda3安装在 “Home” 位置
3、换源,向终端输入以下命令,添加清华源
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/
conda config --set show_channel_urls yes
4、创建Python环境,其中 tensorflow-gpu 为创建的环境名称,可自行修改,python=3.6 为该环境依赖的Python版本,可自行修改版本
conda create -n tensorflow-gpu python=3.6
创建环境完成后,会提示激活环境与取消激活的命令,可将这两条命令记录在TXT文件中,以便今后使用
5、激活环境,其中 tensorflow-gpu 为需要激活的环境名称,可自行修改
source activate tensorflow-gpu
6、安装 Tensorflow-gpu,其中 tensorflow-gpu==1.10.0 是Tensorflow-gpu安装的版本,可自行修改版本
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.10.0
7、安装完毕后,可测试Tensorflow-gpu是否安装成功
输入以下命令执行Python
python
输入以下命令导入tensorflow包,回车导入,若无报错,则说明Tensorflow-gpu安装成功
import tensorflow as tf
8、取消激活,退出环境(退出Python可键入 Ctrl + Z )
source deactivate
每次进入Anaconda3提供的Python环境中都需要激活环境,当不再使用该环境时,需要取消激活,再退出环境,如果退出环境后要再次进入环境,需要打开一个新的终端使用,而原本的终端无法再次激活环境
source activate tensorflow-gpu //激活
source deactivate //取消激活
Keras的安装与Tensorflow-gpu的安装类似,都是基于Anaconda3实现
1、打开终端,激活安装有Tensorflow-gpu所在的环境,其中 tensorflow-gpu 为需要激活的环境名称,可自行修改
source activate tensorflow-gpu
2、安装Keras,其中 keras-gpu==2.2.0 为Keras的版本信息,因安装Tensorflow-gpu,故而Keras也需安装GPU版本,版本号可自行修改
pip install keras-gpu==2.2.0
3、安装完毕后,可测试Keras是否安装成功
输入以下命令执行Python
python
输入以下命令导入keras包,回车导入,若仅弹出 Using TensorFlow backend. ,而无报错,则说明Keras安装成功
import keras
4、取消激活,退出环境(退出Python可键入 Ctrl + Z )
source deactivate
Tensorflow-gpu最常使用的语言是Python,使用命令行界面运行Python具有一定的局限性,博主习惯使用PyCharm平台进行Python编程,该部分提供了PyCharm的设置方式,使其能够使用基于Anaconda3的Tensorflow-gpu以及Keras
关于PyCharm的安装,因其较为简单,这里就不再详细说明,官网下载网址:Download PyCharm(Community社区版是免费版本,Professional专业版仅提供一个月的试用期,可参考的博客:Ubuntu 16.04 安装 PyCharm)
安装完毕后,新建项目,而后在最上方菜单栏找到 File --> Settings… --> Project:… --> Project Interpreter,而后点击图中所示的红框中的齿轮按钮,选择 Add…
而后在弹出的窗口左侧选择 Conda Environment,根据图中提示,先选择 Existing environment,而后点击 “…” 按钮
选中Anaconda3提供的Python执行文件,博主的可执行文件目录如图所示,其中 tensorflow-gpu 是博主的环境名称,而Python执行文件可能会有三个,分别为 Python、Python3、Python3.6(与版本有关),任选其中一个都可,选择完毕后点击 OK 按钮保存更改,同样在上一级窗口中也点击 OK 按钮保存更改
在新建的项目中创建一个Python文件,输入以下内容,运行程序,查看其输出(创建Python文件可鼠标右键点击项目文件名,在 New 中选择 Python File 即可,运行程序可在代码输入界面点击鼠标右键,找到 Run ’…’,点击即可运行程序)
import tensorflow as tf
import keras
若最后输出不报错,则说明PyCharm设置成功,可用于编写与Tensorflow-gpu相关的代码