ubuntu18.04 tensorflow 机器学习环境搭建
1. 主机配置说明
在前几天,得知公司新采购了几台主机,所以我们组领导就向公司申请了一台回来,做数据分析。
服务器买的是惠普的主机,型号是:HP EliteDesk 800 G3。不算强劲,但用来做GPU的数据分析测试,也可以了。
具体参数:
CPU:i7-7700
内存: 32G
显卡: GTX 1070
硬盘: 256 ssd + 1T
自带 windows 10 64位 专业版系统
搭建环境版本选择: ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9
2. 更换系统
由于主机自带的是windows系统,但是我们想用 ubuntu 的系统,因此,只能先重装一下系统了。
具体的更换系统的过程就不写了,大家有需要的,可以参考一下这篇文章。
要注意的是,不要关闭主板的 UEFI 引导,并且,你的 Ubuntu 系统引导盘,也就是U盘,需要用USB3.0的接口。因为,我测试的时候,用过普通 USB2.0 接口的,一直识别不了。同时,系统盘要制作成纯系统盘,里面出来系统软件之外,不要有其他文件。
3. 安装显卡驱动
新安装 ubuntu 18.04 的系统之后,先更新一下系统自带的源,我在自己使用的 CentOS 或者 Ubuntu 等linux 系列系统的时候,都习惯更换成阿里云的源,感觉速度和稳定都维护得比较好。
3.1 关闭系统默认的显卡驱动
如果你安装的是 ubuntu 带桌面图形界面的版本,那么它默认的显卡可能是nouveau,我们首先需要关闭它。具体方法:
打开禁用列表:
sudo vim /etc/modprobe.d/blacklist.conf
在后面添加:
blacklist nouveauoptions nouveau modeset=0
保存退出后,更新,重启系统:
sudo update-initramfs -usudo reboot
重启后,你可能会发现屏幕没有了输出,甚至连登录界面也没有了。
先别慌,如果你使用 xshell 这类终端登录工具的话,这时你仍然能远程连接到系统的,前提是你已经在系统开启了 openssh-server,不过ubuntu 18 默认是没有开启openssh-server 的。
如果你没有用xshell 来连接,那么你可以按一下 ctrl + alt + F3 组合键,这时候,屏幕上又会切换到字符登录界面,熟悉的输入用户名,密码界面再次呈现。
这些都是因为,我们在上一步禁止了 nouveau 驱动,但是主机的独立显卡驱动还没有安装好。
3.2 安装nvidia 显卡驱动
在安装显卡驱动前,还需要再确认一下你系统自带的驱动有哪些:
kkt@kkt-HP:~$ sudo ubuntu-drivers devices[sudo] password for kkt: == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==modalias : pci:v000010DEd00001B81sv0000103Csd00006899bc03sc00i00vendor : NVIDIA Corporationmodel : GP104 [GeForce GTX 1070]driver : nvidia-driver-396 - third-party freedriver : nvidia-driver-390 - third-party freedriver : nvidia-driver-410 - third-party freedriver : nvidia-driver-415 - third-party free recommendeddriver : xserver-xorg-video-nouveau - distro free builtin
可以,看出nvidia 支持的驱动版本有396,390,410,415 几个类型。不过这是我在添加显卡 ppa 源之后,才显示这么多个的,本来只有390,396两个版本。
怎么添加显卡 ppa 源:
sudo add-apt-repository ppa:graphics-drivers/ppasudo apt update
在添加 ppa 源的时候,可能会因为网络的原因,更新失败。我们需要留意提示信息,以为添加失败之后,会导致某些版本根本不能安装。
选择你希望安装的 nvidia 版本,我推荐安装 nvidia-driver-396 的版本,不求它最新,因为最新的版本,兼容性反而可能会差,甚至用不了。
安装nvidia 驱动:
重点: 先删除旧的 nvidia 驱动
sudo apt-get purge nvidia-*sudo apt install nvidia-driver-396
安装完成之后,重启主机 : sudo reboot
检查 nvidia 显卡状况:
sudo nvidia-smi
如果你没有检测到nvidia显卡的状态,可能需要先挂载:
sudo nvidia modprobe nvidia
正常来说,如果你的主机有独立显卡,在安装完nvidia显卡驱动,重启就能在屏幕输出你熟悉的图形登录界面。
4. 安装 CUDA 9.0
首先,cuda 9.0 编译安装只支持gcc、g++ 6.0 及以下的版本,所以,如果系统已经默认安装了gcc 7.0 以上版本的,就需要将级了。
sudo apt-get install gcc-4.8sudo apt-get install g++-4.8
切换到 /usr/bin 目录,对gcc7.0 进行降级,其实就是重新创建软连接:
ls -l gcc* sudo mv gcc gcc.baksudo ln -s gcc-4.8 gccls -l g++*sudo mv g++ g++.baksudo ln -s g++-4.8 g++
重新查看g++、gcc 的版本:
g++ -vgcc -v
确认gcc、g++ 的版本为4.8 就可以了。
下载CUDA 9.0
说明,现在先不要使用 cuda 9.1 或者 cuda 10,因为后面 tensorflow 对这些版本还没有支持。我一开始安装的也是cuda 9.1 以为版本越新越好。
cuda 各个版本的归档目录在这里,选择9.0 的版本:
注意,这里选择 ubuntu 16.04 的系统版本,对18.04 也适用。
cuda 9.0 共5个文件,包括4个patch都需要下载。下载完成之后,上传到服务器,进行安装,cuda安装的过程中,会提示要安装nvidia driver的,不要安装,因为我们之前已经安装过了。其他的选项可以随意。
安装过程如下:
sudo sh cuda_9.0.176_384.81_linux-runsudo sh cuda_9.0.176.1_linux-runsudo sh cuda_9.0.176.2_linux-runsudo sh cuda_9.0.176.3_linux-runsudo sh cuda_9.0.176.4_linux-run
同样,下载 cuDNN 进行安装。cuDNN 的版本选择 7.1.4,选择7.0的大多数情况会没有问题,但是当使用 tensorflow 进行卷积运算的时候,会提示初始化失败,原因是 tensorflow 1.9 里编译的支持的版本是 7.1.4 及以上。
下载 cuDNN 请在这里 ,注意,下载需要提供注册账号,自己搞一个邮箱注册一下。
下载完成之后,上传到服务器,开始安装:
其实是先解压,然后将文件复制到cuda-9.0 的目录里。sudo tar xvzf cudnn-9.0-linux-x64-v7.1.tgz解压之后,默认的目录名也叫 cuda.然后,复制cuDNN的内容:sudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64最后,修改权限:sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至此,cuda 和 cudnn已经安装完毕。
但是,还需要修改一下环境变量:
修改 sudo vim ~/.bashrc,添加以下内容:export CUDA_HOME=/usr/local/cudaexport LD_LIBRARY_PATH=${CUDA_HOME}/lib64export PATH=${CUDA_HOME}/bin:${PATH}修改 sudo vim /etc/profile ,添加以下内容:export PATH=/usr/local/cuda/bin:$PATH
继续修改:
sudo vim /etc/ld.so.conf.d/cuda.conf/usr/local/cuda/lib64
修改后,加载配置,但可能会提示:(/usr/local/cuda/lib64/libcudnn.so.7 不是符号链接?)
sudo ldconfigsudo ln -sf /usr/local/cuda/lib64/libcudnn.so.7.1.4 /usr/local/cuda/lib64/libcudnn.so.7sudo ldconfig
最后,可以安装tensorflow 了
5. 安装 tensorflow
利用pip 的方式来安装:
sudo pip3 install tensorflow-gpu==1.9.0
没有pip3 的,自己安装一下:
sudo apt install python3-pip
如果 pip3 的安装速度太慢,导致超时报错,可以尝试一下,使用国内源,具体方法:
修改 ~/.pip/pip.conf (没有就创建一个): 如果不存在此文件夹,则创建之mkdir ~/.pipvi ~/.pip/pip.conf增加内容如下:[global]index-url=http://mirrors.aliyun.com/pypi/simple/[install]trusted-host=mirrors.aliyun.com
6. 总结
tensorflow 的版本兼容比较严格,这一点值得注意。