Batch size 没必要设为2的次方!?

2022 年 7 月 11 日 夕小瑶的卖萌屋

文 | 付瑶

最近刷到一个话题很有趣,搬来和大家一起讨论下:

“batch-size 一定要大小为2的幂吗?不这样设置会有啥差别吗?”

发帖人认为大家都进入一个误区。坚持选择batch-size的大小为2的幂次数是因为曾经被告知从计算的角度是对训练效率有益的。但是这个“有益”是真实存在的吗?

为了求证这个问题,发帖人首先试图从内存对齐和精度训练的效率两个角度找寻答案。

首先关于memory alignment的主要是猜测受内存页大小的影响,内存页经查看确实是一个2的幂次方的数字,但是作者认为这个理念是一个或者多个batches放在同一个内存页上,以帮助gpu的内存对齐,有些类似于在游戏开发和图像设计中使用的OpenGL和DirectX选择两种纹理。而关于浮点数的计算效率,他在Nvidia的《Matrix Multplication Background User‘s Guide 》中找解释,其中结束了矩阵尺寸和GPU计算效率之间的关系,矩阵维度不应该选择2的幂次的数字而且8的倍数,以便在具有TensorCores的GPU上进行训练(2的幂次数和8的倍数之间存在重叠)。因此,发帖人batch size大小为8的倍数对于FP16混合精度训练的gpu来说,理论上是最有效的。

然后他进行一系列实验,研究在实际训练中“有效性”是否可以被注意到。这次实验在CIFAR-10进行了10个epoch的实验,图像大小标准倍调整为224*224,用16bit混合精度来训练。

1. 以 Batch Size = 128 作为参考点

似乎将批大小减少1(127)或将批大小增加1(129)确实会导致训练性能略慢。但是差异十分微小,作者认为可以忽略不计。

2. 以 Batch Size = 256 作为参考点

同样只有微小但几乎不可察觉的差异

3. 多卡训练场景

在多卡训练场景下,2的幂和8的倍数批量大小(256)并不比257快。作者补充谈到每一次实验设置都只运行一次并且按照顺序运行的,即使运行的时间没有很久,但是也意味着运行之间的基本GPU温度可能是不同的,或许对计时有微弱的影响。

在帖子下面的网友讨论也是各显神通。有一些调侃的回复,同样也有一些不同角度的解答。

“都选7”派

“我有时候会设成 7 的倍数去训练,然后去教堂洗刷我的罪孽。”(似乎是暗指天主教宗的七宗罪)

“666”派

下面也有人提出在“nvidia的完整手册”描述了为什么层尺寸和批量大小的 2 次方对于cuda级别的最大性能是必须的。作者的监控和测试并不具代表性,然而作者列出的反例也有道理:

总结下大家的发言:存在一部分人认为发帖人的实验不具说服力和意义,例如在超小型网络上使用了超小型数据集、未使用TPU、任务过于单一等。与此同时也有人提出考虑TPU/XLA填充数据、以及深度学习编译器的8的倍数准则等,batch size的大小将至关重要。可以说是各持一词非常热闹,但是究竟这个问题是否真的有解?欢迎大家一起讨论~

萌屋作者:付奶茶

新媒体交叉学科在读Phd,卖萌屋十级粉丝修炼上任小编,目前深耕多模态,希望可以和大家一起认真科研,快乐生活!

作品推荐

1.在斯坦福,做 Manning 的 phd 要有多强?

2.史上最大多模态图文数据集发布!

3.MSRA-万字综述 直击多模态文档理解

4.大模型时代,我们真的不再需要分词了吗?

后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

 

[1]https://www.reddit.com/r/MachineLearning/comments/vs1wox/p_no_we_dont_have_to_choose_batch_sizes_as_powers/

登录查看更多
0

相关内容

【CVPR2022】 Dropout在图像超分任务中的重煥新生
专知会员服务
18+阅读 · 2022年3月5日
专知会员服务
27+阅读 · 2021年8月2日
【伯克利】再思考 Transformer中的Batch Normalization
专知会员服务
40+阅读 · 2020年3月21日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
一番实验后,有关Batch Size的玄学被打破了
机器之心
0+阅读 · 2022年7月10日
为什么Pre Norm的效果不如Post Norm?
PaperWeekly
0+阅读 · 2022年5月1日
PyTorch 51.BatchNorm和Dropout层的不协调现象
极市平台
0+阅读 · 2022年2月19日
恕我直言,你的实验结论可能严重依赖随机数种子!
夕小瑶的卖萌屋
0+阅读 · 2021年8月19日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Neural Architecture Search without Training
Arxiv
10+阅读 · 2021年6月11日
Arxiv
27+阅读 · 2017年12月6日
VIP会员
相关资讯
一番实验后,有关Batch Size的玄学被打破了
机器之心
0+阅读 · 2022年7月10日
为什么Pre Norm的效果不如Post Norm?
PaperWeekly
0+阅读 · 2022年5月1日
PyTorch 51.BatchNorm和Dropout层的不协调现象
极市平台
0+阅读 · 2022年2月19日
恕我直言,你的实验结论可能严重依赖随机数种子!
夕小瑶的卖萌屋
0+阅读 · 2021年8月19日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
相关基金
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员