深度学习软件安装指南

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

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

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

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

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

  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,译者:夏天,审校:主题曲。

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

时间: 2024-11-01 06:12:00

深度学习软件安装指南的相关文章

手把手教你安装深度学习软件环境(附代码)

为了进行强化学习研究,我最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明.另外,我也不得不阅读了很多文档来试图理解安装细节--其中的一些并不完整,甚至包含语法错误.因此,本文试图解决这个问题,提供一个详尽的软件环境安装指南. 本文将指导你安装 操作系统(Ubuntu) 4 种驱动和库(GPU 驱动.CUDA.cuDNN 和 pip) 5 种 Python 深度学习库(TensorFlow.Theano.CNT

Nervana 开源深度学习软件,性能超 Facebook、Nvidia产品

Nervana System是少数专注机器学习这种人工智能技术的创业公司该公司,近日宣布将其深度学习软件在Apache开源许可协议下开源(github),任何人都可以免费下载使用.根据Facebook一位研究者的基准测试,Nervana的软件比业界知名的深度学习工具性能都要高,包括Facebook自己的Torch7和Nvidia的cuDNN. 深度学习时人工智能技术的热门领域,目前谷歌.微软和百度等互联网巨头在深度学习也都投入重金研发.而不少深度学习创业公司也都遭巨头们纷纷抢购,例如Madbit

10个深度学习软件的安装指南(附代码)

由于近期论文的需要,我搭建了一个基于 Ubuntu 和英伟达的深度学习环境.尽管已经有很多非常棒的关于英伟达驱动和 CUDA 的安装指南, 但依然没有详尽的深度学习环境搭建指南.另外,我需要查阅很多文档来熟悉细节,其中一些细节还有待完善,甚至还有一些包含语法错误.因此我决定把我这段时间查阅的文档(见参考链接)做个总结. 该指南会安装如下内容 操作系统(Ubuntu) 4 个驱动和库 5 个 Python DL 库(TensorFlow,Theano,CNTK,Keras 和 PyTorch) 下

深度学习必备手册(下)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 请收下这份关于人工智能的根目录--博客整理系列(一) 关于数据科学的那些事--博客整理系列(二) 机器学习必备手册--博客整理系列(三) 扩展眼界的都在这--博客整理系列(四) 深度学习必备手册(上)--博客整理系列(五) 深度学习的概念源于人工神经网络的研究,如果追溯深度学习的概念还是要回到2006年Hinton那篇论文,基于深信度网(DNB)提出非监督贪心逐层训练算法,未解决深层结构相关的优化难题出现的论

手把手教你搭建自己的深度学习机器

深度学习是一门用来解决复杂问题的技术,例如自然语言处理和图像处理.目前,我们已经可以很快的处理超大计算量的问题--这多亏了GPU,GPU最初就是用于快速生成高分辨率计算机图像,由于它的计算效率使得其非常适合用于深度学习算法.原先需要用好几周才能分析出来的结果,现在几天时间就能完成. 虽然现在的计算机都有GPU,但是并不是所有的GPU都适合用来进行深度学习.对于那些不能深度学习功能的GPU,本文将会一步一步的教大家如何构建一个自己的深度学习机器. 深度学习系统本质上是在另一台电脑上安装一个具有深度

如何在实战路上与时俱进:深度学习最佳实践

自2006年Hinton提出神经网络新的训练方法起,深度学习发展迅速,促使人工智能在图像.语音.自然语言处理等多个领域有了实质性的突破,达到产业应用标准.然而,深度学习作为人工智能领域的一项前瞻技术,实践性强,入门门槛高,关于深度学习的研究与应用,现在仍有很多问题没有找到满意的答案,这些都给深度学习的广泛应用带来挑战.本文旨在提供一份清晰.简洁的深度学习实践说明,以便从事深度学习研究与工程技术人员能够快速掌握深度学习的实际经验. 第一节:深度学习概述 深度学习是模拟人脑进行分析学习的多层神经网络

深度学习框架中的魔鬼:探究人工智能系统中的安全问题

ISC 2017中国互联网安全大会举办了人工智能安全论坛. 我们把论坛总结成为一系列文章,本文为系列中的第一篇. 深度学习引领着新一轮的人工智能浪潮,受到工业界以及全社会的广泛关注. 虽然大家对人工智能有很多美好的憧憬,但是现实是残酷的 - 随着一批深度学习应用逐渐开始变成现实,安全问题也渐渐显现出来. 人工智能应用面临来自多个方面的威胁:包括深度学习框架中的软件实现漏洞.对抗机器学习的恶意样本生成.训练数据的污染等等.这些威胁可能导致人工智能所驱动的识别系统出现混乱,形成漏判或者误判,甚至导致

机器学习和深度学习的最佳框架大比拼

在过去的一年里,咱们讨论了六个开源机器学习和/或深度学习框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlib和TensorFlow.如果把网撒得大些,可能还会覆盖其他几个流行的框架,包括Theano(一个10年之久的Python深度学习和机器学习框架),Keras(一个Theano和TensorFlow深度学习的前端),DeepLearning4j(Java和Scala在Hadoop和Spark

GitHub 上 57 款最流行的开源深度学习项目

GitHub 上 57 款最流行的开源深度学习项目 本文整理了 GitHub 上最流行的 57 款深度学习项目(按 stars 排名).最后更新:2016.08.09 1.TensorFlow 使用数据流图计算可扩展机器学习问题 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了2倍. TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用 TensorFlow.