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

简介:

为了进行强化学习研究,我最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器。尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明。另外,我也不得不阅读了很多文档来试图理解安装细节——其中的一些并不完整,甚至包含语法错误。因此,本文试图解决这个问题,提供一个详尽的软件环境安装指南。


本文将指导你安装


  • 操作系统(Ubuntu)

  • 4 种驱动和库(GPU 驱动、CUDA、cuDNN 和 pip)

  • 5 种 Python 深度学习库(TensorFlow、Theano、CNTK、Keras 和 PyTorch)


这些软件之间的互相依赖关系如下图所示。其中,你只需要安装一种深度学习库,请自由选择。


9bae25177216803ba6c3aa361c74f88c39fafd1d

深度学习软件安装和依赖示意图


以下是各个软件的细节介绍:


  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 安装包。「Pip 安装包」。

  6. TensorFlow(v1.3)——谷歌开发的深度学习框架。

  7. Theano(v0.9.0)——此前由 MILA 负责维护的深度学习框架。

  8. CNTK(v2.2)——微软研究院开发的深度学习框架。

  9. Keras(v2.0.8)——深度学习包装可互换后端。可与 TensorFlow、Theano 和 CNTK 共同使用。

  10. PyTorch(v0.2.0)——可被 GPU 加速的动态图深度学习框架,主要由 Facebook 的研究人员负责开发。


1. 安装 Ubuntu 16.04.3


v 16.04.3 可由 USB 启动的方式安装,它是最新的 LTS(长期支持)版本。首次在电脑上启用时,请在 BIOS 中选择由 USB 引导启动。


我的电脑中有两块硬盘——一块 1TB 的 SATA 和一块 256GB 的 SSD。在我的设想中,Ubuntu 被安装在常规硬盘中,固态硬盘(SSD)用于处理数据集和加速训练。在安装过程中,在屏幕中的 Installation Type 中选择 Something else,随后我们要进行三个分区操作:


  • 引导分区(128GB):包含系统文件、程序设置和文档。

  • 交换分区(2 倍的内存大小):对于我来说这就是 128GB。这块分区的容量用于扩展 Kernel RAM 作为虚拟内存使用。

  • 用户分区(剩下的部分):1TB 的硬盘剩下的空间大约还有 744GB。


在安装后,最好先运行以下命令来升级内核版本。


 
  1. sudo apt-get update

  2. sudo apt-get upgrade


Reference:https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop#0


2. 安装英伟达 GPU 驱动


在安装完 Ubuntu 后,你可能会发现屏幕的分辨率不对,而且不能修改,这是因为现在还没有安装 GPU 驱动。


安装驱动有两种方法:从 Ubuntu 资源库和数据源。第一个方法更加容易,但需要频繁的重新安装。使用 sudo apt-get update 和 sudo apt-get upgrade 指令后,系统的内核可以自动升级。但这样并不会更新英伟达驱动,可能会导致 GUI 无法正确加载。从数据源安装可以避免这个问题。


  • 从安装包里安装 v375 驱动(简单的方法)


以下命令会将与你系统相兼容的驱动版本显示出来,它会提供两个版本号:最新的不稳定版和长期稳定版。版本号会从头列起,所以你需要把页面滚到最上面。


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


添加并安装资源库。通过第二个命令,改变你想要安装的<driver_number>。我们在这里推荐安装最新的长期稳定版本——375 版。


 
  1. sudo apt-get update

  2. sudo apt-get install nvidia-<driver_number>


重启计算机以重新配置视频输出。


 
  1. sudo shutdown -r now


要测试驱动程序是否工作,Screen Display(SUPERKEY,屏幕显示类型)现在应该可以识别你使用的显示器了,你可以修改设置、分辨率与方向。


Reference:https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa


  • 从英伟达网站安装 v384.90(较难的方法)


从英伟达网站下载最新的驱动程序版本。基于硬件配置,我选择的选项是:


GeForce -> GeForce 10 Series -> GeForce GTX 1080 -> Linux 64 bit -> English (UK)


可选条件:编译到 32 位架构和 GUI 的开发版本。


 
  1. sudo apt-get install gcc-multilib xorg-dev


按 CTRL + ALT + F1 键登录,从 GUI 转至终端。为了重建视频输出,必须先将其暂停。


 
  1. sudo service lightdm stop


如果命令行没有效果,Ubuntu 新版本使用 systemctl 替换 lightdm。然后使 runfile 可执行,并运行它。


 
  1. cd <download location>

  2. chmod +x NVIDIA-Linux-x86_64-384.90.run

  3. sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms


