当前位置:网站首页>深度学习多机多卡batchsize和学习率的关系
深度学习多机多卡batchsize和学习率的关系
2022-04-21 18:55:00 【只会git clone的程序员】
前言
最近的一些实验感觉碰到一些玄学的问题。
总结一下:
- 纯FC的网络,学习率对训练结果的影响很大。实验现象是这样的,把resnet50的backbone给冻结了之后,只训练后面的head部分(不是简单的几层FC,还是比较复杂的结构拼了些transformer的block还有很重的MLP),发现不同的学习率会有两个点多的浮动。
- 单机多卡和多机多卡即使全局batchsize对齐训练结果仍有较大的diff,实验结果是差了2个多点。
玄学一
在没冻结backbone之前没有这样的情况出现。有点怀疑的地方是因为把backbone冻结后网络没有BN层参与训练了,是不是因为缺少BN层所以模型的更新受到了学习率较大的影响呢?因为没有BN层将数据归一化,梯度变化较大,学习率如果过大的话容易跳来跳去。是不是可以加warmup来解决这个问题呢?有空实验看看。
玄学二
文末介绍下DP和DDP两种的梯度传输。
以前总是听到学习率和batchsize成正比例变化这样的说法,之前做reid实验的时候确实是这么回事:
记得当时作者的模型是四卡DP模式训练的全局batchsize是256,相当于每张卡上的batchsize是64.作者的学习率是0.00375我复现的实验因为实验室没有卡只能用两卡实验,修改全局batchsize为128,学习率0.001875,然后还有个重要的参数,就是每个epoch遍历的iter数,因为作者的dataloader是iterloader,就是说一个epoch不是见过了所有的数据就结束,而是达到我制定的iter数目才结束,所以一个epoch可能会见到一两遍全部的数据。然后作者的iter数目设置的是400,我因为一个iter的bs只有128了,所以iter的数目设置了他的两倍就是800.修改上述三个参数实验结果和作者对齐了。reid这种任务因为要充分挖掘一个batch里面正负样本的信息,所以受到batchsize很大的影响,上述三个参数不管哪个不对都会很大的影响最后的结果。
这次的玄学出现在DDP的模式下,举个例子,单机8卡,单卡的bs如果是512的话,全局的batchsize就是4096=8 * 512,对应的四台机器每台机器8卡,全局的卡数是32,单卡的batchsize是128的话,全局batchsize也是4096=128 * 8 * 4了。这个时候我以为学习率一致就好了,因为全局的batchsize是一样的。但是…实验结果差了很多,也就是因为玄学一,我这个全FC的网络受学习率的影响有很大,所以看了下DDP的梯度回传原理,好像明白了什么…
DDP
单机多卡数据并行-DataParallel(DP)
多机多卡数据并行-DistributedDataParallel(DDP)
这个博客写的真的很简洁明了,就不重述了,主要是圈起来这句话:

突然有了灵感,单机八卡如果全局batchsize是4096,但是GPU的节点数是8,所以4096的batchsize的梯度是按8份平均的。而四台机器32卡,如果全局batchsize是4096,但是GPU节点数是32,所以4096的batchsize的梯度是按32份平均的,相当于后者的梯度是前者的1/4了。所以是不是应该后者的学习率翻4倍或者前者的学习率缩小到1/4呢?
正在实验中。。。复现了效果会贴上来。
版权声明
本文为[只会git clone的程序员]所创,转载请带上原文链接,感谢
https://xmy0916.blog.csdn.net/article/details/124293378
边栏推荐
- 【无标题】
- 序列化对象+Properties+IO框架
- Tiandan released the cloud native intelligent operation and maintenance product line and launched the world's first full stack observability technical standard
- JVM 类加载机制
- Serialized object + properties + IO framework
- Crystal Chem小鼠葡萄糖检测试剂盒说明书
- ClickHouse安装配置
- Tencent cloud database tdsql -- blog database migration practice
- 无线蓝牙耳机哪个品牌好?无线蓝牙耳机推荐
- C#多线去对数据库进行添加操作,ManualResetEvent报The number of WaitHandles must be less than or
猜你喜欢

JVM 类加载机制

Ubuntu install go

TypeScript快速上手,class,public,private,extends

Potential value of zero knowledge proof

数据库进阶学习:索引分类和创建语法

医疗机器人在AI领域的广泛应用

Exness: Netflix reported the loss of users for the first time in a decade, and its share price plunged 25%

Niu Ke - alternative addition

CVPR 2022 | a new face attribute editing framework based on transformer

JVM class loading mechanism
随机推荐
108. 将有序数组转换为二叉搜索树(图文并解)
CheKine 系列高密度脂蛋白(HDL-C)含量检测方案
Potential value of zero knowledge proof
重温 JS栈和堆
The central bank defines the key points of payment supervision in 2022, and all platform enterprises should pay attention to clearing risks
央行明确2022年支付监管工作重点,各平台企业要注意二清风险
有什么蓝牙耳机不贵又实用?适合学生党的无线蓝牙耳机
LeetCode1765. Highest point in the map (BFS)
《Vite学习指南---基于腾讯云Webify部署项目》视频课程上线“云+社区”
SVG系列——1,入门级操作
URL transcoding problem: urlcoder Decode (STR) is obsolete. Solution: decode (string s, string ENC) throws unsupportedencodingexceptio
Cvpr2022 unified upgrade of oral | cosface and arcface, and adaface solves face recognition of low-quality images
leetcode:423. 从英文中重建数字
SPFA determines whether there is a negative ring
Null和Undefined的区别
ubutnu安装go
【GAMES101】作业5 简单光线追踪与框架理解
Read the meaning of seek tiger's launch of Genesis node
解析创客教育的实践进程
Is it useful for newly graduated college students to take the PMP test?