玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0

        如今的机器学习运算大多数都是利用gpu进行,包括很大大型游戏,比特币的开采,都离不开GPU的运算,GPU已成为大型运算能力的主要硬件。

       大名鼎鼎的机器学习开源框架,如TensorFlow和Caffe,Caffe2都建议使用GPU作为运算平台,有些著名的机器学习开源项目如Detectron物体检测更是明确要求了必须使用GPU作为运行环境。网上有开发者曾经提及到,使用GPU的运算效率起码是使用CPU的十倍以上。基于上述原因,我也着手搭建一个GPU运行环境,不过遇到了许多“新手坑”,浪费了不少时间调试,因此,这里写份博客来让有兴趣搭建GPU机器学习环境的小伙伴们,少走些歪路,更好地进行机器学习的研究。

      在这里首先要感谢两位作者,一是提供了CUDA和CUDNN的正确方法的

https://blog.csdn.net/ZWX2445205419/article/details/69429518,

      另外一位则是提出了安装过程中许多人曾经遇到的黑屏、循环登录的解决办法

https://blog.csdn.net/AutoRobot410/article/details/52862479

 

1.安装前准备

GPU型号:NVIDIA GTX750 Ti

1.1 Verify You Have a CUDA-Capable GPU(确认你有一个可用CUDA的GPU)

$ lspci | grep -i nvidia

这里写图片描述
可以看到,我有三块可用的GeForce GTX 1080,你可以在这里查看你的GPU是否是CUDA-caplable。

1.2 Verify the System Has gcc Installed(查证你是否安装了gcc)

$ gcc --version

这里写图片描述

 2.下载对应cuda和cudnn

cuda 8.0 Linux下载地址:https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run

cuda v6.0 Linux下载地址:cuDNN v6.0 (April 27, 2017), for CUDA 8.0

 3,使用以下命令查看Noueau驱动是否被加载

$ lsmod | grep nouveau
# 如果打印出一些信息,说明Noueau被加载了,正常情况下会打印出一些关于nouveau的信息

创建/etc/modprobe.d/blacklist-nouveau.conf,写入:

blacklist nouveau
options nouveau modeset=0
  •  

Reboot into text mode (runlevel 3)(重启,进入文本模式)

重启后按: Ctrl+Alt+F1 进入文本模式
这里写图片描述

 

停止X服务

$ sudo /etc/init.d/lightdm stop

 

sudo sh cuda_8.0.61_375.26_linux.run
  • 此处千万不要选安装“Install Graphics Driver”!!!这样是重新安装显卡驱动,百分之百是不匹配的,千万不能选,很有可能导致你重启后一直循环登录!!

安装完成后重启桌面服务

$ sudo service lightdm start
  •  

 在系统环境里设置CUDA的路径

$ vim ~/.bashrc # 编辑
  •  

~/.bashrc 的最后中添加如下代码

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-8.0
export PATH=/usr/local/cuda-8.0/bin:$PATH
  •  
$source ~/.bashrc #配置立即生效
  •  

安装cuDNN

cd到cuda的安装目录执行解压命令:

$ cd /usr/local
$ sudo tar -xzvf ~/downloads/cudnn-8.0-linux-x64-v5.1.tgz
  •  

这样就完成了cuDNN的安装。

验证CUDA是否安装完成和CUDA版本:

$ nvcc -V

 

在ubuntu自己可以自动匹配找到相应的驱动的,当然你也可以自己根据自己服务器上的显卡型号去官网下载相应的驱动。

或者,如下:

我的已经按好了,应该是要重启一次的,会有提示。

接着再运行一下:

nvidia-smi

 

安装Python3.5.2版本和pip3

sudo apt install python3-pip

 

从清华大学开源镜像网安装tensorflow-gpu1.3.0

pip3 install https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl

运行Python的TensorFlow测试代码

import tensorflow as tf
import numpy as np
hello=tf.constant('luyanjie')
sess=tf.Session()
print (sess.run(hello))

出现GPU的信息则安装成功


 

 

 

 

其中遇到的错误

1,安装完CUDA后重启,一直循环进入登录界面,这时意味着你要卸载原有的显卡驱动,重新安装

进tty:Ctrl+Alt+F3

关闭X:

sudo service lightdm stop

然后卸载之前可能存在的驱动:

sudo apt-get --purge remove nvidia*

只需一条命令

sudo apt-get install nvidia-

有人问上面那条命令没写完啊,其实就是写这么多,然后猛击tab键两次(也可以轻点),下面就会出来许多版本的驱动,当然是安装一个版本最高的,例如

sudo apt-get install nvidia-352

即可。

 

sudo reboot

 

2,提示内核错误