运行时,你可能会收到一条 pre-install script failed 信息。这没什么影响,因为预安装脚本包含命令 exit 1,其目标是确保你真的想安装驱动程序。


选项--dkms(默认开启)在 kernel 自行更新时将驱动程序安装至模块中,从而阻止驱动程序重新安装。在 kernel 更新期间,dkms 触发驱动程序重编译至新的 kernel 模块堆栈。


如果安装失败,则原因在于计算机的 BIOS 未关闭 Secure Boot。重启电脑,在 BIOS 选项中关闭 Secure Boot。


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


 
  1. sudo service lightdm start


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


验证


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


 
  1. nvidia-smi


确保驱动程序版本号与你安装的一致


 
  1. cat /proc/driver/nvidia/version


3. 安装 CUDA 8.0


从英伟达网站,使用下列系统属性下载 CUDA 的 runfile(地址:https://developer.nvidia.com/cuda-downloads)。


Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(network)


导航至.deb 文件的位置后,将该文件解压缩,更新软件包列表,使用下列命令安装 CUDA。


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

  2. sudo apt-get update

  3. sudo apt-get install cuda


将库添加至 bash path,这样就可以使用其他应用找到库了。


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

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

  3. source ~/.bashrc


验证时,使用 nvcc -V 确保 Nvidia C Compiler(nvcc)版本与 CUDA 的版本匹配。


重启电脑 sudo shutdown -r now,完成安装。


可选操作:测试 CUDA 安装


测试安装的一个方法是运行一些示例。以下命令行创建了一个存储示例程序的 test_CUDA 目录。


 
  1. mkdir test_CUDA

  2. cd test_CUDA

  3. ./cuda-install-samples-8.0.sh .


子目录 NVIDIA_CUDA-8.0_Samples/3_Imaging/cudaDecodeGL 中是 findgllib.mk 文件。该文件的第 61 行 30 列包含了英伟达驱动程序的硬编码值,该值应从 367 更改成你安装的驱动程序版本号。


编译示例


 
  1. cd ../.. && make


你现在可以在 NVIDIA_CUDA-8.0_Samples 内随意运行示例。你可以在 NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release 中找到两个非常有用的脚本:./deviceQuery 可以在使用过程中打印 GPU,./bandwidthTest 可以打印它的带宽。


Reference:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html


4. 安装 cuDNN 6.0.21


在英伟达网站上注册开发者项目,同意条款。从下拉菜单中选择 cuDNN v6.0.21 (April 27, 2017), for CUDA 8.0,并下载:


  • cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)

  • cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)

  • cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)


.deb 优先于.tar,因为.deb 格式更适用于 Ubuntu,可以进行更纯净的安装。使用下列命令安装这三个包:


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

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

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


测试 cuDNN


将已安装的示例复制到可读目录,然后编译并运行 mnistCNN。


 
  1. cp -r /usr/src/cudnn_samples_v6/ $HOME

  2. cd $HOME/cudnn_samples_v6/mnistCUDNN

  3. make clean && make

  4. ./mnistCUDNN


如果一切顺利,脚本应该会返回一条 Test passed! 消息。


卸载 cudnn


使用以下命令卸载三个库。另外,如果你已经创建了样本,那么再加上 rm -r ~/cudnn_samples_v6。


 
  1. sudo apt-get remove libcudnn6

  2. sudo apt-get remove libcudnn6-dev

  3. sudo apt-get remove libcudnn6-doc


Reference:cuDNN Installation Guide cuDNN Installation Guide(http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)


5. 安装 pip 9.0.1


Pip 的升级非常频繁,几乎每两周一次,建议使用最新版本的 pip。


请使用以下命令安装和升级最新版本的 pip。


 
  1. sudo apt-get install python-pip python-dev

  2. sudo pip install --upgrade pip


验证:请确保键入 pip -V 后可以打印出版本号。


6. 安装 Tensorflow 1.3.0


 
  1. pip install tensorflow-gpu


验证:启动$ python,确认是否以下脚本能够打印出 Hello, Tensorflow!


 
  1. import tensorflow as tf

  2. hello = tf.constant('Hello, TensorFlow!')

  3. sess = tf.Session()

  4. print(sess.run(hello))


Reference:https://www.tensorflow.org/install/install_linux


7. 安装 Theano 0.10


Theano 需要的系统环境:


 
  1. sudo apt-get install libopenblas-dev cmake git


此外还要遵循 Python 的系统需求。


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


libgpuarray 可以让 Theano 使用 GPU,它必须从源编译。首先下载源代码


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

  2. cd libgpuarray


