Closed zhyj3038 closed 2 months ago
125M资源消耗低呀
是这样的,我使用少量数据(10+张图片)训练vary-tiny,期望过拟合。 sam权重使用meta放出的, qwen1.8权重使用阿里的来进行初始化(略微改动代码使得模型不报错), 但是推理结果很奇怪。 无论输入图片训练数据的哪一张图片,推理结果始终是其中一张图片的文本。 不知道您是否遇到过这种现象?
该bug源于huggingface transformers库的traniner在多个ep下loss不下降,所以基本无法过拟合,我们不是用这个trainer训的sam,另外和sam初始化无关,resnet-50也能work
那请问这个trainer是什么bug? 因为我们之前做了很多多模态方面的工作,都用的官方的trainer,没发现什么问题啊。
你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的
之前minigpt4或者llava, 训练过多个epoch, 指标相对单个epoch会有一定提升。 但由于当时的任务都不像ocr任务一样,有明确的正确或者错误输出,所以没发现trainer是否有问题。
你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的
@zhyj3038 不知道什么原因,但是作者说的是真的。用 10 万数据,训练 6 轮,loss 一直在 2.7 不降。但是换个思路,把加载的数据数组 * 10,然后训练 1 轮,loss 可以降到 0.1x 。和你一样,一直怀疑是权重初始化问题。另外感谢你,我知道可以用 Qwen 1.8B 代替 opt125m,对作者使用两个模型有疑惑,但一直没有问这个问题,你帮忙问了。
你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的
@zhyj3038 不知道什么原因,但是作者说的是真的。用 10 万数据,训练 6 轮,loss 一直在 2.7 不降。但是换个思路,把加载的数据数组 * 10,然后训练 1 轮,loss 可以降到 0.1x 。和你一样,一直怀疑是权重初始化问题。另外感谢你,我知道可以用 Qwen 1.8B 代替 opt125m,对作者使用两个模型有疑惑,但一直没有问这个问题,你帮忙问了。
感谢反馈,非常有帮助~
@41passerby 和您确认几个问题(1)您进行的是 From Scratch 训练的吗? 没有加载作者的权重,而是加载visual encoder 以及llm的官方权重对吗? (2)按您的方式训练以后,loss是降低了,但是推理结果验证了吗?
@41passerby 和您确认几个问题(1)您进行的是 From Scratch 训练的吗? 没有加载作者的权重,而是加载visual encoder 以及llm的官方权重对吗? (2)按您的方式训练以后,推理结果验证了吗?
第2点可以看下面数据,仅 13 万数据,loss 能降到 0.6292
root:134172 conversations in total.
....
{'loss': 0.6794, 'grad_norm': 3.7861905097961426, 'learning_rate': 2.984935249805698e-11, 'epoch': 1.0}
100%|█████████▉| 2095/2096 [1:44:22<00:03, 3.00s/it] 100%|██████████| 2096/2096 [1:44:26<00:00, 3.06s/it]
{'loss': 0.6292, 'grad_norm': 7.16817045211792, 'learning_rate': 0.0, 'epoch': 1.0}
100%|██████████| 2096/2096 [1:44:26<00:00, 3.06s/it]
那我感觉多ep不行,应该是学习率的问题, 感谢分享,至少证明开源的这套codebase没有明显的bug
那我感觉多ep不行,应该是学习率的问题, 感谢分享,至少证明开源的这套codebase没有明显的bug
感谢作者分享这套方案,小问题不用在意,能跑就行。
@41passerby 您好 我的意思是,您这边二阶段推理做OCR出来的文本正确吗?
@41passerby 您好 我的意思是,您这边二阶段推理做OCR出来的文本正确吗? 劳烦您加一下我的微信吧 18510754180 请教一下细节, 谢谢
@zhyj3038 我理解你担心模型到底有没有学到 OCR ,即泛化能力。但实践证明,是能学到的,第二阶段推理是正确的文本,但不保证 OCR 全对,会有一些错别字,不多。工作关系,不好加微信,抱歉哈。
@41passerby 好的 我我这边做几个实验验证一下,非常感谢
@41passerby 好的 我我这边做几个实验验证一下,非常感谢
@zhyj3038 请教下你们怎么生产数据,有没有开源中英文文档数据集可以推荐一下。现在数据集成了非常头大的问题。
@41passerby 没有开源的,都是我自己制作的。 主要来源是arxive、中英文文献、百度文库这些。
确认,可以复现ocr效果。谢谢两位~ @Ucas-HaoranWei @41passerby
@zhyj3038 @41passerby 我这边复现了loss 收敛到0.5,在复现交流群里,有人用一个短文本的训练可以收敛,这个loss很低好像只是因为文本短,实际训练出得模型并不能推理。模型根本没法推理出正常结果, @41passerby 方便的话可以提供一下你的权重吗?
你loss 0.5能推理吗?
您好,我看您第一阶段使用opt125M 第二阶段使用qwen1.8B。 那么为什么不第一阶段直接使用qwen1.8B呢?