buxiangzhiren / DDCap

MIT License
84 stars 11 forks source link

batchsize问题 #7

Closed Leng-bingo closed 1 year ago

Leng-bingo commented 1 year ago

更换数据集后,当我bs为128时一个epoch后所有文字都是endoftext。bs为32时,极少数的为单词大部份还是endoftext,bs为1时看起来才想正确的样子。请问这是正常情况么

Leng-bingo commented 1 year ago

目前这数据集比较小3000张图片和每张五个描述

buxiangzhiren commented 1 year ago

可能是epoch太少了,你是只跑了一个epoch吗?然后你是说的bs是用的八张卡吗?

Leng-bingo commented 1 year ago

只跑了一个epoch,一张3090,在batchsize为128-32时,所有单词都是endoftext,batchsize为1时,评分大概在10左右。

buxiangzhiren commented 1 year ago

首先是epoch要跑久一点,因为第五个epoch才开始warm up,其次如果你使用我的learning rate的设置,bs应该是8 * 64 = 512. 如果之后还有全是end of text的情况,你再跟我说。如果一张卡放不下512的batch size,你可以同时把bs和learning rate砍半或者更小。保证它们的缩小比例是一样的就行

Leng-bingo commented 1 year ago

好的,我单卡在不改你之前的leanring rate时,最多128. 那按照你的说法,你原来的bs为8*64=512,默认值leanring rate为(2e-4),我一张卡128batch,leanring rate就应该是你的默认值(2e-4)/4。这样没错吧

buxiangzhiren commented 1 year ago

嗯,你可以先试一下,跑30个epoch的。虽然砍bs这样可能会掉一些点数,不过应该是能work的

Leng-bingo commented 1 year ago

好的好的,刚修改好和run通替换后的数据集的评价标准,现在整体跑起来试一试

Leng-bingo commented 1 year ago

感谢~

Leng-bingo commented 1 year ago

请问这两个参数是什么意思呢,fei chang gan xie

image
buxiangzhiren commented 1 year ago

这两个参数没有用到,不用管。

Leng-bingo commented 1 year ago

ok,收到,我现在一张卡batchsize 256,学习率1e-4,30轮结果cider分数40几,我是不是应该训练多一些再试试

Leng-bingo commented 1 year ago

内部代码细节还没有改,只是换了数据集,看到输出的json文件里还有很多结果有“.”这个符号在句子中间,加大epoch应该可以解决吧

buxiangzhiren commented 1 year ago

30 轮应该是够了,我建议还是从生成的caption的质量和validation loss来看看吧。你自己数据集的训练集句子平均长度是多少?

Leng-bingo commented 1 year ago

平均长度10-15左右,loss30轮的在2左右。

buxiangzhiren commented 1 year ago

那应该可能还是没拟合好的问题。你在训练的时候数据集长度是15000还是3000。如果是15000,epoch个数是够的。如果是3000,我建议你换成15000试试。然后可以自己调一下超参数啥的。

buxiangzhiren commented 1 year ago

或者你先用coco进行训练,再在你自己的数据集上fine tune。lr变成原来的0.1倍也行。

Leng-bingo commented 1 year ago

那应该可能还是没拟合好的问题。你在训练的时候数据集长度是15000还是3000。如果是15000,epoch个数是够的。如果是3000,我建议你换成15000试试。然后可以自己调一下超参数啥的。

这个训练集长度是什么意思,是我所有句子加起来的长度,还是说什么意思。我的数据集全算上一共2100张图片,每张图片5个描述,什么长度合适呢。

Leng-bingo commented 1 year ago

或者你先用coco进行训练,再在你自己的数据集上fine tune。lr变成原来的0.1倍也行。

好的,这是个方法,我训一遍coco。

buxiangzhiren commented 1 year ago

就是你的每张图片对应五个句子。然后你把这五个句子都append到你的dataset里面了。相当于你总共有2100*5个image-text pair。而不是选一个图片,从五个句子里面挑一个出来训练

Leng-bingo commented 1 year ago

好的,明白了,那我的这个长度跟你说的15000还有些差距,我先跑一遍coco的试一下