从装机开始搭建DL平台:Ubuntu16.04+GTX1070+CUDA8.0+TensorFlow(GPU)

第一篇博客,在近一周的无数次采坑后,总结一下从零开始的深度学习平台搭建过程。

  • 1.本文不适用虚拟机,只适用Ubuntu 16.04+win10双系统
  • 2.没有包治百病的教程,以下步骤仅供参考,出现问题请耐心google相关技术贴,对症下药

本文分为Ubuntu16.04+win10双系统安装和Ubuntu16.04系统下深度学习平台搭建过程两部分,主要针对整个过程中容易出现的bug进行说明,部分内容的详细操作教程已经通过链接引导,不再赘述。

基本情况

电脑:外星人ALWC15
处理器:i7-7700HQ
显卡:NVIDIA GTX1070
硬盘:SSD(256G)+机械硬盘(1T)
系统:win10(自带)+Ubuntu16.04.02(待安装)
内存:16G

第一部分 Ubuntu16.04+win10双系统安装

1 系统空间部署

因为装机过程没有截图,所以很多图片来自google,仅供说明。
参考教程的前两部分,首先关闭win10的快速启动,然后进入win10系统打开磁盘管理器,检查磁盘的分区情况,然后删除或压缩出来一个空间给Ubuntu使用,建议空间大于40G。本文选择在C盘(SSD,256G)上压缩出来80G空间安装Ubuntu。压缩出来的空间应该显示未分配的状态。

图片来自教程,绿色部分为留给Ubuntu的空间。

2 制作Ubuntu启动盘

使用空白U盘作为启动盘,下载UltraISO软件完成Ubuntu的ISO镜像刻录工作。刻录操作很简单,参考教程即可。
提示:刻录后不要根据其他教程急于进BIOS安装,请往下先完成硬盘检查,否则后续会出现各种bug

3 分区类别检查

首先应该分清自己的硬盘分区是MBR还是GPT,主板是传统BIOS还是集成了UEFI,上述名词的解释请参考教程
目前比较新的电脑基本都是UEFI+GPT模式,如果检查后符合这一标准,请继续参考本教程。如果是BIOS+MBR,请百度相关教程进行BIOS的修改和Ubuntu安装,或者参考本教程后面第6部分的安装建议。

4 BIOS设置及硬盘模式修改

请根据自己的机型百度开机时进入BIOS的方式。
因为不同机型的BIOS界面不同,所以仅进行文字说明,请参照下文在BIOS中完成相关设置。

4.1 boot list operation确认
UEFI模式下的电脑一般已经在boot中默认设置启动模式是UEFI,如果不是,请在boot list opreation 中将其切换为UEFI。目前Ubuntu的主流发行版已经完整支持UEFI引导,所以如果已经在第三步确认过电脑模式,则此处不需要修改。

4.2 关闭seurce boot
虽然开源社区已经有了grub-shim.efi的方案,Ubuntu本身也带微软安全启动的秘钥,但是为了后续第三方显卡驱动的顺利安装,此处请在BIOS中关闭seurce boot。

4.3 硬盘模式修改
(基本所有教程都略过这一步,但是根据掉坑经验,此处如果不做修改,后期在双系统引导时仍会出现bug。并非所有电脑都会遇见这个问题,不过建议在BIOS的SATA operation中先确认硬盘模式,此时默认的即为电脑原系统(win10)的驱动安装模式,可以先记下默认模式类别,不进行修改,后期遇见bug后再回到此步。)
笔者的电脑是戴尔外星人,出厂时统一把硬盘模式设置为RAID ON。这种模式并不利于发挥SSD的性能,也不利于在SSD上进行Ubuntu的安装。在alienware吧里参考教程进行操作,首先将win10系统开启安全引导,然后重启进入BIOS,在anvanced界面将SATA operation从RAID ON修改为AHCI。接着重启进入win10的安全模式,关闭安全引导,再次重启,就完成硬盘模式从RAID ON到AHCI的修改。
在此简单说明修改原因:后面安装Ubuntu时,如果不是AHCI模式,有可能无法完成硬盘扫描工作而使安装失败。此外,如果只改为AHCI模式安装Ubuntu而没对win10的驱动进行修改,在后面双系统引导时会出现win10只能在RAID ON模式中工作,Ubuntu只能在AHCI模式中工作,即系统无法互相引导和切换。

