本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】基准评测 TensorFlow、Caffe、CNTK、MXNet、Torch 在三类流行深度神经网络上(3)

时间:2017-01-28 17:38来源:668论坛 作者:118开奖 点击:
为了加快深度神经网络的训练速度,有的使用CPU SSE技术和浮点SIMD模型来实现深度学习算法,相比浮点优化的版本能实现3倍加速。Andre Viebke等人利用多线程

  为了加快深度神经网络的训练速度,有的使用CPU SSE技术和浮点SIMD模型来实现深度学习算法,相比浮点优化的版本能实现3倍加速。Andre Viebke等人利用多线程及SIMD并行化在英特尔Xeon Phi处理器上加速CNN。针对多GPU卡的并行化,Jeffrey Dean等人提出了一种大规模分布式深度网络,开发了两种算法(Downpour SGD和Sandblaster L-BFGS),可以在混有GPU机器的集群上运行。

  加快训练方法的另一种方式是减少要学习的参数数量,Song Han等人使用修剪冗余连接的方法,在不失去网络表征能力下减少参数,这可以减少670万到6100万的AlexNet参数。Bahrampour等人也做了类似的性能评测工作,但他们仅用了一个GPU架构(NVIDIA Maxwell Titan X)和旧版的软件(cuDNN v2, v3)。

  本文作者早前工作也探讨了单个GPU上跑旧版软件的基准测试结果。此文针对三版主要的GPU架构和一些最新的网络(如:ResNet-50)和软件(如:cuDNN v5)进行基准评测,并深入到工具包代分析性能。此外,本文也比较了单台机器里多个GPU卡的性能。

  因为单个GPU卡内存相对较少,限制了神经网络规模,训练的可伸缩性对于深度学习框架至关重要。在如今的深度学习工具中,支持多GPU卡成为了一个标准功能。为了利用多个GPU卡,分布式同步随机梯度下降法(SDG)使用很广泛,实现了很好的扩展性能。

  在可扩展性方面,本文作者着重评估处理时间,以及数据同步方法的收敛速度。在数据并行模型里,针对N个worker,把有M个样本的一个mini-batch分成N份,每份M/N个样本,每个worker用相同的模型独立向前向后处理所分配的样本。当所有worker完成后,把梯度聚合,更新模型。

  实际上,不同工具实现同步SGD算法的方式各有不同。

Caffe:采用删减树策略减少GPU间的数据通信。例如,假设有4个标记为0,1,2,3的GPU。首先,GPU 0和GPU 1交换梯度,GPU 2和GPU 3交换梯度,然后GPU 0和GPU 2交换梯度。之后,GPU 0会计算更新的模型,再将更新的模型传输到GPU 2中;接着GPU 0把模型传输到GPU 1,同时GPU 2把模型传输到GPU 3。

CNTK:使用MPI作为GPU之间的数据通信方法。CNTK支持4种类型的并行SGD算法(即:DataParallelSGD,BlockMomentumSGD,ModelAveragingSGD,DataParallelASGD)。对于本文关心的 data parallel SGD,CNTK把每个minibatch分摊到N个worker上。每次mini-batch后将梯度进行交换和聚合。

MXNet:同样将mini-batch样本分配到所有GPU中,每个GPU向前后执行一批规模为M/N的任务,然后在更新模型之前,将梯度汇总。

TensorFlow:在每个GPU上放置一份复制模型。也将mini-batch分到所有GPU。

Torch:其数据并行机制类似于MXNet,把梯度聚合的操作放在GPU端,减少了PCI-e卡槽的数据传输。

  3. 评测方法

  处理时间(Processing time)及收敛速度(Convergence rate)是用户训练深度学习模型时最看重的两个因素。因此该实验主要通过测量这两个指标以评估这几种深度学习工具。

  一方面,评估处理时长有一种高效且主流的方法,就是测出对一个mini-batch所输入数据一次迭代的时长。在实际操作中,经历多轮迭代或收敛以后,深度学习的训练过程会终止。因此,对于每种神经网络,该实验使用不同大小的mini-batch来评测各个深度学习软件工具。作者针对每种大小的mini-batch都多次迭代,最后评估其平均运行速度。另一方面,由于数据并行化可能影响收敛速度,该评测还在多GPU卡的情况下比较了收敛速度。

  评测使用合成数据集和真实数据集。合成数据集主要用于评估运行时间,真实数据集用于测量收敛速度。每种工具的时间测量方法如下:

Caffe:使用“caffe train”命令训练所指定网络,随之计算两次连续迭代过程间的平均时间差。

CNTK:与Caffe类似,但排除包含磁盘I / O时间的首个epoch。

MXNet:使用内部定时功能,输出每个epoch和迭代的具体时间。

TensorFlow:在源脚本里使用计时功能,计算平均迭代时间。

Torch:和TensorFlow一样。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容