出于想尝试一下深度学习中PyTorch的LSTM和CNN算法,并且使用GPU来做并行计算的想法,所以需要在自己的笔记本中安装这个PyTorch函数库。
本文假设读者已掌握Linux的基本命令使用与对Linux的操作方法,故本文将不做过多基本操作描述。
1. 网上已有许多安装教程,为何我还写此篇博客?
因为不同电脑配置不同,即使遇到相同的问题也未必能够完完全全按照网上已有的方法完全解决,本人折腾了将近3天的时间,重装了至少15次系统,其中尝试各种Ubuntu系统版本(16.04.0, 16.04.1, 16.04.4, 17.04, 17.10.1),各种Nvidia驱动(Nvidia-311,384,387,390),以及网上各种解决方案,将各种方案排列组合不断尝试后最终成功。因此写此博客以作记录,同时为与我遇到相同问题的人提供参考。
2. 遇到的问题是什么?
(1)安装Ubuntu时因Nvidia显卡(以下简称N卡)导致安装界面卡在Logo处无法安装
此问题虽然也困扰我了好一会,不过好在找到了一个作者的Github文章得以解决,更巧的是该作者的笔记本型号竟然与我的相同。解决问题的的办法就是在给Install Ubuntu项增加引导参数$vt_handoff acpi_osi=linux nomodeset,详情请参考链接:https://yingsen1.github.io/2017/04/03/set-up-ubuntu.html 中的《双系统的安装Ubuntu》章节,此处不作详细介绍。
(2) 打完N卡驱动后,无法成功安装CUDA(本文核心问题)
本人在此问题上花费最多的时间与精力,最终发现问题所在:Ubuntu的4.13.0-36-generic内核与N卡驱动不兼容导!本人花了很长的时间各种找博客解决此问题后,发现继续找博客不是个办法,因此去翻了CUDA的官方文档介绍了环境要求后发现它对Ubuntu的内核要求为4.4.0,而Ubuntu 16.04.4的内核为4.13.0-36。内核为4.4.0的Ubuntu为16.04.0与16.04.1,但其版本的GCC版本又不符合CUDA 9.1的要求,虽然有更新过GCC版本但后来依然安装失败,但并没有找原因便直接找其他解决方案了。于是直接去寻找其他解决方案,经过不懈的努力,后来找到了一篇英文文章说“Ubuntu的4.13.0-36-generic内核与N卡驱动不兼容导”,并通过:https://www.jianshu.com/p/df677e3fd630 提供的解决方案解决此问题。下图为CUDA 9.1的官网文档中的截图,详情可参考:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
CUDA的环境要求主要有(具体如下图所示):
1. Linux操作系统;
本人使用的为Ubuntu 16.04 64位 LTS版本,镜像名为:ubuntu-16.04.4-desktop-amd64.iso,其内核为:4.13.0-36-generic。
2. Python3.6环境及其包管理工具;
本人采用的为Anaconda5.1版本(包含Python,conda与pip工具),下载地址为:
https://www.anaconda.com/download/#linux
3. CUDA 9.1
CUDA 9.1下载地址:https://developer.nvidia.com/cuda-downloads
上图截图于PyTorch官网:http://pytorch.org/
本人的笔记本配置如下图所示,其实最主要的还是看显卡,显卡为NVIDIA GeForce的GTX 965M。
安装Ubuntu的教程网上有一大堆,此处不作详细介绍,仅给出安装图解教程链接及注意事项。
注意事项1:在能够进入正常安装界面之前,请看http://tieba.baidu.com/p/4987077178?pn=1 贴吧的9楼卡在Logo处的问题描述,贴吧的11楼给出解决方案,即选中“Install Ubuntu”按下键盘“E”键后,将光标移至queit splash 后面,按下空格后加上“$vt_handoff acpi_osi=linux nomodeset”的引导参数,最后按下“F10”启动安装则可成功解决卡在Logo界面无法进入安装界面的问题。此问题的原因应该是笔记本双显卡问题导致Ubuntu安装无法通过N卡的检测吧(猜测未经核实,可通过查询nomodeset参数含义了解真实原因)。
注意事项2:参考下面链接安装Ubuntu时,请务必选对安装的硬盘设备及安装盘,否则极有可能导致你的原系统文件以及硬盘中所有数据的丢失!!!!
Ubuntu安装图解教程链接1: http://blog.csdn.net/fesdgasdgasdg/article/details/54183577
Ubuntu安装图解教程链接2:http://blog.csdn.net/chandoudeyuyi/article/details/59651406
在本人解决问题的过程,不能如同https://yingsen1.github.io/2017/04/03/set-up-ubuntu.html (此作者与我笔记本型号完全相同)其中提到的下载驱动离线安装包(deb)的方式来安装,即通过N卡驱动官网http://www.geforce.cn/drivers 下载deb文件后安装驱动。
安装方式需通过https://www.jianshu.com/p/df677e3fd630 所述的“PPA途径”,其教程如下(本人解决问题时最新驱动版本为390,故在最后一行中本人所使用命令为 sudo apt-get install-390):
$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
# 如果没有add-apt-repository命令,安装 software-properties-common即可
$ sudo add-apt-repository ppa:graphics-drivers
$ sudo apt-get update
# 安装新的驱动nvidia-387.34
$ sudo apt-get install nvidia-387
本人通过安装Anaconda 5.1来安装Python,下载地址为:https://www.anaconda.com/download/#linux
下载完成后进入文件的下载路径通过dpkg命令安装,安装完成后需要配置环境变量,通过在~/.bashrc文件末尾中添加export PATH=/anaconda_home/bin:$PATH 将Anaconda的bin目录添加到环境变量中,请将“anaconda_home”替换成你实际安装Anaconda的路径。教程可参考:https://www.linuxidc.com/Linux/2016-08/134259.htm 。
本人一开始依然选择了在官网下载离线安装包(deb文件)的方式来安装CUDA 9.1,但此方法无法成功安装,因此同样还是参考:https://www.jianshu.com/p/df677e3fd630 中的最后一步(4)的在线安装的方式来安装,其具体安装方法请参考官网:https://developer.nvidia.com/cuda-downloads,选择与安装教程如下(分别复制下面步骤1 2 3 4在命令行中运行):
安装完成后还需要按照:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html的官方教程中的“7.1.1 Environment Setup”中的环境变量设置将CUDA添加到环境变量中。
CUDA的测试依旧参考官网教程:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html中的“7.2.3. Verify the Installation”章节中的编译Samples,并运行编译后的程序文件。其大致意思为将“CUDA-9.1”文件夹中的Samples文件夹复制到“~/NVIDIA_CUDA-9.1_Samples”中再编译(备份思想:不动原始文件)。
上述所有内容全部执行成功后,可通过PyTorch给出的命令来安装PyTorch,链接:http://pytorch.org/
命令如下图所示:即 conda install pytorch torchvision cuda91 -c pytorch