Tensorflow支持的设备

神经网络的训练过程中涉及了大量的计算过程,这是天生的,和使用哪种框架没有关系 。性能卓越的运算设备一般比较昂贵,但是能够带来计算速度上的提升。除此之外,在使用 TensorFlow 实现神经网络算法时可以选择使用多个运算设备来加速程序的计算过程。加速计算是本幸的主要内容,为了设计出合理的并行训练的模型,首先需要对并行训练的原理进行了解,这些理论方面的内容放到了下一讲。在以后,我们将学习如何利用单机上的多个设备加速计算的过程,其中就用到了并行训练的原理。同时将介绍如何使用 TensorFlow 完成分布式 的模型训练,这一部分只是讲清楚了思路而和TensorFlow 的开源实现给出了一个例程。

如下图所示, TensorFlow 支持的设备包括 CPU(一般是 x86 或 x64 架构的 CPU,也可以是手机端 ARM 架构的CPU,不过由于 ARM 的 CPU 性能不是十分出众,所以一般不会在训练的过程中被采用)、 GPU 和 TPU ( TensorProcessing Unit,这是 Google 专门为大规模的深度学习计算而研发的特殊设备,目前没有公开发布)。
Tensorflow支持的设备

在之前的章节,我们都是以运行单机模式下的 TensorFlow 程序为主。下图展示了单机模式下 TensorFlow 程序的实现情况,在单机模式下, Client、 Master和 Worker全部工作在一台机器上的同一进程中,可以使用多个设备加速计算的过程,此时 Worker 会对这些设备进行统一的管理。

Tensorflow支持的设备
下图展示了分布式模式下 TensorFlow 程序的实现情况, 在上图的基础上, Master 管理了多个 Worker, 每个 Worker 又管理了多个运算设备 (Device)。在分布式模式下, Client、 Master 和Worker 被允许运行在不同机器上, 可以使用多个设备加速计算的过程, 此时 Worker 会对这些设备进行管理。
Tensorflow支持的设备

为 了 测 试 TensorFlow 的性能, Google 公司使用分布式版 本 的 Tensor Flow 训练了参加比赛的 Inceotion V 1 模型。在训练的过程中, Google 统计了使用不同的 GPU数量时整体的计算速度相对于使用单个 GPU时的计算速度有多少提升。根据 Google 公司公布的统计数据,绘制出如下图所示统计图。

从上图中我们可以看到,在 GPU 数量小于 16 时,基本没有性能损 耗( GPU 的数量等于相对于单 GPU 的加速值);直到 50 块GPU 时,依然 可以获得 40 倍于单 GPU 的提速(每个GPU 有 20%的性能损耗) ;在100 块 GPU 时,能得到 56 倍的提速(每个 GPU 有 44%的性能损耗〉。由此我们可 以得出结论,分布式的 TensorFlow 在实现大规模的分布式并行计算时依然 能够获得令人满意的并行效率。

Tensorflow支持的设备
总结:这一节我们讲述了tensorflow在单机和多机分布式上的原理,以及tensorflow所支持的设备,下一节,我们将具体讲述tensorflow的单机实现。

关注小鲸融创,一起深度学习金融科技!

Tensorflow支持的设备