现有框架BatchNorm的实现(DP,DDP)都是只考虑了single gpu。也就是说BN使用的均值和标准差是单个gpu算的,相当于缩小了batchsize。

对于比较消耗显存的训练任务时,往往单卡上的相对批量过小,影响模型的收敛效果。 之前在在图像语义分割的实验中,就发现使用大模型的效果反而变差,实际上就是BN在作怪。 跨卡同步 Batch Normalization 可以使用全局的样本进行归一化,这样相当于‘增大‘了批量大小,这样训练效果不再受到使用 GPU 数量的影响。 最近在图像分割、物体检测的论文中,使用跨卡BN也会显著地提高实验效果,所以跨卡 BN 已然成为竞赛刷分、发论文的必备神器。

但是为什么跨卡同步BN没有成为主流?

1)因为没有sync的需求,因为对于大多数vision问题,单gpu上的mini-batch已经够大了,完全不会影响结果。

2)影响训练速度,BN layer通常是在网络结构里面广泛使用的,这样每次都同步一下GPUs,十分影响训练速度。

从使用的经验来看,如果多卡训练没开BN同步,那么所得的结果和使用单GPU训练得到的结果基本一致,但是训练速度会得到提升。

而如果开了BN同步,训练结果会有将近一个点的提升

当然如果多卡训,但是单张卡上的batchsize就很大了,这样是开BN同步就没有太大作用

开了BN之后会让训练速度变慢,大概是不开5秒,开了8秒的样子

多卡训练中的BN(BatchNorm)相关推荐

  1. PyTorch 多机多卡训练:DDP 实战与技巧

    作者丨996黄金一代@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/250471767 编辑丨极市平台 零. 概览 想要让你的PyTorch神经网络在多卡环境上跑得又 ...

  2. PyTorch 多机多卡训练:分布式实战与技巧

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx DistributedDataParallel(DDP)是一个支持多机多卡.分布式训练的深度学 ...

  3. caffe中的batchNorm层(caffe 中为什么bn层要和scale层一起使用)

    caffe中的batchNorm层 链接: http://blog.csdn.net/wfei101/article/details/78449680 caffe 中为什么bn层要和scale层一起使 ...

  4. Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference随机种子seed)

    DDP的使用非常简单,因为它不需要修改你网络的配置.其精髓只有一句话 model = DistributedDataPrallel(model, device_ids=[local_rank], ou ...

  5. Tensorflow训练和预测中的BN层的坑(转载)

    以前使用Caffe的时候没注意这个,现在使用预训练模型来动手做时遇到了.在slim中的自带模型中inception, resnet, mobilenet等都自带BN层,这个坑在<实战Google ...

  6. Tensorflow训练和预测中的BN层的坑(转)-训练和测试差异性巨大

    以前使用Caffe的时候没注意这个,现在使用预训练模型来动手做时遇到了.在slim中的自带模型中inception, resnet, mobilenet等都自带BN层,这个坑在<实战Google ...

  7. 2 分 31 秒,腾讯云创造 128 卡训练 ImageNet 新记录

    来源 | 腾讯云 编辑 | 白峰 转自 | 新智元 8月21日,腾讯云正式对外宣布成功创造了128卡训练ImageNet业界新记录,以2分31秒的成绩一举刷新了这个领域的世界记录. 刷新世界纪录:2分 ...

  8. CNN和RNN中如何引入BatchNorm

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 Batch Normalization的基本思路和价值在之前一篇文章"Batch Norma ...

  9. Pytorch 单机多卡训练DDP

    多卡训练方式 1.DP--torch.nn.DataParallel 2.DDP--torch.nn.parallel.DistributedDataParallel 通俗一点讲就是用了4张卡训练,就 ...

最新文章

  1. 发送图片微博_微博引流之(实时号养成内幕解析)!
  2. 【转载】C# ??(问问,问号问号)运算符,可空值(申明加?(问号))的克星
  3. 对clear float 的理解
  4. dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf
  5. Vue3 --- vue-router4 编程导航
  6. 安装linux系统过程中值得记录的内容
  7. Python 分析国庆热门旅游景点,告诉你哪些地方好玩、便宜、人又少!
  8. C# 使用 Topshelf 创建Windows服务
  9. LSTM 文本分类模型的实现
  10. FIT2CLOUD飞致云面试总结
  11. Python学习_053.双分支选择结构_三元运算符的使用详解
  12. mysql空洞,mysql crud造成数据空洞的原因
  13. 题目:在C语言中,表达式23|2^5的值是()
  14. 两群羊和一只狼,两只狮子
  15. 最简单的springboot整合websocket方式
  16. st_contains
  17. Botan的部分翻译
  18. matlab飞机飞行
  19. openlayers6 踩坑系列(三)绘制和编辑(矩形,圆,多边形,点,线)
  20. 三大受欢迎的免费开源CMS建站系统

热门文章

  1. Linux C中unsigned long与指针的关系
  2. KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机
  3. 阿里云物联网平台体验(树莓派+Python篇) 1
  4. 花了一些力气研究aircv,搞一个后台找图识图的DEMO
  5. Ubuntu 20.04 + ROS Noetic + OpenCV 4.10编译kalibr相机标定功能包
  6. 微信小程序实现登录获取头像昵称
  7. JavaScript - H5 网页拨打电话功能、发送短信、发送邮件(支持 HTML 与 JS 形式)点击自动调起手机拨打并填充手机号
  8. python京东抢购手机攻略_Python实现自动上京东抢手机
  9. Windows下ORACLE 10g安装与操作图解
  10. springboot 单点登录