将其编译为一个名为 Build 的文件夹。


 
  1. mkdir Build

  2. cd Build

  3. cmake .. -DCMAKE_BUILD_TYPE=Release

  4. make

  5. sudo make install


随后将其编译成一个 Python 包。


 
  1. cd ..

  2. python setup.py build

  3. sudo python setup.py install


将下面一行添加至 ~/.bashrc,这样 Python 就可以找到库了。


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


最后,安装 Theano


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


验证:创建测试文件 test_theano.py,其中的内容复制自:http://deeplearning.net/software/theano/tutorial/using_gpu.html#testing-theano-with-GPU


随后看看 THEANO_FLAGS=device=cuda0 python test_theano.py 在使用了 GPU 之后是否成功。


Reference: Theano 0.9.0 documentation(http://deeplearning.net/software/theano/install_ubuntu.html)


8. 安装 CNTK 2.2


 
  1. 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。


Reference: Setup CNTK on your machine(https://docs.microsoft.com/en-us/cognitive-toolkit/setup-cntk-on-your-machine)


9. 安装 Keras 2.0.8


 
  1. sudo pip install keras


验证:检查$ python 中的 import keras 是否成功。


Reference: Keras Installation(https://keras.io/#installation)


10. 安装 PyTorch 0.2.0


PyTorch 运行在两个库上: torchvision 和 torch,我们需要这样安装:


 
  1. sudo pip install http://download.pytorch.org/whl/cu80/torch-

  2. 0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl

  3. sudo pip install torchvision


验证:以下脚本能够打印出一个带有随机初始浮点数的张量。


 
  1. from __future__ import print_function

  2. import torch

  3. x = torch.Tensor(5, 3)

  4. print(x)


Reference: http://pytorch.org/


结论


目前为止,整个过程中最难的部分是找出 Nvidia 驱动和深度学习包之间的依赖关系,以及最有效的长期安装过程。而最简单的部分是安装 Python,安装包和文档都得到了良好的维护。


虽然阅读文档和源代码都非常耗费时间,但了解每个软件包的构建和功能是非常具有启发性的,它也可以帮助我们理解整个 Ubuntu 生态系统。


希望本文对你有所帮助。 


原文发布时间为:2017-10-04

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
2月前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
140 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
4月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能垃圾分类与环境保护
使用Python实现深度学习模型:智能垃圾分类与环境保护 【8月更文挑战第7天】
226 2
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
423 1
深度学习环境搭建笔记(一):detectron2安装过程
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
软件工程师,入门下深度学习吧
软件工程师,入门下深度学习吧
65 9
|
3月前
|
机器学习/深度学习 自动驾驶 算法
深度学习之虚拟环境生成
基于深度学习的虚拟环境生成是利用深度学习技术自动创建复杂的三维虚拟场景和环境。这一领域在游戏开发、虚拟现实(VR)、增强现实(AR)、模拟训练等方面有广泛的应用。
53 6
|
2月前
|
机器学习/深度学习 数据挖掘 数据处理
深度学习之卫星图像中的环境监测
基于深度学习的卫星图像环境监测是指通过使用深度学习模型处理和分析来自卫星的遥感数据,以实现对地球环境的自动化监测和分析。这项技术极大提升了环境监测的效率、精度和规模,应用于气候变化研究、生态保护、自然灾害监测、城市扩张评估等多个领域。
159 0
|
2月前
|
机器学习/深度学习 人工智能 vr&ar
深度学习之实时数据驱动的虚拟环境
基于深度学习的实时数据驱动的虚拟环境是近年来在计算机图形学、人工智能和虚拟现实(VR)领域的热门话题。
40 0
|
4月前
|
机器学习/深度学习 传感器 监控
深度学习之环境感知模型
基于深度学习的环境感知模型,旨在通过利用深度学习技术,使系统能够感知、理解并响应其所在的物理或虚拟环境。此类模型在自动驾驶、机器人导航、智能监控、虚拟现实等领域有着广泛的应用。
72 3
|
4月前
|
机器学习/深度学习 传感器 算法
深度学习之环境感知系统
基于深度学习的环境感知系统是一类能够理解、感知和解读周围环境的智能系统。通过使用深度学习算法,这些系统可以分析多模态数据(如图像、音频、激光雷达数据等),实时感知环境的动态变化,为自动驾驶、机器人、智能家居等领域提供关键支持。
127 3
|
4月前
|
机器学习/深度学习 自然语言处理 数据处理

热门文章

最新文章