深度学习环境搭建指南

检查 GPU 是否支持

如果你想搭建深度学习环境,那么首先得有一块 NVIDIA GPU。很遗憾,目前 AMD 系列 GPU 对深度学习并不友好。

有了 NVIDIA GPU 之后,首先需要检查其型号是否符合深度学习的最低配置,目前热门的深度学习框架对老旧型号的 NVIDIA GPU 并不支持。其中,判断的原则是 NVIDIA GPU 的计算性能指数(Compute Capability)大于或等于 3.0。 你可以访问 官方性能指数 页面查看。

更新 NVIDIA GPU 驱动

接下来,你需要更新 NVIDIA GPU 驱动到最新版本。这一步骤非常简单,只需要到 官方驱动页面 找到对应型号下载安装即可。

安装 CUDA 架构

CUDA(Compute Unified Device Architecture,统一计算架构)是由 NVIDIA 所推出的一种集成技术,深度学习需要 CUDA 并行计算架构的支持。

目前,CUDA 的版本是 9.x,这里推荐 9.0 版本即可,你可以访问 官方页面 下载。

目前,CUDA 支持 Windows,Linux 和 macOS 操作系统。

安装 cuDNN 深度神经网络库

cuDNN 是 NVIDIA 为深度学习专门研发的神经网络加速库,并支持当前主流的 TensorFlow、PyTorch 等深度行学习框架。根据官方介绍,cuDNN 能更好地调度 GPU 资源,使得神经网络的训练过程更加高效。

安装 cuDNN 首先需要访问 NVIDIA Developer 网站 注册账号。该网站国内访问速度慢,可能需要耐心等待或采取其他手段。

登陆之后,需要根据之前安装的 CUDA 版本选择对应版本的 cuDNN 安装。

安装结果检查

更新驱动 + 安装 CUDA + 安装 cuDNN 等三个步骤完成之后,我们需要检查深度学习框架是否能正常监测到 GPU 并调用。

这里推荐使用 TensorFlow,首先需要安装 GPU 版本的 TensorFlow。你可以阅读 官方安装指南

安装完成之后,运行 TensorFlow 官方给出的 GPU 检测示例代码即可:

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

如果能在输出中看到 GPU 的字样,即代表安装成功。例如:

Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla K40c, pci bus
id: 0000:05:00.0
b: /job:localhost/replica:0/task:0/device:GPU:0
a: /job:localhost/replica:0/task:0/device:GPU:0
MatMul: /job:localhost/replica:0/task:0/device:GPU:0
[[ 22.  28.]
 [ 49.  64.]]

使用云服务训练

本地安装深度学习环境看起来很简单,但实际上因为系统环境等原因很容易碰到各种「坑」。很多时候,也非常推荐在云主机上完成深度学习训练。

当你选择在云主机上进行深度学习时,往往不需要自行配置环境,而是直接启动已配置好的镜像。无论是国内的 阿里云,还是国外的 AWS,都会提供最新的深度学习镜像。

例如,阿里云提供的 Ubuntu16.04(预装 NVIDIA GPU 驱动和 CUDA9.0) 镜像,已经为你配置好了驱动、CUDA、cuDNN。

你只需要在启动实例时加载即可,这样就省去了自行配置环境的麻烦。

除此之外,AWS 提供的 Amazon SageMaker 服务 可以让你一键启动 Jupyter Notebook,并在后端挂载相应的 GPU 实例,可以说再方便不过了。

小结

目前,想要自己完成机器学习模型训练的过程变得越来越方便。无论是自己购买 GPU 在本地搭建,还是使用按量付费的云服务,都能够让你的想法得以快速实现。本次实验中,我们重点介绍了深度学习环境搭建的流程而非细节。如果你在自行实践时遇到一些阻碍,可以尝试通过搜索引擎或开发者网站解决。