从零开始到ubuntu14.04系统+nvidia显卡驱动+cuda8.0+cudnn5.1+tensorflow(pytorch)
最近花了几天时间,将实验室的一台服务器从零到Ubuntu14.04系统,nvidia显卡驱动,cuda8.0+cudnnV5.1,tensorflow,pytorch安装好。中间遇到过无数个问题,现在将这个过程的步骤和问题记录下来,方便以后查看。
环境配置说简单也简单,说难也难,因为网上有很多教程可参考,但指不定什么时候你就会碰到教程中未提及的问题。往往会出现,你找了一个教程,并且按照别人的步骤来,别人就能Successfully installed,而自己就会出现各种红色字体的问题。总结了一下,原因大致为:
- 没有找对别人的教程。找教程一定要仔细检测确认教程安装的和自己安装的是一摸一样的东西,包括版本也要一致。不然会出现新的问题
- 教程也会出现问题,csdn上也会有各种打错字的,或者把命令行复制错误的,比如一些命令后面带有“- -”会写成“—”。
- 驱动软件安装包,最好去官网上下载,不要下载网上提供的百度网盘链接
- 网上找的教程发布时间要么是最近的,要么就很早的教程。这样会导致安装的软件版本难以对应。例如安装tensorflow,直接参照博客上的教程
pip install tensorflow
,这种简单的安装方式,导致安装默认的最新版本的tensorflow(1.8)。而从1.3版本以后,tensoflow就不再支持cudnn的v5.1版本。
现在来讲下流程。
1.Ubuntu 14.04 安装
准备一个u盘,制作ubuntu14.04系统盘,最好一直放着,之后可能有问题又得重装系统。不过ubuntu系统安装很快。
ubuntu14.04和16.04步骤一样,参考链接ubuntu系统安装
Ubuntu Linux系统时硬盘分区最合理的方法。参考链接
选择其他选项
Ubuntu Linux可以把分区作为挂载点,载入目录,其中最常用的目录如下表所示:
目录(挂载点) | 分区类型 | 建议大小 | 格式 | 描述 |
---|---|---|---|---|
/ | 40G | 主分区 | ext4 | 根目录,就是系统安装的目录,硬盘大的话一般40-100G,很多软件安装的位置 |
swap | 100G(2倍内存大小) | 逻辑分区 | swap | 交换空间 |
/boot | 200M左右 | 逻辑分区 | ext4 | Linux的内核及引导系统程序所需要的文件,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。 |
/home | 硬盘剩余都给/home | 逻辑分区 | ext4 | 用户工作目录;个人配置文件,如个人环境变量等;所有账号分配一个工作目录。 |
分区之后肯能会报错:
The partition table format in use on your disks normally requires to you create a separate partition for boot loader code. This partitionshould be marked for use as a “Reserved BIOS boot area” and should be at least 1MB in size. Note that this is not the same as a partition mounted on /boot
If you do not go back to the partitioning menu and correct this error,boot loader installation may fail later,although it may still be possible to install the boot loader to a partition.
解决方法:
添加一个分区,use as 选择EFI,逻辑分区,1G以下即可。参考链接
(u盘安装后系统后,不要手动把系统升级给关闭,因为后面有些安装包需要更新,不然会出现版本不兼容的问题,当初就是一安装系统就关闭更新设置,导致后面出现各种问题,折腾了很久…)
2. Ubuntu14.04环境下安装显卡驱动
1.先看看本机的显卡:
lspci |grep -i nvidia
2.下载官方驱动程序
3.打开终端,先删除旧的驱动(防止之前安装过驱动)
sudo apt-get remove --purge nvidia*
4.禁止集成的nouveau驱动
Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。
将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。
查看属性
$sudo ls -lh /etc/modprobe.d/blacklist.conf
$sudo chmod 666 /etc/modprobe.d/blacklist.conf
用gedit编辑器打开
$sudo gedit /etc/modprobe.d/blacklist.conf
blacklist vga16fb blacklist nouveau blacklist rivafb blacklist rivatv blacklist nvidiafb
再更新一下
sudo update-initramfs -u
修改后需要重启系统
sudo reboot
开机确认下Nouveau是已经被你干掉,使用命令:
lsmod | grep nouveau
5.安装驱动
- 先按Ctrl + Alt + F1到控制台,关闭当前图形环境
sudo service lightdm stop(关闭图形界面)
Unable to load the kernel module ‘nvidia.ko’. This is most likely because the kernel module was built using the wrong kernel source files. Please make sure you have installed the kernel source files for your kernel; on Red Hat Linux systems,for example,be sure you have the ‘kernel-source’ rpm installed. If you know the correct kernel source files are installed,you may specify the kernel source path with the ‘–kernel-source-path’ commandline option. -> Kernel module load error: insmod: error inserting ‘./usr/src/nv/nvidia.ko’:-1 Unknown symbol in module ERROR: Installation has Failed. Please see the file ‘/var/log/nvidia-installer.log’ for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at http://www.nvidia.com.
就是会出现Unable to load the kernel module 'nvidia.ko'
的问题,原因应该是系统内核和显卡不兼容
我把安装包升级了下,就没有这个问题了。再字符界面继续输入:
sudo apt-get update(只检查,不更新)
sudo apt upgrade(更新已安装的软件包)(这个会花比较长的时间)
- 安装驱动程序
$sudo chmod a+x NVIDIA-Linux-x86_64-xxx.run
$sudo ./NVIDIA-Linux-x86_64-xxx.run -no-x-check -no-nouveau-check -no-opengl-files
显卡版本对应 应该就不会出现问题。
安装过程一直选yes即可,只要没有出现上面的问题。
输入nvidia-smi
有显卡信息说明显卡安装成功了
或者验证驱动的版本
$ cat /proc/driver/nvidia/version
若有信息输出,则表示驱动安装成功
- 最后重新启动图形环境
$sudo service lightdm start
3.安装CUDA
ubuntu14.04自带的gcc版本是4.8,而cuda支持的版本也是4.8,所以不用降低版本。如果要降低版本参照gcc降低版本
cuda安装过程中会自带安装显卡,(其实也可以不安装显卡驱动,直接安装cuda,再选择里面选择安装显卡驱动即可,不过没有试过)。
切换到CUDA 的“.run”文件目录下,可以在桌面也可以在字符页面运行如下指令:
$sudo chmod a+x cuda_8.0.27_linux.run
$sudo sh cuda_8.0.27_linux.run
刚开始会看到许多文字,一路空格往下,直到“100%”
然后会看到一些选择不要手快选错了:
Do you accept the prevIoUsly read EULA?
accept/decline/quit: Do youaccept the prevIoUsly read EULA?
accept/decline/quit: acceptInstall NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n
(这里一定要选no,不然前面的驱动就白装了)。
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: yEnter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: yInstall the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: yEnter CUDA Samples Location
[ default is /home/mcis105 ]:
Installing the CUDA Samples in /home/mcis105 …
Copying samples to /home/mcis105/NVIDIA_CUDA-8.0_Samples now…
Finished copying samples.
===========
= Summary =
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/mcis105,but missing recommended libraries
看到上面信息cuda就安装成功了。
如果需要卸载CUDA,可执行如下命令:
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
- 设置系统环境变量
为了让系统能找到CUDA 的可执行文件及库文件,我们还需要对环境变量做一定
的设置:首先$ sudo su 切换为根用户,然后编辑/etc/profile 文件,这样就能使环境变量的设置对所用用户永久生效:
# gedit /etc/profile
export PATH=@H_708_404@/usr/local@H_708_404@/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=@H_708_404@/usr/local@H_708_404@/cuda-8.0/lib64:$LD_LIBRARY_PATH
修改文件后要想马上生效还要运行# source /etc/profile
,不然只能在下次重进此用户时生效。
(注:另外一种设置环境变量的方法是仅对当前用户有效,即编辑“.bashrc”文件:
$ sudo gedit ~/.bashrc
然后同样是在文件中加入上面两行:
export PATH=@H_708_404@/usr/local@H_708_404@/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=@H_708_404@/usr/local@H_708_404@/cuda-8.0/lib64:$LD_LIBRARY_PATH
修改文件后要想马上生效还要运行$ sudo ldconfig.)
- 验证CUDA 是否安装成功
首先运行如下命令:
$ nvcc -V
(注意,如果没有设置环境变量,可能会提示“nvcc 未安装”)
命令返回类似信息:
即CUDA 安装成功。
4. 安装CuDNN5.1
注意:从tensorflow1.3版本以后,tensoflow就不再支持cudnn的v5.1版本。一定要下载对应版本的tensorflow,或者安装cudnn6.1,步骤都是一样的。
tensorflow+cuda+cudnn+gcc等这些版本是否对应,安装前一定要去网上搜下。
cudnn安装简单,就是将cudnn的文件分别复制到cuda的某些文件下,给出第二种方式比较方便
参考链接
1.下载的cudnn-8.0-linux-x64-v5.1.tgz
解压后得到cuda文件夹,下面有include/cudnn.h
,以及lib64文件夹下的libcudnn.so
、libcudnn.so.5
、libcudnn.so.5.1.10
和libcudnn_static.a
四个文件
2.这三个.so文件大小都一样,可以看出libcudnn.so
和libcudnn.so.5
都是软链接,其中libcudnn.so
链接到libcudnn.so.5,libcudnn.so.5
链接到libcudnn.so.5.1.10
,所以真正的文件就是libcudnn.so.5.1.10
3.在安装CUDA时,对于默认的/usr/local/cuda-8.0
文件,在同一地址下创建了cuda文件夹作为软链接,因此这两个文件夹可以看成一个,修改任意一个文件夹中的文件,另一个文件夹都会作相应的修改
4.把cudnn.h拷到本地对应位置
$ cd Downloads/cuda
sudo cp include/cudnn.h /usr/local/cuda/include/
5.把lib64下的文件拷到本地对应位置
$ cd Downloads/cuda
sudo cp lib64/* @H_708_404@/usr/local@H_708_404@/cuda/lib64/
6.创建软连接
$ cd /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
第二种方式(比较简洁):
然后切换到cudnn-8.0-linux-x64-v5.0-ga.tgz
的目录下
打开终端,输入:
$ tar -zxvf cudnn-8.0-linux-x64-v5.0-ga.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
$ sudo cp cuda/lib64/libcudnn* @H_708_404@/usr/local@H_708_404@/cuda-8.0/lib64/
$ sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda-8.0/lib64/libcudnn*
至此cuda8.0+cudnn5安装成功了。
5.安装tensorflow
利用ubuntu14.04自带的python2.7来安装tensorflow,在tensorflow下载对应的whl文件。参考链接
1.pip 安装
$ sudo apt-get install python-pip python-dev python-setuptools build-essential
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv
为了检测是否安装好,可以查看pip的版本:
$ pip --version
2.Tensorflow安装
接下来,就可以按照Tensorflow Download and Setup中的Pip Installation开始安装,命令如下:
$sudo pip install tensorflow_gpu-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl
可能会遇到安装失败的问题,例如:
Found existing installation: six 1.4.1DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.Uninstalling six-1.4.1: …..OSError: [Errno 1] Operation not permitted: ‘/tmp/pip-vhk0MW-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info’
这个问题就是安装了six依赖包,而且版本不对应,升级下就行了:
$ sudo easy_install --upgrade six
重装后有出现了:
matplotlib 1.3.1 requires tornado,which is not installed.
matplotlib 1.3.1 requires nose,which is not installed.
上面的结果说明matplotlib包有两个依赖包没有安装。pip管理参考链接
pip check用来验证已安装的包是否有兼容的依赖性问题。输入:
$ pip check
matplotlib 1.3.1 requires tornado,which is not installed.
解决的办法有很多,我是重装了matplotlib,下载whl文件,用pip install安装就解决了这个问题。matplotlib下载链接
安装完成后,就可以测试,是否安装成功,其中提到的six和protobuf的问题,都是版本不一致导致的,重新升级下就可以了。问题解决链接
6.安装pytorch
上面安装成功后pytorch就很容易安装了
sudo pip install torch torchvision
此时安装的是torch0.4,要安装0.3就去官网上下载whl文件安装。
7.安装其他软件包…
1)安装spyder
$ sudo apt-get install spyder
2)安装opencv
安装opencv有两种方式,一是用make编译安装比较麻烦;二是直接用pip安装很快也不会报错。
sudo pip install opencv-python
3)安装sklearn
sudo pip install sklearn
4)安装其他库,方法都是一样的。
总结
至此,所有的环境都安装好了,痛苦的实验才刚刚开始,
原文链接:https://www.f2er.com/ubuntu/349409.html