5 UEFI+GPT模式安装Ubuntu

进行到此步,恭喜已经完成安装前的所有准备工作,接下来可以参考各类教程在BIOS中设置U盘启动,安装Ubuntu。
主要步骤及注意事项:

5.1 部分电脑BIOS可能会识别出两个U盘,一个在Legacy下,一个在UEFI下,请选择UEFI的那个U盘启动项。

5.2 安装步骤可以参考教程的第四部分,但是在安装到第3步时,请注意:

如果电脑没有识别出win10系统的存在,则不要选择第一项“安装Ubuntu,与其他系统共存”。
无论如何别选择第二项“清理磁盘安装Ubuntu”,否则win10将丢失。
对于高手,可以考虑最下方的其他选项进行自定义分区安装,关于分区方案,推荐分成3个,分别是和物理内存一致的swap空间,一个/目录和一个/home目录,具体的大小和文件类型,请参照网上教程和自己实际分给Ubuntu的空间大小进行选择。提供几个分区方案参考教程:
戴尔官方给的Ubuntu各个目录的作用以及建议空间大小
安装Ubuntu时的硬盘分区方案
ubuntu16.04分区设置

网上有很多教程提供分区方案,其中很多提到/boot分区供后续挂载启动项使用。笔者认为如果前面UEFI模式设置正确并且已经在这一步识别出来win10系统的存在,则完全没必要选择此处的自定义安装,直接选择第一项让Ubuntu和win10共存即可。若UEFI模式下选择自定义分区方案,则不用设置/boot作为挂载点:

(图片仅供参考,主要看最下面安装启动引导器的设备)

此时启动引导器应该选择放在C盘的目录下,因为之前已经设置过UEFI模式安装,此时C盘可以识别Ubuntu和win10的启动项,并方便后期双系统引导。
(如果自定义时扫描不出磁盘状态,则是没有修改SATA,请返回4.3重新操作一次)

5.3 后续安装操作请继续参考教程。在安装完成后,请重启系统并拔下U盘。

可能遇到的问题主要是双系统启动项,以及win10如何引导ubuntu。如果前面的操作均正确,重启后应该直接进入Ubuntu系统。如果想更改启动顺序,可以进入BIOS,将Windows的启动顺序调整到Ubuntu前面。
因为双系统引导出错的原因有很多,所以如果出错,请自行百度相关解决方案。如果此处无法解决双系统引导问题,请务必保证可以正常启用windows系统,回到win10磁盘管理器,删除Ubuntu系统占据的硬盘空间并从头安装。

6

再次强调,没有任何一个教程能解决所有问题,双系统安装受到各种细节的影响,并且不同型号电脑的系统安装设置有很大差异,所以一定要根据自己电脑进行教程的合理选择,切记切记不要盲目下手,否则会出现各种意想不到的bug。

如果电脑是BIOS+MBR的模式,请寻找其他教程,大概有如下几个部分和本教程不同:
在BIOS中应在boot list operation选择Legacy,重启后在U盘选项中选择Legacy模式下的U盘安装。
在自定义分区时,应加一个/boot目录作为最后启动项的挂载目录。
MBR对分区数目有限制,一般控制在4个以内。
一般在分区方案中涉及到/boot挂载的教程大多数都是MBR模式,请读者自行搜索参阅。


第二部分 深度学习框架构建

更换源

换源可以通过国内镜像网站快速下载Ubuntu的各种包,有多种镜像网站可以选择,此处以添加中科大的源为例说明:

cd /etc/apt/
sudo cp sources.list sources.list.bak
sudo gedit sources.list

打开source.list,将下面的源添加到文件头部

deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

