此篇博文针对零基础的同学所撰写,基本属于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.
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盘应该已经制作好。
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文件
1
2
将下述内容全部拷贝到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
1
等待片刻,软件源更新完成,这样采用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版本的官方源、阿里云源、以及清华的源
官方源
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
阿里云源
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
清华的源
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
1
从输出的信息看到推荐的是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
1
如果出现如下信息,说明驱动安装成功。
四、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的没有测试,理论上应该也是没有问题的)。
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
1
Step2: 安装CUDA的GPG Public Key
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
1
Step3:更新APT源
sudo apt-get update
1
Step4:安装CUDA
sudo apt-get install cuda
1
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
1
测试环境变量是否生效,可以运行一下nvidia的查看CUDA版本的命令
nvcc --version
1
如果出现上述信息,说明环境变量设置生效。
五、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
1
在当前目录下会生成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
1
2
注意上面第二行命令中的-d不能少,否则会提示.so不是symbol link。
Step3:赋予执行权限
sudo chmod a+x /usr/local/cuda/include/cudnn.h
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*
1
2
经过上述步骤,就基本配置好了系统以及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
1
上述命令的意思是创建一个虚拟环境(该虚拟环境文件被放置到venv目录下),该环境使用python3,并且将python3下已经安装的包都复制过来(–system-site-packages),如果选择不复制python3下已经安装的包,则使用–no-site-packages,这样,已经安装到系统python环境中的所有第三方包都不会复制过来,这样就会得到一个不带任何第三方包的“干净”的python运行环境。这里我们选择复制python3下已经安装的软件包。
如果要使用,则用下述命令激活该虚拟环境
source ./venv/bin/activate
1
如果环境激活,则shell命令行前面会出现(venv)。
在该虚拟环境下安装任何软件包都不会影响系统python环境。如果要退出该虚拟环境,则在命令行执行即下述命令可退出该虚拟环境。
deactivate
1
3. 建立软链接
为了使用方便,我们可以建立一个软链接,假设我们的虚拟环境安装的绝对路径是/home/scek/Project/venv/,则激活的shell命令的绝对路径是/home/scek/Project/venv/bin/activate。一般我们启动终端的时候,会默认在/home/scek/目录下,在这个目录下建立软链接,链接名称假设为venv,则用下面命令:
ln -s ./Project/venv/bin/activate venv
1
建立软链接之后,一启动终端,就可以直接输入:
source venv
1
即可激活虚拟环境,对比原始命令
source ./Project/venv/bin/activate
1
方便了不少。
4. 安装Tensorflow
安装很简单,执行如下命令即可:
pip install tensorflow-gpu
1
上述命令会安装最新的release版本(目是1.12版本),如果要指定安装版本,则采用如下命令
pip install tensorflow-gup = 1.10
1
但是由于国内网络环境问题,安装速度慢的无法忍受,这里我们推荐采用清华的pypi镜像进行安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu
1
测试安装是否成功
python -c "import tensorflow as tf; print(tf.__version__)"
1
如果安装成功,则会输出当前的版本。
为了方便其他pip包安装的方便,我们可以将pypi源永久修改,免得每次都要输入镜像地址:
首先在当前用户目录下新建~/.pip/pip.conf
mkdir .pip
sudo vim .pip/pip.conf
1
2
将下述内容写入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代码,可以采用的工具有很多:
直接在命令行输入python,即可进入python开发环境
用第三方代码编辑器,推荐使用sublime text3。 或者用第三方IDE工具, 比如Pycharm, 但是这个软件很耗内存,IDE工具的优点和缺点基本都有,个人不太喜欢使用这个IDE。
使用Jupyter Notebook. Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。是非常友好的一款开发工具,尤其适用于代码测试,编写交互式文档,等等。需要注意的是,因为我们将tensorflow等工具安装在venv虚拟环境下,因此,为了在jupyter中正常使用tensorflow,就必须做一些额外的工作,下面给出具体步骤:
(1)step1:安装jupyter notebook
sudo pip install jupyter
1
(2)step2:进入venv虚拟环境(注意必须进入虚拟环境),设置kernel
pip install ipykernel
python -m ipykernel install --user --name=tensorflow
1
2
上述–name=tensorflow是设置显示的环境名称,当然可以起一个任意的名字。
(3)Step3:启动jupyter
jupyter notebook
1
启动之后,在new新文件时可以选择tensorflow作为内核即可。
通过上述步骤,我们已经完全配置了深度学习所需的基本环境,可以在深度学习的海洋中遨游了。