The driverinstallation is unable to locate the kernel source. Please make surethat the kernel source packages are installed and set up correctly.If you know that the kernel source packages are installed and set upcorrectly, you may pass the location of the kernel source with the'--kernel-source-path' flag.

经过google和百度,得知原因很简单:cuda9.1和 ubuntu16.04中linux内核4.13不兼容!

《安装cuda9.1内核问题:Unable to locate the kernel source》
好吧,看来内核4.13.0不能用,要换成4.4.0。

更换内核

linux更换内核很简单,一个系统中可以安装多个内核,也可以在开机的时候通过grub来选择要启动的内核。首先我们要做的是先看自己系统中现在存在几个内核。

提前了解

使用uname -r查看当前使用的内核。

然后我们明确几个有关内核的文件:

  • /etc/default/grub 定义了有关启动过程的一系列设置,比如设置内核启动顺序、系统等待启动时间、或者启动过程中相关设置等;
  • /boot/grub/grub.cfg 注意一下这个文件是由上一个文件而自动生成的,不建议修改这个文件的内容
  • /etc/grub.d 是操作系统菜单目录,也是由系统生成,我们也不用修改。

更换方法

我当前的内核是4.13.0,我要安装4.4.0的内核,使用下面的命令:

sudo apt-get install linux-headers-4.4.0-98-generic linux-image-4.4.0-98-generic

执行完这个命令之后,可以到/boot/grub中看现在存在的kernels

《安装cuda9.1内核问题:Unable to locate the kernel source》

安装完新的内核后,更换到新的内核(并不是新版本,我就是从4.13转为4.4)的方法:

  • 进入grub启动界面,在系统启动时按住shift一段时间即可,选择你刚才安装的内核即可(每次都要这样选,有点麻烦)。
  • 查看当前内核启动顺序grep menuentry /boot/grub/grub.cfg,然后修改/etc/default/grub中的内容修改GRUB_DEFAULT,默认为0,根据顺序改成你要启动的内核顺序就行(从0开始)。
  • 第二个方法有可能失败,终极方法是删除掉所有多余内核!直接修改/boot/grub/grub.cfg中的内容:在/boot/grub目录中,执行sudo rm -rf *4.13.0-38*这个命令是删除掉这个目录内所有4.13内核的文件,然后将/boot/grub/grub.cfg中所有有关4.13的信息全部删除。全部给为新的内核。
    修改/etc/default/grub中GRUB_DEFAULT=”Ubuntu,Linux 4.4.0-98-generic“

最后弄完别忘了执行sudo update-grub来对你之前的设置进行更新。

如有问题,请咨询我的qq:1290851757,备注:csdn博客问问题的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[linux]Ubuntu12.1下打开terminal的方式

有的人比较习惯使用terminal,喜欢简单的文本窗口,刚使用ubuntu可能还不习惯,这里给出几种打开terminal的方法:1 图形界面中图一就是那个左上角红色方框里的图标,点击后搜索terminal就好了。图二2 使用快捷键Ctrl Alt …

OpenGL 自定义着色器(Shaders)

自定义着色器类 声明 #pragma once#include<string>class Shaders { public:Shaders(const char* vertexPath, const char* fragmentPath);~Shaders();std::string vertexString;std::string fragmentString;const char* vertexSource;const char* fragmentSource;unsi…

《统一沟通-微软-技巧》-20-Lync 2010如何在我的联系人列表中添加非联盟联系人...

Blog:http://dynamic.blog.51cto.com MSN:LiuJinFengmsn.com QQ:316190099如果加:A&#xff0e; 内部Lync用户:输入-英文名输入-中文名输入-中文名/英文名中包括的部分字符B&#xff0e; 联盟Lync用户:输入:邮件地址C&#xff0e; 非 Lync用户:在Outlook新建联系人让Lync与Outl…

texture 纹理(贴图)

纹理 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c;它可以用来添加物体的细节。 这是两张照片叠加的效果 由下面两张叠加而成 源代码 shaders类在自定义着色器 中有完整的源代码。 下边我们使用stb_image.h来解析图片。 #define GLEW_STATI…

微信开发4——PHP实现PC扫码授权登陆获取用户信息

首先须要申请,必须企业,个体工商户,媒体等&#xff0c;微信开放平台申请地址 https://open.weixin.qq.com/&#xff0c;要交300多的费用才能开通 1&#xff0c;编写入口&#xff1a;微信开放平台的扫码登陆开放的接口可以自动生成PC扫码页面&#xff0c;你得到了官方通过审核的…

计算机组成原理和体系结构----软考(到处copy)

计算机组成原理和体系结构数据的表示n进制转十进制十进制转n进制 使用短除法二进制转八进制和十六进制原码、反码、补码以及移码浮点数运算计算机结构计算机体系结构分类 - FlynnCISC 和 RISC流水线流水线计算流水线时间计算流水线吞吐率计算流水线的加速比计算流水线的效率计算…

