总结:One weird trick for parallelizing convolutional neural networks


以下是本人对这篇paper的一个理解,但感觉有些地方似乎有所缺漏,望有所感悟的朋友可以加以指点。谢谢

 

该文中,作者提出了两种并行方法,data parallelismmodel parallelism.

data parallelism:不同的worker跑不同的数据样例。

model parallelism:不同的worker跑同一个model中的不同部分(如神经元)——主要解决单个woker内存不足以存放全连接层的所有参数问题,通过将参数分放到不同work,并将其输入 copy到这些worker来实现整个全连接层的计算。

 

而为了更大程度的进行并行化,针对卷积层和全连接层的不同性质,采用不同的并行方法。即在训练cnn模型的过程中,结合了两种并行方法。

下面是关于卷积层和全连接层的性质:

卷积层:包含90%~95%的计算,却只有大约5%的参数

全连接层:包含5-10%的计算,却有着95%的参数,

如图:

 

下面的作者的并行方案:

forward pass

1.给不同的worker输入不同的数据样例,以batch为单位。

2.每个work各自计算卷积层。

3.对于全连接层的构建,作者给出了3中方案。

1Kworker,每个worker将其最后一层卷积层的activities发送给其他worker,那么每个worker将有K*batch sizeexamples,然后计算这些examples的全脸阶层。

2)一个worker先将其最后一层卷积层的activites发送给其他所有的worker,然后所有的worker同时计算这个worker发送的数据的全连接层。在计算的同时另一个worke对其最后一层卷积层的activites进行广播。其它层同理。由此实现了计算和通信的重叠。

3)所有的worker先发送1/Kexamples给所有其他的workers,然后在像(2)一样处理数据。(这个我还不是很理解其中的优化原理)

 

backward pass

1.每个worker计算其全连接层的gradients

2.针对forward3中不同方案,有3中不同的backward方案:

1)对于方案(1),每个worker要将其计算的每个example的梯度发送回这个example进行forward passworker

2)对于方案(2),梯度的发送也如forward pass类似,实现通信和计算的重叠。

3)类似于方案(2)。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值