选自媒体
机器之心合集
参演:卢雪、李泽南
搭建完深度学习机之后,我们下一步要做的就是搭建完整的开发环境。 本文将向您解释如何在新安装的 Ubuntu 机器上安装 Python 和 Nvidia 硬件驱动程序、各种库和软件包。
为了进行强化学习研究,最近购买了一台基于Ubuntu和NVIDIA GPU的深度学习机。 虽然目前网上已经有一些环境部署指南,但仍然没有全面的安装说明。 此外,我必须阅读大量文档来尝试了解安装详细信息 - 其中一些不完整,甚至包含语法错误。 因此,本文试图解决这个问题,并提供详细的软件环境安装指南。
本文将指导您安装
这些软件之间的相互依赖关系如下图所示。 其中,您只需安装一个深度学习库,请自由选择。
深度学习软件安装及依赖关系图
以下是各个软件的详细介绍:
Ubuntu (v16.04.3) - 操作系统,各种任务处理。
Nvidia GPU 驱动程序 (v375) - 允许系统从 GPU 获得加速。
CUDA (v8.0) - GPU C 语言库。 “计算相同的设备架构”。
cuDNN (v6.0.21) - 基于 CUDA 的深度学习原始库。 “CUDA深度学习库”。
pip (v9.0.1) - Python 安装包。 “pip安装包”。
TensorFlow (v1.3) - 由 Google 开发的深度学习框架。
Theano (v0.9.0) - 之前由 MILA 维护的深度学习框架。
CNTK (v2.2) - 微软研究院开发的深度学习框架。
Keras (v2.0.8) - 用于可互换后端的深度学习包装器。 适用于 TensorFlow、Theano 和 CNTK。
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,然后我们将执行三个分区操作:
安装完成后,最好运行以下命令来升级内核版本。
sudo apt-get update
sudo apt-get upgrade
参考:#0
2.安装NVIDIA GPU驱动
安装Ubuntu后,你可能会发现屏幕分辨率不对并且无法修改。 这是因为GPU驱动还没有安装。
有两种方法安装驱动程序:从 Ubuntu 存储库和从数据源。 第一种方法比较简单,但需要经常重新安装。 使用sudo apt-get update和sudo apt-get upload命令后,可以自动升级系统内核。 但是,这不会更新 NVIDIA 驱动程序,并可能导致 GUI 无法正确加载。 从数据源安装可以避免此问题。
从安装包安装v375驱动(简单方法)
以下命令将显示与您的系统兼容的驱动程序版本。 它将提供两个版本号:最新的不稳定版本和长期稳定版本。 版本号将从头开始列出,因此您需要滚动到页面顶部。
sudo add-apt-repository ppa:graphics-drivers/ppa
添加并安装资源库。 使用第二个命令,更改您要安装的内容。 我们建议在这里安装最新的长期稳定版本 - 版本 375。
sudo apt-get update
sudo apt-get install nvidia-<driver_number>
重新启动计算机以重新配置视频输出。
sudo shutdown -r now
为了测试驱动程序是否正常工作,屏幕显示 (SUPERKEY) 现在应该能够识别您正在使用的显示器,并且您可以更改设置、分辨率和方向。
参考:~graphics-drivers/+archive/ubuntu/ppa
从 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 转到终端。 为了重建视频输出,必须首先暂停它。
sudo service lightdm stop
如果命令行没有效果,新版本的Ubuntu使用systemctl来替代lightdm。 然后使 runfile 可执行并运行它。
cd <download location>
chmod +x NVIDIA-Linux-x86_64-384.90.run
sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms
运行时,您可能会收到预安装脚本失败的消息。 这并不重要,因为预安装脚本包含命令 exit 1,其目标是确保您确实想要安装驱动程序。
选项 --dkms(默认情况下打开)会在内核更新自身时将驱动程序安装到模块中ubuntu下卸载软件,从而防止重新安装驱动程序。 在内核更新期间,dkms 会触发驱动程序重新编译为新的内核模块堆栈。
如果安装失败,原因是计算机BIOS中没有关闭Secure Boot。 重新启动计算机并在 BIOS 选项中关闭安全启动。
如果安装成功,您可以重新启动 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 文件的位置后,解压缩该文件,更新包列表,然后使用以下命令安装 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 以完成安装。
可选:测试 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 可以打印其带宽。
参考:
4.安装cuDNN 6.0.21
在 NVIDIA 网站上注册开发者计划并同意条款。 从下拉菜单中选择适用于 CUDA 8.0 的 cuDNN v6.0.21(2017 年 4 月 27 日)并下载:
适用于 Ubuntu16.04 (Deb) 的 cuDNN v6.0 运行时库
适用于 Ubuntu16.04 (Deb) 的 cuDNN v6.0 开发人员库
Ubuntu16.04 (Deb) 的 cuDNN v6.0 代码示例和用户指南
.deb 优于 .tar,因为 .deb 格式更适合 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
如果一切顺利,脚本应该返回测试已通过! 信息。
卸载cudnn
使用以下命令卸载这三个库。 此外,如果您已经创建了示例,请添加 rm -r ~/cudnn_samples_v6。
sudo apt-get remove libcudnn6
sudo apt-get remove libcudnn6-dev
sudo apt-get remove libcudnn6-doc
参考:cuDNN安装指南 cuDNN安装指南()
5.安装pip 9.0.1
Pip 升级非常频繁,几乎每两周一次。 建议使用最新版本的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并确认以下脚本是否可以打印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 cmake git
另请遵循 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,其中内容复制自:#testing-theano-with-GPU
然后使用GPU后查看THEANO_FLAGS=device=cuda0 python test_theano.py是否成功。
参考:Theano 0.9.0 文档()
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。
参考:在你的机器上安装CNTK()
9.安装Keras 2.0.8
sudo pip install keras
验证:检查$python中import keras是否成功。
参考:Keras安装(#installation)
10.安装PyTorch 0.2.0
PyTorch 在两个库上运行:torchvision 和 torch。 我们需要像这样安装它们:
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)
参考:
综上所述
到目前为止ubuntu下卸载软件,整个过程中最困难的部分是弄清楚 Nvidia 驱动程序和深度学习包之间的依赖关系,以及最有效的长期安装过程。 虽然最简单的部分是安装 Python,但安装包和文档都维护得很好。
虽然阅读文档和源代码非常耗时,但了解每个包的构造和功能非常有启发性,也可以帮助我们了解整个 Ubuntu 生态系统。
希望这篇文章对您有所帮助。
原文链接:@dyth/deep-learning-software-installation-guide-d0a263714b2