开发者社区> 【方向】> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

深度学习软件安装指南

简介: 作者为了搭建了一个基于Ubuntu和Nvidia的深度学习计算机,阅读了大量的文档来了解细节和规范,并把所做的所有工作整理并记录了下来。
+关注继续查看

由于即将要开始撰写强化学习论文,所以我最近搭建了一个基于Ubuntu和Nvidia的深度学习计算机。虽然在深度学习方面有很多不错的教程,但却无法找到一篇完整的安装说明。我不得不阅读大量的文档来了解细节和规范,其中一些不完整或者存在语法错误。因此,我决定把我所做的所有工作进行整理并记录下来。

该指南将告诉你如何进行安装:

  • 操作系统(Ubuntu)
  • 4个驱动程序和库(GPU驱动程序、CUDA、cuDNN和pip)
  • 5个Python深度学习库(TensorFlow、Theano、CNTK、Keras和PyTorch)

下图展示了每个包之间的依赖关系。由于只需要安装一个Python深度学习库,因此你可以随意选择所需的部分。

11.png

每个组件更详细的用途说明:

  1. Ubuntu (v16.04.3) - 操作系统,进程调度。
  2. Nvidia GPU驱动程序(v375) - 使操作系统能够操作GPU。
  3. CUDA (v8.0) - GPU C库。代表计算统一设备架构。
  4. cuDNN (v6.0.21) - 基于CUDA的深度学习基元库。代表CUDA深度神经网络。
  5. pip (v9.0.1) - Python包安装程序。
  6. TensorFlow (v1.3) - 由Google开发的深度学习库。
  7. Theano (v0.9.0) - 在GPU上运行的数学库。
  8. CNTK (v2.2) - 由Microsoft Research开发的深度学习框架。
  9. Keras (v2.0.8)- 深度学习包装。可与TensorFlow、Theano或CNTK一起使用。
  10. PyTorch (v0.2.0) - 具有GPU加速的动态深度学习库。

1. 安装 Ubuntu 16.04.3

本章节所示的安装步骤将覆盖已有的分区或操作系统,安装一个干净的操作系统

由于v 16.04.3是最新的LTS(长期支持)版本,因此它可以安装在可启动的USB上。首次打开计算机电源时,通过访问引导菜单并选择USB从USB引导。

我的计算机有两个硬盘,1TB的SATA和256GB的SSD。在我的搭建计划中,Ubuntu安装在1TB的硬盘中,这样SSD就可以用于存放数据集,加快训练速度。在安装过程中,屏幕显示Installation Type时,我选择了Something else,这一步将创建以下三个分区。

引导分区(128GB):包含系统文件、程序设置和文档。
交换分区(2xRAM大小):对我来说,这是128GB。用于扩展内核RAM作为虚拟内存使用。
用户分区(剩余的):我的1TB硬盘驱动器的可用空间为744GB。

安装完成后,运行以下命令升级内核版本。

sudo apt-get update
sudo apt-get upgrade

2. 安装Nvidia GPU驱动程序

安装Ubuntu后,你可能会注意到屏幕分辨率不正确,而且无法更改。这是因为来自GPU的视频输出没有驱动程序,也没有配置。

有两种方法来安装驱动程序,从某个Ubuntu的资源库安装,或者从安装。第一种方法更容易,但需要频繁重新安装。当调用命令sudo apt-get updatesudo apt-get upgrade时,会更新内核。这不会更新Nvidia驱动程序,并将导致GUI无法正确加载。而从源安装则可以避免这个问题。

从包装安装v375(更容易)

以下命令将列出与系统兼容的驱动程序版本。它将给出两个数字:最新版本和长期版本号。这个命令将从最早的版本开始列出,所以一定要向上滚动屏幕。

sudo add-apt-repository ppa:graphics-drivers/ppa

添加并安装资源库。在第二个命令中,将<driver_number>更改为要安装的版本。建议安装最新的长期支持版本:375。

sudo apt-get updatesudo apt-get install nvidia-<driver_number>

重新启动计算机并重新配置视频输出参数。

sudo shutdown -r now

Screen Display(屏幕显示)现在应该能够正确识别使用的显示器了,要测试驱动程序是否能正常工作,你可以更改显示配置、分辨率和方向。

从Nvidia源安装v384.90(更难)

Nvidia网站下载最新的驱动程序。对我而言,我选择的选项是:

GeForce -> GeForce 10 系列 -> GeForce GTX 1080 -> Linux 64位 -> 英语(英国)

可以选择编译为32位架构,以及开发版本的GUI。

sudo apt-get install gcc-multilib xorg-dev

