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

9008be48cb4ea63a571f01d14358fa37.jpeg

文 | 付瑶

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

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

4e71a6ccf78bc19861dd14a6a48e4e47.png

发帖人认为大家都进入一个误区。坚持选择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 作为参考点

cd01cc8c8a6df7279b4f12d3746fc455.png

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

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

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

3. 多卡训练场景

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

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

“都选7”派

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

“666”派

bcb9efe0dee860a1d28297b58c3bb104.png

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

fd2b62d4657b78516114c2dfd3cbf4b1.png

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

02186753a1c923dcf7244a271a4fbd41.png萌屋作者:付奶茶

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

作品推荐

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

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

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

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

16e4cd1d9b70a8d746329286390e24e4.jpeg后台回复关键词【入群

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

 91d521350f39901c859d9fa0c60578f4.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICDAR 2019论文:自然场景文字定位技术详解

自然场景文字定位是文字识别中非常重要的一部分。与通用的物体检测相比,文字定位更具挑战性,文字在长宽比、尺度和方向上有更大范围的变化。针对这些问题,本文介绍一种融合文字片段及金字塔网络的场景文字定位方法。该方法将特征金字塔机制应…

程序员面试金典 - 面试题 10.01. 合并排序的数组

1. 题目 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 示例: 输入: A [1,2,3,0,0,0], m 3 B [2,5,6], n 3输出: [1,2,2,3,5,6]来源&…

LeCun论文被指「洗稿」? LSTM之父发文怒怼:抄我的还标原创

编 | 好困 Joey David源 | 新智元LSTM之父、暴脾气大爷Jrgen Schmidhuber又开炮了?这回怼的是LeCun,说最近的新论文是炒了自己20多年前的冷饭,只不过换了种说法而已。图灵奖得主Yann Lecun,作为AI界的三巨头之一,他发表…

ESLint 在中大型团队的应用实践

引言 代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到,并或多或少会思考过这一问题。随着前端应用的大型化和复杂化,越来越多的前端工程师和团队开始重视 JavaScript 代码规范。得益于前端开源社区的繁盛&#xff…

程序员面试金典 - 面试题 02.05. 链表求和

1. 题目 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) (5 -> 9 ->…

互联网人到最后拼的是体力

文 | 卫夕源 | 卫夕指北互联网人到最后拼的是体力,这么说可能有点绝对。但如果我们将时间线拉长,体力代表的精力绝对是一个人能在互联网领域保持长期竞争力的最重要的因素。至少也是最重要的之一。1.很多互联网人退出了职场竞争,看起来是心力…

谷歌、斯坦福联合发文:我们为什么一定要用大模型?

文 | Harris语言模型已经深刻变革了自然语言处理领域的研究和实践。近年来,大模型在多个领域都取得了重要的突破。它们无需在下游任务上微调,通过合适的指令或者提示就可以取得优异的性能,甚至有时让人为之惊叹。例如,GPT-3 [1] 可…

程序员面试金典 - 面试题 02.04. 分割链表

1. 题目 编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。 示例: 输入…

深度学习在搜索业务中的探索与实践

本文根据美团高级技术专家翟艺涛在2018 QCon全球软件开发大会上的演讲内容整理而成,内容有修改。 引言 2018年12月31日,美团酒店单日入住间夜突破200万,再次创下行业的新纪录,而酒店搜索在其中起到了非常重要的作用。本文会首先介…

京东金融,你到底是坏,还是码农裁多了??

7.12更新:部分基金赎回的钱已经到账小金库了,今日从小金库提现时又提示银行卡已删除,不过这次可以点击重新绑定,重新绑定时会报错“绑定的卡与原卡一致”,流程没法走完。但这时候再退回去却发现“银行卡已删除”的提示没有了。于是…

程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

1. 题目 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]提示&#xff1a; 0 < len(arr) < 100000 0 < k < min(100000, len(arr))来…

LruCache在美团DSP系统中的应用演进

背景 DSP系统是互联网广告需求方平台&#xff0c;用于承接媒体流量&#xff0c;投放广告。业务特点是并发度高&#xff0c;平均响应低&#xff08;百毫秒&#xff09;。 为了能够有效提高DSP系统的性能&#xff0c;美团平台引入了一种带有清退机制的缓存结构LruCache(Least Rec…

程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)

1. 题目 一个有名的理发师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在每次预约服务之间要有休息时间&#xff0c;因此她不能接受相邻的预约。给定一个预约请求序列&#xff0c;替理发师找到最优的预约集合&#xff08;总预约时间最长&#xff09;&am…

关于NLP自监督学习,面试时被问崩溃了!

不要错过文末福利❤扫盲自监督无监督&#xff08;有不少同学还答不上来自监督和无监督真正的区别&#xff0c;我不是针对谁。&#xff09;无监督学习&#xff1a;无监督学习不依赖任何标签值&#xff0c;通过对数据内在特征的挖掘&#xff0c;找到样本间的关系&#xff0c;比如…

智能支付稳定性测试实战

本文根据美团高级测试开发工程师勋伟在美团第43期技术沙龙“美团金融千万级交易系统质量保障之路”的演讲整理而成。主要介绍了美团智能支付业务在稳定性方向遇到的挑战&#xff0c;并重点介绍QA在稳定性测试中的一些方法与实践。 背景 美团支付承载了美团全部的交易流量&#…

程序员面试金典 - 面试题 16.01. 交换数字(位运算swap)

1. 题目 编写一个函数&#xff0c;不用临时变量&#xff0c;直接交换numbers [a, b]中a与b的值。 示例&#xff1a; 输入: numbers [1,2] 输出: [2,1]提示&#xff1a; numbers.length 2来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://le…

阿里巴巴达摩院对话团队招聘研究实习生!

招聘贴投放请联系微信xixiaoyao-1阿里巴巴-达摩院-对话智能团队正在招募研究实习生&#xff01;团队介绍达摩院对话智能&#xff08;Conversational AI&#xff09;团队成立于2014年&#xff0c;专注于人机对话前沿研究和大规模应用&#xff0c;打造了任务型对话开发平台 Dialo…

人物志 | 技术十年:美团第一位前端工程师潘魏增

导读 潘魏增&#xff0c;2006年毕业于南开大学电子系&#xff0c;2008年加入早期饭否团队。美团第一位前端工程师&#xff0c;现在是X项目组终端研发部的负责人。处女座&#xff0c;INTJ&#xff0c;喜欢Linux和Vim&#xff0c;崇尚开源&#xff0c;相信开源可以让世界变得更美…

程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)

1. 题目 给定一个有序整数数组&#xff0c;元素各不相同且按升序排列&#xff0c;编写一个算法&#xff0c;创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是&#xff1a;[0,-3,9,-10,null,5]&#xff0c;它可以表示下面这个高度平衡二…

算法岗校招已成“人间地狱”,还有办法上岸吗

由于一系列众所周知的原因&#xff0c;算法岗的竞争越来越激烈&#xff0c;知乎上有个问题&#xff0c;形象的将算法岗的秋招形势比喻成了“人间地狱”。虽然有夸张的成分&#xff0c;但也一定程度上反映了如今算法岗“僧多粥少”的现状。内卷焦虑、网络偏差影响下&#xff0c;…