本文共 3679 字,大约阅读时间需要 12 分钟。
如今的机器学习运算大多数都是利用gpu进行,包括很大大型游戏,比特币的开采,都离不开GPU的运算,GPU已成为大型运算能力的主要硬件。
大名鼎鼎的机器学习开源框架,如TensorFlow和Caffe,Caffe2都建议使用GPU作为运算平台,有些著名的机器学习开源项目如Detectron物体检测更是明确要求了必须使用GPU作为运行环境。网上有开发者曾经提及到,使用GPU的运算效率起码是使用CPU的十倍以上。基于上述原因,我也着手搭建一个GPU运行环境,不过遇到了许多“新手坑”,浪费了不少时间调试,因此,这里写份博客来让有兴趣搭建GPU机器学习环境的小伙伴们,少走些歪路,更好地进行机器学习的研究。
在这里首先要感谢两位作者,一是提供了CUDA和CUDNN的正确方法的
另外一位则是提出了安装过程中许多人曾经遇到的黑屏、循环登录的解决办法
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下载地址:
cuda v6.0 Linux下载地址:
3,使用以下命令查看Noueau驱动是否被加载
$ lsmod | grep nouveau# 如果打印出一些信息,说明Noueau被加载了,正常情况下会打印出一些关于nouveau的信息
创建/etc/modprobe.d/blacklist-nouveau.conf,写入:
blacklist nouveauoptions nouveau modeset=0
重启后按: Ctrl+Alt+F1 进入文本模式
停止X服务
$ sudo /etc/init.d/lightdm stop
sudo sh cuda_8.0.61_375.26_linux.run
安装完成后重启桌面服务
$ sudo service lightdm start
$ vim ~/.bashrc # 编辑
~/.bashrc 的最后中添加如下代码
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATHexport CUDA_HOME=/usr/local/cuda-8.0export PATH=/usr/local/cuda-8.0/bin:$PATH
$source ~/.bashrc #配置立即生效
cd到cuda的安装目录执行解压命令:
$ cd /usr/local$ sudo tar -xzvf ~/downloads/cudnn-8.0-linux-x64-v5.1.tgz
这样就完成了cuDNN的安装。
$ nvcc -V
在ubuntu自己可以自动匹配找到相应的驱动的,当然你也可以自己根据自己服务器上的显卡型号去官网下载相应的驱动。
或者,如下:
我的已经按好了,应该是要重启一次的,会有提示。
接着再运行一下:
nvidia-smi
sudo apt install python3-pip
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 tfimport numpy as nphello=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不兼容!
好吧,看来内核4.13.0不能用,要换成4.4.0。linux更换内核很简单,一个系统中可以安装多个内核,也可以在开机的时候通过grub来选择要启动的内核。首先我们要做的是先看自己系统中现在存在几个内核。
使用uname -r
查看当前使用的内核。
然后我们明确几个有关内核的文件:
我当前的内核是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
安装完新的内核后,更换到新的内核(并不是新版本,我就是从4.13转为4.4)的方法:
grep menuentry /boot/grub/grub.cfg
,然后修改/etc/default/grub
中的内容修改GRUB_DEFAULT,默认为0,根据顺序改成你要启动的内核顺序就行(从0开始)。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博客问问题的