换源后更新源和已经安装的包:

sudo apt-get update
sudo apt-get upgrade

gcc/g++降级

cuda8.0对gcc5不支持,在编译时会出问题,所以此处将Ubuntu16.04自带的gcc和g++降级到4.9版本。

sudo apt-get install -y gcc-4.9
sudo apt-get install -y g++-4.9
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.9 gcc
sudo rm g++
sudo ln -s g++-4.9 g++

nouveau启动禁用

nouveau是ubuntu自带的显卡驱动,在禁用后才能使用NVIDIA驱动。
新建黑名单文件,将nouveau加入。

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf 

在新建的文件中输入:

blacklist nouveau  
options nouveau modset=0  

保存文件并退出,然后在终端执行如下命令:

sudo update-initramfs -u 

检查禁用是否成功:

lspci | grep nouveau  

如果和上图一样没有任何返回,表明禁用成功。

高能预警:接下来一步是最容易掉坑的,循环登录/开机闪屏/开机黑屏等等均可能出现,请在仔细阅读教程后操作!!!

NVIDIA驱动安装

网上关于如何安装驱动的教程很多,但是也容易掉坑。笔者现将亲测可行的方案列出,并给出各种常见bug的解决方案。
首先进入NVIDIA官网,根据操作系统和显卡型号查找最新的驱动版本,笔者使用的是384.69版本。此处只用记下驱动程序型号,不用下载。

按下Ctrl+Alt+F1进入tty命令控制台,首先输入用户名和密码,然后在命令行输入下面代码关闭图形用户界面。

sudo service lightdm stop

在关闭图形用户界面后,输入如下代码,从官网在线下载显卡驱动并安装:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev

代码中384是刚才在官网查找到的合适的驱动版本,此处应该根据刚才的查找结果进行相应替换。
驱动安装完成后,输入如下代码开启图形用户界面:

sudo service lightdm start 

按Ctrl+Alt+F7回到桌面,在终端确认显卡信息是否正确。

nvidia-smi 

显示的界面如下图所示:

表明显卡驱动已经安装正确。

上述方案是笔者亲测可行的安装方式,但是根据之前的掉坑经验,针对此过程中可能出现的几种bug进行总结。

循环登录
如果安装驱动并返回图形用户界面,但是输入用户名和密码登录时无法验证并且一直循环在登录界面,说明显卡驱动安装出现问题。此时重新回到tty命令控制台,卸载掉之前安装出错的驱动程序。然后根据自己的选择,重新安装之前禁用的nouveau驱动或者重装nvidia驱动。
方案一:重装nouveau
参考教程,在tty的shell中键入如下代码:

sudo apt-get remove --purge nvidia-* 
sudo apt-get install ubuntu-desktop 
sudo rm /etc/X11/xorg.conf 
echo 'nouveau' | sudo tee -a /etc/modules 
sudo reboot

重启后应该回到ubuntu自带的桌面,然后查找问题重新安装nvidia驱动。
方案二:重装nvidia
笔者在上文中采用的是ppa在线下载安装,但是有很多教程建议先在官网下载.run文件然后再安装,这种模式容易出现循环登录问题。如果是.run文件安装出现的问题,有可能是opengl出错。解决方案仍是打开tty,先卸载安装错误的驱动,然后根据教程重装驱动,在shell中输入:

sudo ./NVIDIA.run -no-x-check -no-nouveau-check -no-opengl-files

-no-x-check:安装驱动时关闭X服务

-no-nouveau-check:安装驱动时禁用nouveau

-no-opengl-files:只安装驱动文件,不安装OpenGL文件
然后重启即可。

开机闪屏/开机黑屏
笔者两个坑都掉过,具体原因有很多种,最可能的是在禁用nouveau后nvidia驱动也不正确,导致系统没有任何显卡驱动可以使用,从而一直停留在错误的界面。此时,尝试进入tty,如果可以进入则和循环登录情况的解决方案相同,重装驱动。如果无法进入tty平台,则根据安装中可能出错的环节自行百度解决方案。