CTRL + ALT + F1并登录。这将从GUI切换到终端。为了重建视频输出,必须首先停止GUI。

sudo service lightdm stop

如果该命令不起作用,那么说明Ubuntu的新版本使用的是systemctl而不是lightdm。然后给这个程序赋予可执行权限并运行它。

cd <download location>
chmod +x NVIDIA-Linux-x86_64-384.90.run
sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms

运行时,你可能会收到pre-install script failed(预安装脚本失败)的消息。这并不重要,因为预安装脚本包含一个命令:exit 1。其目的只是为了确保你真的要安装驱动程序。

选项--dkms(默认情况下应该是这个选项)在内核通过将驱动程序安装到一个模块中来更新自身时,会阻止重新安装驱动程序。在内核更新期间,dkms触发驱动程序重新编译到新的内核模块堆栈。

如果安装失败,那是因为Secure Boot没有在计算机的BIOS中禁用。重新启动计算机并在BIOS选项中禁用Secure Boot

如果安装成功,则可以重新启动GUI了。

sudo service lightdm start

卸载:sudo ./NVIDIA-Linux-x86_64-384.90.run --uninstall

验证

确保以下命令能够识别正确的GPU版本

nvidia-smi

确保驱动程序版本号就是你所安装的版本号

cat /proc/driver/nvidia/version

3. 安装CUDA 8.0

Nvidia网站下载CUDA的运行文件,使用以下系统属性:

Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(网络)

浏览.deb文件的存放位置,卸载.deb,更新软件包列表并使用以下命令安装CUDA。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

将库添加到bash路径中,以便可以让其他应用程序找到。

echo 'export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

要进行验证,执行nvcc -V以检查 Nvidia C 编译器版本(nvcc)与CUDA所使用的编译器版本一致。

重新启动计算机sudo shutdown -r now来完成安装。

可选:测试CUDA安装

测试安装的方法是运行一些例程。以下命令将创建一个名为test_CUDA的目录,其中会存储示例程序。

mkdir test_CUDA
cd test_CUDA
./cuda-install-samples-8.0.sh

子目录NVIDIA_CUDA-8.0_Samples/3_Imaging/cudaDecodeGL中存放了文件findgllib.mk。该文件在第61行第30列包含了Nvidia驱动程序的硬编码值,该值应从367更改为先前安装的驱动程序版本号。

编译例程

cd ../.. && make

你现在可以在NVIDIA_CUDA-8.0_Samples中运行例程了。 NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release中有两个特别有用的脚本。 ./deviceQuery能打印出正在使用的GPU,./bandwidthTest能打印出GPU的带宽。

4. 安装 cuDNN 6.0.21

Nvidia网站上注册开发人员计划并同意条款。从下拉菜单cuDNN v6.0.21 (April 27, 2017), for CUDA 8.0 下载:

  1. cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)
  2. cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)
  3. cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)

.deb优于.tar,因为这个格式专门为Ubuntu设计,安装过程更加清晰。这三个软件包可以使用以下命令进行安装:

sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb

测试 cuDNN

将安装的例程复制到可读目录中,编译并运行mnistCNN

cp -r /usr/src/cudnn_samples_v6/ $HOME
cd $HOME/cudnn_samples_v6/mnistCUDNN
make clean && make
./mnistCUDNN

如果一切顺利,脚本应该返回Test passed!

卸载 cudnn

以下命令将卸载这三个库。另外,如果你已经创建了例程,那么另外还有执行rm -r〜/ cudnn_samples_v6

sudo apt-get remove libcudnn6
sudo apt-get remove libcudnn6-dev
sudo apt-get remove libcudnn6-doc

5. 安装 pip 9.0.1

pip本身的更新非常频繁,每两周一次。建议使用最新的pip。

以下命令将进行安装并升级到最新版本。

sudo apt-get install python-pip python-dev
sudo pip install --upgrade pip

要进行验证,确保pip -V能打印出版本号。

6. 安装 Tensorflow 1.3.0

pip install tensorflow-gpu

要进行验证,启动python,执行$ python,并确保以下脚本能打印出Hello, TensorFlow!

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

7. 安装 Theano 0.10

Theano需要以下系统依赖关系

sudo apt-get install libopenblas-dev 

和以下Python依赖关系。

sudo pip install numpy scipy nose sphinx pydot-ng `pycuda scikit-cuda cython`

libgpuarray让Theano能够使用GPU,它必须从源代码进行编译。首先下载源代码

git clone https://github.com/Theano/libgpuarray.git
cd libgpuarray

在一个名为Build的文件夹中进行编译。

mkdir Build
cd Build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install

