读论文笔记1

Bridging the Semantic Gaps of GPU Acceleration for Scaleout CNN-based Big Data Processing: Think Big, See Small

1 内容简介

在这篇论文中,作者分析了CNN运行在GPU上时的性能瓶颈,并为CNN建立了性能模型以及解决性能瓶颈的方法。作者提出了D3NN, a Distributed, Decoupled, and Dynamically tuned GPU acceleration framework.

2 实验设置

CNN: AlexNet GoogLeNet VGGNet, 使用Caffe训练
GPU: Tesla k20c
CPU: Intel Xeon E5530
集群: 一个master节点,8个slave节点
信息收集工具: Nvidia Visual Profiler
数据集:ILSVRC2012 (157.3GB)

3 瓶颈分析

3.1 由分布式框架带来的性能瓶颈(对于一个不使用Hadoop 的集群来说,这几个瓶颈还需要重新考虑)

  1. 重复的网络初始化过程。hadoop中每个map任务都会初始化神经网络,由于神经网络的初始化过程非常消耗时间和资源。因此初始化过程带来了巨大的资源浪费。
  2. 在hadoop中调用GPU也会带来overhead。调用过程为task-tracker通过heart-beat向jobtracker发送请求。jobtracker根据心跳信息给task-tracker分配任务。task-tracker生成一个子JVM运行map任务。最后map任务通过JNI调用cuda程序。
  3. hadoop负载均衡。当运行多媒体任务时,节点间的差异性使得集群的性能降低。主要是因为hadoop会将数据从低性能的节点转移到高性能的节点,在转移的过程中,用到该数据的任务会处于阻塞状态,直到数据准备好之后才开始执行。

3.2 单个节点中的性能瓶颈

  1. GPU时间低效性。通过实验发现,GPU计算时间占了整个任务执行时间的20%不到。大部分时间都消耗在了网络初始化(从内存中载入参数)和CPU计算(图片预处理)。因此在单个节点上CNN程序的执行时间可以表示为 (Eq3) T s t a n d a l o n e = T c p u + T m e m c p y + T g p u T_{standalone}=T_{cpu}+T_{memcpy}+T_{gpu} \tag{Eq3} Tstandalone=Tcpu+Tmemcpy+Tgpu(Eq3)在公式 E q 3 Eq3 Eq3中,非GPU相关的时间占了多数,因此有很大一部分时间GPU处于空闲状态。
  2. 多进程资源竞争。Nvidia提供了Multi-Process Service,该功能允许多个kernel并行执行。然而通过实验发现该功能对于CNN程序来说并不是最好的选择。首先,CNN程序是访存密集型的,多个kernel同时运行会造成内存资源竞争(这个不一定,要看实验结果,大多数情况都是这样)。
  3. GPU函数库低效性。首先量化卷积层的性能,定义吞吐率效率 t p E tpE tpE t p E = T h r o u g h p u t G P U   P e a k   T h r o u g h p u t tpE=\frac{Throughput}{GPU\ Peak\ Throughput} tpE=GPU Peak ThroughputThroughput进一步转化成 t p E = C o n v f l o p s G P U   t i m e × G P U   P e a k   T h r o u g h p u t tpE=\frac{Conv_{flops}}{GPU\ time\times GPU\ Peak\ Throughput} tpE=GPU time×GPU Peak ThroughputConvflops下图展示了3个神经网络的 t p E tpE tpE在这里插入图片描述
    上图表明了现有的GPU计算操作对CNN是比较低效的。同时论文中指出,对每一层使用相同的batch size不能达到一个良好的效果。

4 D3NN介绍

D3NN包含四个特性,根绝CNN每层输入数据的大小动态选择最优batch size,针对单节点的CNN性能分析模型,分布式的数据处理框架,减少资源竞争的方案。

4.1 Batch size 动态调节方案

该方案主要是用来回答两个问题,1. 什么时候需要应该batch调节方法;2. 如何选择最优的batch size。作者用 c p R a t i o cpRatio cpRatio表示每层网路需要的资源与可用的资源的比值(详细解释见作者论文)。 c p R a t i o = G r i d S i z e m a x B l o c k s cpRatio=\frac{GridSize}{maxBlocks} cpRatio=maxBlocksGridSize如果 c p R a t i o > 1 cpRatio>1 cpRatio>1表示GPU可用的资源都能被CNN消耗,因此不需要调用调节方法。根据实验观察到当 G r i d S z i e GridSzie GridSzie m a x B l o c k s maxBlocks maxBlocks的整数倍时,CNN的性能最好。

4.2 分布式和分解框架

作者采用了三种方案进行数据处理,1. Producer-Consumer:在每个slave node将数据预处理和数据处理分开;2. Semaphore-based数据同步方案保证最大的单节点吞吐率;3. Analytical-based 性能模型提高资源利用率。

4.3 多进程竞争缓解方案

作者通过实验发现,在CNN计算的过程中,在某个阶段会出现所有的进程竞争同一资源,这个阶段之后又变成了所有进程都不再竞争资源。这就造成了,资源利用的不平衡。作者采用了流水线的方式解决这一问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值