CUDA8.0安装

官网下载CUDA安装包,选择.run格式的文件下载。

在下载的目录打开终端,输入如下指令安装。

sudo sh cuda_8.0.61_375.26_linux.run

按照终端的提示一步步操作即可:

  • 按q退出条款浏览或者按空格直到条款末尾,输入 accept 接受条款。

  • 输入n不安装nvidia图像驱动,因为前面已经安装好驱动。如果这里按照默认选择yes,则前面安装的高版本nvidia驱动将被替换成为cuda里带的低版本nvidia驱动。

  • 输入y安装cuda 8.0 toolkit。

  • 回车确认cuda默认安装路径(/usr/local/cuda-8.0)。

  • 输入y安装CUDA 8.0 Samples。

  • 输入CUDA 8.0 Samples安装路径:/home/用户名/CUDA/samples。

至此CUDA安装完成,下面需要配置CUDA的环境变量,保证其正常工作。
打开新终端,设置CUDA环境变量:

sudo gedit /etc/profile  

如果在刚才的安装过程中均默认安装路径,则把下面内容复制到打开的文件中:

export PATH=/usr/local/cuda-8.0/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH  

使环境变量生效:

sudo ldconfig

为验证CUDA安装是否成功,可以通过编译示例程序检测。首先安装相应的库和依赖:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx  

然后进入默认安装示例库的文件夹对所有示例进行编译:

cd /usr/local/cuda/samples
sudo make all

待编译完成后,测试:

cd ./bin/x86_64/linux/release ./deviceQuery

说明安装完成。

7 Cudnn安装

官网注册账号并下载Cudnn,笔者使用的是cudnn-8.0-linux-x64-v7.tgz版本。
进入下载文件夹,解压文件:

tar -xzf cudnn-8.0-linux-x64-v7.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/* /usr/local/cuda/include/

完成Cudnn安装。

8 anaconda2安装

首先确定使用的python版本,然后下载对应的anaconda。笔者因惯用python2,所以从官网下载anaconda2。

然后进入下载文件夹,执行:

bash Anaconda2-4.4.0-Linux-x86_64.sh

若想在Ubuntu 16.04 同时安装Anaconda2和Anaconda3,请参考教程,亲测可行。

9 TensorFlow(GPU)安装

参考官网教程,完成GPU版本TensorFlow安装:

conda create -n tensorflow
pip install --ignore-installed --upgrade tfBinaryURL
pip install --ignore-installed --upgrade \
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp27-none-linux_x86_64.whl

代码中的网址应该替换成下图所示的待安装版本的对应网址。

安装完成后,测试tensorflow的GPU加速性能:

cd /anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow/models/image/mnist
source activate tensorflow
python convolutional.py

如果执行后可以出现下面的界面,恭喜GPU加速成功开启!!

附赠几个GPU安装及环境配置教程,不过按照之前的官网教程安装,一般不会出错。如出现问题,可以自行寻找教程进行参考解决。

ubuntu16.04下安装TensorFlow(GPU加速)—-详细图文教程
Ubuntu16.04安装CUDA+cuDNN+GPU版TensorFlow过程记录
Ubuntu16.04 下安装GPU版TensorFlow(包括Cuda和Cudnn)


以上是笔者一周装机历程的总结,期间重置了3次win10,安装Ubuntu失败4次,掉进循环登录/开机重启等等各种坑。深度学习硬件环境配置需要绝对的耐心,应对各种可能出现的问题要能坚持钻研下去。网上各种教程,虽然详细但在使用前一定要确定是否适合自己的电脑配置和当前面对的问题。盲目轻信各类教程只会掉进越来越多的坑,潜心分析才是关键。
作为一个非科班、连BIOS的作用都不了解的电脑白痴,到捯饬一周后装机成功,只有一句心得:本来不知道路,踩的坑多了,也就知道了路。
最后感谢文中引用的所有教程的作者,也希望各位读者耐心耐心再耐心的解决遇到的问题,预祝大家装机成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值