Ubuntu16.04安装Hadoop+Spark+pyspark大数据python开发环境

一&#xff0c;安装jdk1.8.0.144 下载地址&#xff1a;www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html Ubuntu配置jdk运行环境 export HADOOP_HOME/usr/local/hadoop export CLASSPATH$($HADOOP_HOME/bin/hadoop classpath):$CLASSPA…

使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境

使用IntelliJ IDEA和Maven管理搭建WebTomcat开发环境 使用IntelliJ IDEA和Maven管理搭建WebTomcat开发环境 前言&#xff1a;原来一直使用Eclipse&#xff0c;换工作后使用IDEA&#xff0c;初识IDEA发现&#xff0c;哇&#xff0c;它的快捷键可真多啊&#xff0c;但是一路用下…

一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像

Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱机制&am…

SpringBoot执行器端点Actuator Endpoint

比较常用的Endpoint URL作用/actuator/health健康检查/actuator/beans查看容器中所有的Bean/actuator/mapping查看Web的URL映射/actuator/env查看环境信息 默认/actuator/health和/actuator/info是可以通过Web访问&#xff0c;其他的需要解禁 在配置文件中可以设置可以访问哪…

域内禁止不明东西连接DHCP

今天在Windows论坛看到一大牛版主分享的经验&#xff0c;赶紧挺好&#xff0c;就赶紧记下来。 http://bbs.51cto.com/thread-967999-1.html 再补充一点点 域内查看其他pc的 MAC 地址 同一网段的 直接 ping一下 对方 ip地址 然后 arp -a 一下 不通网段的 可以先在 dhc…

SpringBoot中mybatis配置多数据源

首先需要创建多个数据库 简单的user表 CREATE TABLE user (id int NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,age int DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8;导入项目依赖 <dependencies><dependency&g…

玩玩机器学习4——TensorFlow基础之激活函数

激活函数&#xff08;activation function&#xff09;运行时激活神经网络中某一部分神经元&#xff0c;将激活信息向后传入下一层的神经网络。神经网络之所以能解决非线性问题&#xff08;如语音、图像识别&#xff09;&#xff0c;本质上就是激活函数加入了非线性因素&#x…

玩玩机器学习5——构造单层神经网络解决非线性函数(三次函数)的曲线拟合

使用TensorFlow构造了一个隐藏层和输出层的神经网络&#xff0c;做非线性曲线的拟合 import tensorflow as tf import matplotlib.pyplot as plt import numpy as npnp.random.seed(1) x np.linspace(-1, 1, 100)[:, np.newaxis] #创建一个新维度 noise np.random.normal(0,…

HTML网页使用CDN的jquery.qrcode.min.js生成页面二维码(直接可以复制使用)

HTML页面代码 <!DOCTYPE html> <html> <head><title></title><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"generator" content"pandoc" /><meta n…

SpringBoot Web 入门

SpringBoot Web 要解决的问题&#xff1a; 导入静态资源首页模板引擎 Thymeleaf装配扩展SpringMVCCRUD拦截器国际化 SpringMVC的自动配置类为WebMvcAutoConfiguration &#xff0c;对应的properties类为WebMvcProperties //WebMvcProperties部分代码 //在application配置文…

handler类型的定时器

2019独角兽企业重金招聘Python工程师标准>>> 一、采用Handle与线程的sleep(long)方法 Handler主要用来处理接受到的消息。这只是最主要的方法&#xff0c;当然Handler里还有其他的方法供实现&#xff0c;有兴趣的可以去查API&#xff0c;这里不过多解释。 1. 定义…

Vue路由基本操作

路由index.js import Vue from vue import VueRouter from vue-router import Home from ../views/Home.vue import Me from ../views/me.vue import About from "../views/About.vue" import Centor from "/views/Center.vue" import _404 from "..…

Windows 10 搭建Python3 安装使用 protobuf

Windows 10 搭建Python3 安装使用 protobuf Protobuf对比XML、Json等其他序列化的优势 protobuf 不管是处理时间上&#xff0c;还是空间占用上都优于现有的其他序列化方式。内存暂用是java 序列化的1/9&#xff0c;时间也是差了一个数量级&#xff0c;一次操作在1us左右。缺点…

Vue + SpringBoot跨域

Vue设置 1、在项目根目录创建文件vue.config.js module.exports {devServer: {proxy: {/api: {target: http://zlf.plus, //对应自己的接口changeOrigin: true,ws: true,pathRewrite: {^/api: }}}}}2、 在main.js中配置 import Vue from vue import App from ./App.vue imp…