zoukankan      html  css  js  c++  java
  • BN多卡同步进行

    为什么不进行多卡同步?

    BatchNorm的实现都是只考虑了single gpu。也就是说BN使用的均值和标准差是单个gpu算的,相当于缩小了mini-batch size。至于为什么这样实现,1)因为没有sync的需求,因为对于大多数vision问题,单gpu上的mini-batch已经够大了,完全不会影响结果。2)影响训练速度,BN layer通常是在网络结构里面广泛使用的,这样每次都同步一下GPUs,十分影响训练速度。2

    但是为了达到更好的效果, 实现Sync-BN也是很有意义的.

    在深度学习平台框架中多数是采用数据并行的方式, 每个GPU卡上的中间数据没有关联.
    为了实现跨卡同步BN, 在前向运算的时候需要计算全局的均值和方差,在后向运算时候计算全局梯度。 最简单的实现方法是先同步求均值,再发回各卡然后同步求方差,但是这样就同步了两次。实际上均值和方差可以放到一起求解, 只需要同步一次就可以. 数据并行的方式改为下图所示:

    因此总体batch_size对应的均值和方差可以通过每张GPU中计算得到的 xi∑xi 和 x2i∑xi2 reduce相加得到. 在反向传播时也一样需要同步一次梯度信息.

    原文: https://www.cnblogs.com/makefile/p/batch-norm.html?utm_source=debugrun&utm_medium=referral © 康行天下

  • 相关阅读:
    jquery新知识
    jquery回顾
    Filter和Listener
    jsp,jstl,el
    cookie和session
    servlet和HTTP原理
    xml基本知识
    linux 相关操作
    linux mysql 相关操作、问题
    linux 文件结构
  • 原文地址:https://www.cnblogs.com/ywheunji/p/10570432.html
Copyright © 2011-2022 走看看