然后编译成一个python包

cd ..
`python setup.py build
sudo python setup.py install`

将下面这一行添加到~/.bashrc中,以便Python可以找到这个库。

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

最后,安装Theano

sudo pip install git+https://github.com/Theano/Theano.git#egg=Theano

要进行验证,首先创建一个测试文件test_theano.py其内容可以从这里复制过去。然后确保THEANO_FLAGS = device = cuda0 python test_theano.py能成功输出Used the gpu

8. 安装 CNTK 2.2

sudo pip install https://cntk.ai/PythonWheel/GPU/cntk-2.2-cp27-cp27mu-linux_x86_64.whl

要进行验证,确保python -c "import cntk; print(cntk.__version__)"能打印出2.2

9. 安装 Keras 2.0.8

sudo pip install keras

要进行验证,检查$ python中的import keras是否成功了。

10. 安装 PyTorch 0.2.0

PyTorch的运行依赖torchvisiontorch这两个库,下面将进行安装。

sudo pip install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl
sudo pip install torchvision

要进行验证,以下脚本应该能打印出一个张量。

from __future__ import print_function
import torch
x = torch.Tensor(5, 3)
print(x)

结论

到目前为止,整个过程中最难的部分是找到Nvidia驱动程序和深度学习软件包之间的依赖关系,以及最有效的长期支持版本的安装过程。最简单的部分是安装Python包,这些包维护得非常好,而且文档详细。

虽然阅读文档和源代码非常耗时,但是了解每个软件包的构建和运行情况非常有启发性,它能够帮助我了解整个Ubuntu生态系统。

文章原标题《Deep Learning Software Installation Guide》,作者:dyth,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容,请查看原文

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
深度学习与机器学习
我们使用机器算法来解析数据,从数据中学习,并根据所学知识做出明智的决策。基本上,深度学习用于创建人工“神经网络” ,可以自己学习和做出明智的决策。我们可以说深度学习是机器学习的一个子领域。
36 0
分布式安装|学习笔记
快速学习 分布式安装
33 0
深度揭秘:机器学习对软件开发带来哪些影响?
当软件开发碰见机器学习,到底能碰撞出什么样的火花呢?
1743 0
Golang学习笔记-IDE安装指南
引言   上篇Golang学习笔记-环境搭建指南已经讲解了如何搭建Golang开发环境,并写了一个Go程序【Hello,world】,但是写代码没有一个好用的IDE,没有语法高亮,自动补全,格式调整,查找函数等功能,想必也会令大家抓狂吧,笔者以前是做Java和.
2023 0
Linux系统学习之软件安装
一、源码包编译安装 由于计算机无法直接执行用高级语言编写的源程序,因此想要运行程序,就需要一种机制来让计算机识别,这样程序才可能运行起来。一般来说,计算机中存在解释型和编译型两种语言。 所谓解释型语言,就是计算机逐条取出源码文件的指令,将其转化成机器指令,并执行这个指令的过程。
1025 0
一份不可多得的深度学习技巧指南
本文列举了一些常用的深度学习的训练技巧,对这些技巧进行简单的介绍并说明它们的工作原理。涉及范围广,适合深度学习各领域的研究者。
4394 0
软件开发指南
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/42290281 1.很多时候,产品开发出来的效果和刚开始的设计以及客户的需求是不一致的,但是最后的结果是大家都接受的样子,虽然产物扭曲了,但是得到了大家的喜欢,所以很多时候我们需要顺其自然,不要因为不是自己的心意而去抱怨,也不要因为客户的刻意需求去抗拒。
816 0
软件学习遐想
今天完成了大二学期的全部考试,感觉自己身上好轻松,也许是自己感到的压力大的缘故,现在好了,一切都以结束了,那么现在我就来总结一下这次考试的收获吧! ASP.NET毫无疑问这是本学期最有价值的课程,也是学习软件最基本的要素,网站其实就是做好了东西给别人欣赏, 好的网站肯定受人推崇,但是,在这之前你必须要了解到有关这方面的知识要点, 在我印象中最深的就是ASP.NET的控件的使用,例如:标准控件,验证控件,数据源控件,数据绑定控件,等等。
709 0
学习软件设计的非功能性需求
    非功能需求是产品必须具备的品质或者它将事情做到了多好,它们可以让产品有吸引力、易于使用、快速、可靠或者安全。通常并不改变产品的功能,功能性需求是让产品工作的需求,非功能需求是为工作赋予特征的需求。
1622 0
+关注
【方向】
欢迎各位对内容方向及质量提需求,我们尽量满足,将国外优质的内容呈现给大家!
706
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载