tensorflow目前已经升级至r1.10版本。在之前的深度学习中,我是在MAC的虚拟机上跑CPU版本的tensorflow程序,当数据量变大后,tensorflow跑的非常慢,在内存不足情况下,又容易造成系统崩溃(虚拟机走的是windows7)。

  1. 配置信息

  为了后续的深度学习,不得已,我在京东买了一部组装厂商提供的主机,是网吧特供机。配置如下:

  • CPU i5 8400 6核
  • 16G内存
  • GPU Geforce 1060 5G版本
  • 240G SSD 硬盘

为什么是这个配置呢?因为该机的配置原来是瞄准了吃鸡等游戏,而GPU Geforce 1060又是深度学习的入门版的要求,加之价格是同等配置中最低的,加上京东优惠券最后不到4000元搞定。

  2. 选择操作系统

收货后,在预装的win10上跑了跑分,检查没什么问题后,就准备卸载windows,安装unbuntu。那到底装什么版本好呢?我在官网 https://www.tensorflow.org/install/install_linux?hl=zh-cn 上看看推荐说明,要求是Ubuntu 16.04 或更高版本。

  然后我又进入CUDA的官网查看相关说明,这时CUDA已升级并默认推荐9.2版本,该版本显示支持Ubuntu 17.10 和 16.04。由于担心无法支持18.04,于是果断下载17.10的安装包,并做了u盘启动盘进行安装。可让我崩溃的是,在安装到选择“时区”时,居然弹框提示我这样一段信息:

The installer encountered an error copying files to the hard disk: [Errno 5] Input/output error This is often due to a faulty CD/DVD disk or drive, or a faulty hard disk. It may help to clean the CD/DVD, to burn the CD/DVD at a lower speed, to clean the CD/DVD drive lens (cleaning kits are often available from electronics suppliers), to check whether the hard disk is old and in need of replacement, or to move the system to a cooler environment

安装被迫中断了,我google了国外的论坛,已经有不少人指出这是存在已久的bug提示了,从内容上来说是检查系统时发现有cd或硬盘的硬件问题。可是我这是全新的系统,windows上都运行好好的,怎么在这就出问题了。还有人说可能是内存条损坏,或者有两条以上的内存时也会出现这个提示,可我换了其他内存条,或用一根内存条去试,还是报上述问题。

  不得已,我想也许新的Ubuntu系统能解决这个bug,于是做了18.04的新系统,安装后果然好使,顺利安装完成。

     3. 选择CUDA和cuDNN版本

  tensorflow的官网提到,CUDA用到9.0,cuDNN用到7.0 版本,可是Nvidia官网最新的已经是CUDA9.2,cuDNN对应的是7.1.4。

  其中CUDA如果是9.0的话,gcc和g++只能支持6.0以下,而Ubuntu 18.04上默认安装的是7.2版本;而如果CUDA是9.2版本,则支持gcc和g++的版本为7.3,显然和Ubuntu 18.04上是匹配的。

  于是我抱着试试运气的心态装了CUDA9.2和cuDNN7.1.4,一路安装没问题,又装了tensorflow 1.9,到最后要运行一个demo时,才发现问题,提示我说 libcudart.so.9.0 不能被找到!原来 /usr/local/cuda-9.2/lib64/下是libcudart.so.9.2,而tensorflow 1.10仅支持到libcudart.so.9.0。这是安装失败后才得到的教训啊!

  所以对于tensorflow 1.10来说,就得是CUDA 9.0,而官网的说明文字也是这样,只是进入CUDA的下载页面,要从 "Legacy Release" 中选择CUDA 9.0进行下载,对应的cuDNN是7.0.5,对应的下载页面和地址如下:

 4. 安装CUDA前的操作

  cuda的官网 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#choose-installation-method 安装说明中已经列出了检查步骤。如果你的GPU在支持列表中,则我们只需要做如下操作:

  1). 安装GPU驱动程序。Ubuntu在安装后,是给了一个叫Nouveau默认内建的驱动程序。我们需要安装GPU针对性的驱动程序,有篇文章教怎么在Ubuntu上安装合适的驱动:https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux

   简单来说,执行 ubuntu-drivers devices 命令得到推荐的nvidia驱动程序,

    然后执行  sudo apt-get install nvidia-driver-390 (根据提示的驱动程序而定)即可安装完成。

   注意安装完成后需要重启。

(后记:在操作一星期后,不知为何我安装的显卡驱动就不好使了,具体表现为系统默认采用内建显卡驱动程序,查看/proc/driver/nvidia/version失败,以及用Nvidia X Server Settings时无法显示显卡驱动信息。但用sudo ubuntu-drivers autoinstall命令行方式发现不需要安装或更新。经过无数次失败尝试后,最后选择从官网下载对应的驱动程序进行安装才恢复,具体教程还是可以参考 https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux 的第三种安装方法。在安装前先删除之前的驱动:sudo apt purge nvidia-* | sudo apt autoremove)

  2). 安装gcc-4.8和g++-4.8。执行如下命令:

sudo apt-get install gcc-4.8
ll /usr/bin |grep gcc #若存在高版本的gcc,则继续
cd /usr/bin
sudo mv gcc gcc.bak #备份
sudo ln -s gcc-4.8 gcc #重新指向

执行gcc --version 可检查是否为4.8版本,g++可执行同样的操作。

5. 安装CUDA和cuDNN

  进入CUDA9.0的下载页,选择安装类型为runfile(local),可发现有一个基础安装包,和三个补丁包,都下载下来,然后依次执行:

sudo sh cuda_9..176_384.81_linux.run

  安装时会以提问的方式,一路默认即可,当第二个询问是否安装新驱动程序时,选择否 

sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run 

  结束后,可以在/usr/local/cuda-9.0 发现有安装文件,在/etc/profile或~/.bashrc的文件后面添加环境变量: 

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

  安装好CUDA9.0后,接下来就安装cuDNN,进入cuDNN下载页选择 cuDNN v7.0.5 Library for Linux 下载。

执行如下命令:

tar -xzvf cudnn-9.0-linux-x64-v7.tgz

  进入解压目录,执行:

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*

  这样就安装完成了。

  

  6. 安装tensorflow-gpu

  官方推荐通过Virtualenv来安装tensorflow-gpu,来进行项目隔离,这是在开发环境,如果在生产环境,可以走docker方式来部署。这里采用Virtualenv方式来安装,执行如下命令:

sudo apt-get install python3
sudo apt-get install python3-pip python3-dev python-virtualenv

  安装完pip3、virtualenv后,可进入virtualenv安装tensorflow-gpu,执行如下命令:

mkdir -p ~/tensorflow/venv
virtualenv -p python3 ~/tensorflow/venv #创建virtualenv环境
cd ~/tensorflow/venv
source bin/activate #环境用的时候需要激活
pip3 install --index-url http://pypi.douban.com/simple --trusted-host pypi.douban.com --upgrade tensorflow-gpu #采用国内源下载tensorflow-gpu

  最后通过 pip3 show tensorflow-gpu 可检查tensorflow-gpu的安装路径是否在该虚拟环境内,以隔绝与全局的site-packages

  7. 检查结果

  还是在上述virtualenv创建的根目录下,执行如下命令:  

mkdir src && cd src

  vi hello_tensorflow.py,内容如下:  

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

  最后执行该脚本:python3 hello_tensorflow.py 即可得到包含有GPU输出信息的正确结果  

  

  

深度学习应用系列(一)| 在Ubuntu 18.04安装tensorflow 1.10 GPU版本的更多相关文章

  1. Ubuntu 18.04 安装 Docker-ce(就是Docker社区版本)

    一步都不用改,跟着走就行 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak ...

  2. [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程

    Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心弄崩Host的环境. 而nvidia-docker2的好处是NVidia帮你配好了Host和Container之间的CUDA相 ...

  3. [笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程

    之前写的[笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程已经out了,以这篇为准. Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心 ...

  4. Ubuntu 18.04 安装和常用软件安装

    Ubuntu 18.04 安装 下载 Ubuntu 制作 U 盘启动盘 设置电脑为 U 盘启动 插入 U 盘,重启电脑 按照提示安装 Ubuntu 更新 NVIDIA 显卡和 Broadcom 无线网 ...

  5. Ubuntu 18.04 安装MySQL

    最近在写东西的时候,需要用到MySQL,在网上查了一下,都说Ubuntu18.04不能安装MySQL5.7.22, 总觉的不可能,所以自己就研究了一下,然后分享给大家 工具/原料   VMware W ...

  6. Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动

    目录 Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动 Package gcc is not configured yet. 解决办法 history history | grep ...

  7. 在Ubuntu 18.04 安装 MySQL 8.0

    在Ubuntu 18.04 安装 MySQL 8.0 ① 登入 mysql 官网,在官网中下载 deb 包,点击该链接,即可下载. https://dev.mysql.com/downloads/re ...

  8. Ubuntu 18.04 安装部署Net Core、Nginx全过程

    Ubuntu 18.04 安装部署Net Core.Nginx全过程 环境配置 Ubuntu 18.04 ,Nginx,.Net Core 2.1, Let's Encrypt 更新系统 sudo a ...

  9. Ubuntu 18.04安装MongoDB 4.0(社区版)

    Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...

随机推荐

  1. SpringBoot Mybatis 读写分离配置(山东数漫江湖)

    为什么需要读写分离 当项目越来越大和并发越来大的情况下,单个数据库服务器的压力肯定也是越来越大,最终演变成数据库成为性能的瓶颈,而且当数据越来越多时,查询也更加耗费时间,当然数据库数据过大时,可以采用 ...

  2. 阿里云ECS安装Docker

    阿里云ESC系统信息,官方说2.6内核运行docker服务可能会不稳定: $ uname -a Linux iZ259dixwg8Z -.el6.x86_64 # SMP Thu Jul :: UTC ...

  3. python实战===用python调用jar包(原创)

    一个困扰我很久的问题,今天终于解决了.用python调用jar包 很简单,但是网上的人就是乱转载.自己试都不试就转载,让我走了很多弯路 背景:python3.6 32位   + jre 32位  +  ...

  4. GitHub创建项目入门学习

    第一次创建git项目注意事项还是挺多了,这里就写个操作步骤,方便以后查看. 网页部分 1.打开自己的主页,点击“New repository”创建远程仓库. 2.填写信息 本地部分 前提: 下载git ...

  5. 【NOIP2016】组合数问题

    写着玩玩…… 反正超级sb题. #include<bits/stdc++.h> typedef long long ll; using namespace std; ll c[][],h[ ...

  6. Python的数值和字符串

    Python数据类型 1.数值 --类型:  1/整型 2/长整型   3/浮点型 -- 0.0, 12.0, -18.8, 3e+7等 4/复数型 -- complex  In []: 0x34al ...

  7. 解析jsp的 tomcat 、resin

    一.tomcat 1. 安装JDK [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget http://www.lishi ...

  8. Java中的原子操作类

    转载: <ava并发编程的艺术>第7章 当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可 ...

  9. mysql:视图、触发器、事务、存储、函数、流程控制

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 回到顶部 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只 ...

  10. 探索sklearn | 鸢尾花数据集

    1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集.它是用统计进行分类的鼻祖. sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一. 导入 ...