Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

此篇博文针对零基础的同学所撰写,基本属于step-by-step。需要注意的是:目前CUDA已经到了CUDA10.0版本,但遗憾的是目即使最新的Tensorflow1.12也暂时只支持CUDA9.0,因此,我们选择9.0版本进行安装。当然,如果实在想尝鲜,可以通过tensorflow的源码安装,需要自己编译,我们将在另外文章中专门介绍,这里不详述。

一、Ubuntu18.04 LTS系统的安装

1. 安装文件下载

登陆ubuntu官网(https://www.ubuntu.com/index_kylin),点击“Download”选项,会出现下载页面,我们选择ubuntu 18.04 LTS Desktop版本,跟16.04LTS版本一样,这是一个长期维护版本(想尝鲜的可以选择18.10,但不建议这么做)。一般下载速度很快(我平时网速不太理想的情况下都达到了4M速度),下载文件的全名为:ubuntu-18.04.1-desktop-amd64.iso,大概1.81GB.

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

2. 制作U盘安装镜像文件

  • (1) 首先下载U盘启动文件制作工具,这里我们用rufus,官网(https://rufus.ie/, 貌似直接点击这个网站会出现404错误,但是百度搜索rufus,第一条就是rufus官网), 默认打开下载英文版(也可以选择下载中文版),这是个绿色软件,不需要安装,我们选择下载最新的rufus 3.3版本。
  • (2)打开rufus-3.3.exe,如果没什么意外的话,在rufus软件界面中的设备一栏应该出现我们插入电脑的U盘的盘符(比如这里的YPZHAI),如果没有找到的话说明U盘没有正确插入或出现了其它问题。点击“选择”按钮,选取我们刚下载好的“ubuntu-18.04.1-desktop-amd64.iso”,其它设置采用默认值即可。点击“开始”,会弹出一个通知对话框,直接点击“是”,进入下一步,选择默认的“以ISO镜像模式写入”,点击进入下一步,会警告你U盘上的数据会被全部清空,选择“是”,大概等待1分钟左右,安装U盘应该已经制作好。

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

3. 开始安装

  • (1)插入U盘,启动电脑,按下“F2”(不同的电脑按键不同,请仔细查看启动界面上的提示)进入BIOS设置界面,在启动项(Boot Priority)选择从U盘启动(不同的主板显示可能不一样),保存退出。
  • (2)开始安装,一般会让选择语言、键盘布局等(选择默认即可),在选择“Updates and other software”时,选择"Normal installation",这样一些常用的软件就默认安装上了。在“Installation type”中,如果不打算安装双系统,直接选择第一个“Erase ****”,这样电脑上原先的系统以及相关文件数据等都将全部删除,因此在此之前一定要备份好重要数据!接下来进入“Where are you”时区选择,选择“shanghai”即可,下一步让你输入你的名字、电脑名、用户名、以及密码等。输入完毕,正式进入安装流程,整个过程大概需要20分钟左右。

二、设置软件源的国内镜像

1. 设置方法

Ubuntu在安装软件的过程中,默认从其官方源下载,但由于国内网络的原因,往往很慢。因此为了加快安装速度,建议设置国内镜像。在ubuntu系统中,软件源记录在/etc/apt/source.list文件中,因此,我们只需要将要加入的国内镜像的地址写入这个文件即可,在写入之前记得备份一下原始的内容。

sudo cp /etc/apt/source.list /etc/apt/source.list.bak  # 备份
sudo gedit /etc/apt/source.list # 用gedit打开source.list文件

将下述内容全部拷贝到source.list文件的头部,保存退出。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

然后,在命令行执行如下命令更新软件源

sudo apt-get update

等待片刻,软件源更新完成,这样采用apt-get install方式安装软件时将优先从上述国内镜像地址寻找软件源,速度将快不少。到此,如果你不想了解关于国内镜像的知识,可以直接进入下一节开始显卡驱动的安装,如果想了解ubuntu的镜像知识,可以继续往下看。

2.关于ubuntu镜像的小知识

首先,简单介绍下关于Ubuntu的source.list文件的内容,该文件在/etc/apt/目录下,它记录了ubuntu软件更新的源的地址及目录,默认是ubuntu的官方源,source.list文件内容的具体含义如下:

1 2 3 4 5 6 7
deb url 版本代号(比如xenial) main restricted universe multiverse
deb-src url 版本代号(比如xenial) main restricted universe multiverse

上述格式中,第1列为deb或deb-src,分别代表直接通过.deb文件进行安装和通过source code源文件进行安装两种方式;第2列为URL地址,比如ubuntu官方源的地址为http://archive.ubuntu.com/ubuntu/,第3列为版本代号,具体见下表(这里只给出.04版本的,其它版本可以自己取查看),一般只取代号的第一个单词(比如16.04版本只取Xenial这个单词),需要注意的是版本一般有5个不同的类别(这里以xenial为例说明,一般有xenial, xenial-updates, xenial-security,xenial-proposed xenial-backports,一个类别一条记录,实际上是一个文件夹),从第4列到第7列为版本代号文件夹下不同的文件夹的名称(一般也有4个不同的文件夹,分别为:main,restricted,universe,multiverse,其具体意义见下表),当然第4到第7列是并列关系,完全可以每个文件夹一条记录,也可以并列在一起。

版本号 版本代号
14.04 Trusty Tahr (可靠的塔尔羊)
15.04 Vivid Vervet (活泼的小猴)
16.04 Xenial Xerus (好客的非洲地松鼠)
17.04 Zesty Zapus(开心的跳鼠)
18.04 Bionic Beaver(仿生海狸)
文件夹名 意义
main 完全的*软件
restricted 不完全的*软件
universe 官方不提供支持与补丁,全靠社区支持
multiverse 非*软件,完全不提供支持和补丁

下面分别给出18.04版本的官方源、阿里云源、以及清华的源

  1. 官方源
deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 清华的源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe

三、Nvidia显卡驱动的安装

1. 首先查看显卡型号和推荐的显卡驱动

ubuntu-drivers devices

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

从输出的信息看到推荐的是nvidia-driver-390的驱动,因此我们安装nvidia-390驱动。需要注意的是有个奇怪的现象就是在中断输入上述命令,有可能得到不同的推荐,比如有可能推荐384或396或410驱动,在16.04系统上,我们安装384驱动比较保险,在18.04系统上,理论上也没问题,这里我们还是按照系统推荐,安装390驱动。

2. 安装nvidia-390版本驱动

# 将系统中存在的nvidia驱动全部卸载掉(如果有的话)
sudo apt-get purge nvidia* # 添加ppa源并更新
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update # 安装nvidia-390版本
sudo apt-get install nvidia-390

安装速度取决于下载速度,还是有点慢,但勉强接受,如果安装失败,可以再试1次。安装完毕记得一定要重启系统。

3. 重启系统,可以查看安装是否成功

nvidia-smi

如果出现如下信息,说明驱动安装成功。

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

四、CUDA9.0的安装

1. CUDA版本选择

目前CUDA已经到了CUDA10.0版本,但遗憾的是目即使最新的Tensorflow1.12也暂时只支持CUDA9.0,因此,我们选择9.0版本进行安装。当然,如果实在想尝鲜,可以通过tensorflow的源码安装,需要自己编译,我们将在另外文章中专门介绍,这里不详述。

这里需要注意的是:在nvidia的官网上,我们发现CUDA9.0的ubuntu版本只有16.04和17.04的,而没有18.04的(CUDA10.0有18.04版本),不过没关系,经过测试发现17.04版本在18.04版本上能正常安装并运行,因此这里我们选择下载17.04版本的(16.04的没有测试,理论上应该也是没有问题的)。

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

2. 安装CUDA9.0

首先从Nvidia官网下载cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb和 4个补丁 文件。安装步骤如下:

Step1:切换到下载好的文件目录,并安装meta-data

sudo dpkg -i cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb

Step2: 安装CUDA的GPG Public Key

sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub

Step3:更新APT源

sudo apt-get update

Step4:安装CUDA

sudo apt-get install cuda

Step5:安装补丁

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda

当然,不安装上述补丁对后续的安装也应该没多大影响,但是建议还是把上述4个补丁全部安装,这对系统运行的性能可能有所提升。

3. 设置环境变量

在 ~/.bashrc中设置环境变量:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

运行如下命令使得环境变量生效

source ~/.bashrc

测试环境变量是否生效,可以运行一下nvidia的查看CUDA版本的命令

nvcc --version

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

如果出现上述信息,说明环境变量设置生效。

五、cuDNN7.3的安装

这里我们选择下载cuDNN v7.3 for CUDA9.0版本(子项为cuDNN v7.3 Library for Linux),安装包为cudnn-9.0-linux-x64-v7.3.1.20.tgz。

Step1: 解压

tar -zxvf cudnn-9.0-linux-x64-v7.3.1.20.tgz

在当前目录下会生成cuda目录

Step2:将cudnn.h文件和lib文件拷贝到CUDA的安装目录下

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d

注意上面第二行命令中的-d不能少,否则会提示.so不是symbol link。

Step3:赋予执行权限

sudo chmod a+x /usr/local/cuda/include/cudnn.h
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*

经过上述步骤,就基本配置好了系统以及CUDA环境,下面我们就可以安装配置Tensorflow框架了

六、Tensorflow-1.12的安装

1. Python开发环境配置.

首先,我们要确保系统中安装了如下Python环境:

python3, pip3,以及 virtualenv,在命令行查询相应的版本

python3 --version
pip3 --version
virtualenv --version

如果提示没有安装,则用如下命令安装:

sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv

2. 创建Python虚拟环境

python的虚拟环境用来隔离系统和相应的安装包,这非常有利于不同版本之间的隔离,总之好处多多,尤其是不同的项目使用不同的软件版本时,能避免令人头痛的版本混乱问题,强烈建议安装虚拟环境。安装命令如下:

virtualenv --system-site-packages -p python3 ./venv

上述命令的意思是创建一个虚拟环境(该虚拟环境文件被放置到venv目录下),该环境使用python3,并且将python3下已经安装的包都复制过来(--system-site-packages),如果选择不复制python3下已经安装的包,则使用--no-site-packages,这样,已经安装到系统python环境中的所有第三方包都不会复制过来,这样就会得到一个不带任何第三方包的“干净”的python运行环境。这里我们选择复制python3下已经安装的软件包。

如果要使用,则用下述命令激活该虚拟环境

source ./venv/bin/activate

如果环境激活,则shell命令行前面会出现(venv)。

在该虚拟环境下安装任何软件包都不会影响系统python环境。如果要退出该虚拟环境,则在命令行执行即下述命令可退出该虚拟环境。

deactivate

3. 建立软链接

为了使用方便,我们可以建立一个软链接,假设我们的虚拟环境安装的绝对路径是/home/scek/Project/venv/,则激活的shell命令的绝对路径是/home/scek/Project/venv/bin/activate。一般我们启动终端的时候,会默认在/home/scek/目录下,在这个目录下建立软链接,链接名称假设为venv,则用下面命令:

ln -s ./Project/venv/bin/activate  venv

建立软链接之后,一启动终端,就可以直接输入:

source venv

即可激活虚拟环境,对比原始命令

source ./Project/venv/bin/activate

方便了不少。

4. 安装Tensorflow

安装很简单,执行如下命令即可:

pip install tensorflow-gpu

上述命令会安装最新的release版本(目是1.12版本),如果要指定安装版本,则采用如下命令

pip install tensorflow-gup = 1.10

但是由于国内网络环境问题,安装速度慢的无法忍受,这里我们推荐采用清华的pypi镜像进行安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu

测试安装是否成功

python -c "import tensorflow as tf; print(tf.__version__)"

如果安装成功,则会输出当前的版本。

为了方便其他pip包安装的方便,我们可以将pypi源永久修改,免得每次都要输入镜像地址:

首先在当前用户目录下新建~/.pip/pip.conf

mkdir .pip
sudo vim .pip/pip.conf

将下述内容写入pip.conf文件中并保存

[global]
index-url = https://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com

这里我们采用了阿里云的pypi源,也可以采用其它的源:

https://pypi.tuna.tsinghua.edu.cn/simple    # 清华
http://mirrors.aliyun.com/pypi/simple/ # 阿里云
https://pypi.mirrors.ustc.edu.cn/simple/ # 中国科技大学
http://pypi.hustunique.com/ # 华中理工大学
http://pypi.sdutlinux.org/ # 山东理工大学
http://pypi.douban.com/simple/ # 豆瓣

七、Jupyter notebook的安装配置

写python代码,可以采用的工具有很多:

  1. 直接在命令行输入python,即可进入python开发环境
  2. 用第三方代码编辑器,推荐使用sublime text3。 或者用第三方IDE工具, 比如Pycharm, 但是这个软件很耗内存,IDE工具的优点和缺点基本都有,个人不太喜欢使用这个IDE。
  3. 使用Jupyter Notebook. Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。是非常友好的一款开发工具,尤其适用于代码测试,编写交互式文档,等等。需要注意的是,因为我们将tensorflow等工具安装在venv虚拟环境下,因此,为了在jupyter中正常使用tensorflow,就必须做一些额外的工作,下面给出具体步骤:

(1)step1:安装jupyter notebook

sudo pip install jupyter

(2)step2:进入venv虚拟环境(注意必须进入虚拟环境),设置kernel

pip install ipykernel
python -m ipykernel install --user --name=tensorflow

上述--name=tensorflow是设置显示的环境名称,当然可以起一个任意的名字。

(3)Step3:启动jupyter

jupyter notebook

启动之后,在new新文件时可以选择tensorflow作为内核即可。

通过上述步骤,我们已经完全配置了深度学习所需的基本环境,可以在深度学习的海洋中遨游了。

上一篇:Spring MVC初始化参数绑定


下一篇:ubuntu16.04深度学习环境配置