Ucas-HaoranWei / Vary-toy

Official code implementation of Vary-toy (Small Language Model Meets with Reinforced Vision Vocabulary)
565 stars 41 forks source link

咨询训练SAM #30

Closed zhyj3038 closed 2 months ago

zhyj3038 commented 2 months ago

您好,我看您第一阶段使用opt125M 第二阶段使用qwen1.8B。 那么为什么不第一阶段直接使用qwen1.8B呢?

Ucas-HaoranWei commented 2 months ago

125M资源消耗低呀

zhyj3038 commented 2 months ago

是这样的,我使用少量数据(10+张图片)训练vary-tiny,期望过拟合。 sam权重使用meta放出的, qwen1.8权重使用阿里的来进行初始化(略微改动代码使得模型不报错), 但是推理结果很奇怪。 无论输入图片训练数据的哪一张图片,推理结果始终是其中一张图片的文本。 不知道您是否遇到过这种现象?

Ucas-HaoranWei commented 2 months ago

该bug源于huggingface transformers库的traniner在多个ep下loss不下降,所以基本无法过拟合,我们不是用这个trainer训的sam,另外和sam初始化无关,resnet-50也能work

zhyj3038 commented 2 months ago

那请问这个trainer是什么bug? 因为我们之前做了很多多模态方面的工作,都用的官方的trainer,没发现什么问题啊。

Ucas-HaoranWei commented 2 months ago

你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的

zhyj3038 commented 2 months ago

之前minigpt4或者llava, 训练过多个epoch, 指标相对单个epoch会有一定提升。 但由于当时的任务都不像ocr任务一样,有明确的正确或者错误输出,所以没发现trainer是否有问题。

41passerby commented 2 months ago

你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的

@zhyj3038 不知道什么原因,但是作者说的是真的。用 10 万数据,训练 6 轮,loss 一直在 2.7 不降。但是换个思路,把加载的数据数组 * 10,然后训练 1 轮,loss 可以降到 0.1x 。和你一样,一直怀疑是权重初始化问题。另外感谢你,我知道可以用 Qwen 1.8B 代替 opt125m,对作者使用两个模型有疑惑,但一直没有问这个问题,你帮忙问了。

Ucas-HaoranWei commented 2 months ago

你们之前的工作应该训练一个ep吧?该bug我感觉是多ep下loss不能加速收敛,而其它codebase的trainer多ep下loss可以骤降,这个我还在看是什么引起的

@zhyj3038 不知道什么原因,但是作者说的是真的。用 10 万数据,训练 6 轮,loss 一直在 2.7 不降。但是换个思路,把加载的数据数组 * 10,然后训练 1 轮,loss 可以降到 0.1x 。和你一样,一直怀疑是权重初始化问题。另外感谢你,我知道可以用 Qwen 1.8B 代替 opt125m,对作者使用两个模型有疑惑,但一直没有问这个问题,你帮忙问了。

感谢反馈,非常有帮助~

zhyj3038 commented 2 months ago

@41passerby 和您确认几个问题(1)您进行的是 From Scratch 训练的吗? 没有加载作者的权重,而是加载visual encoder 以及llm的官方权重对吗? (2)按您的方式训练以后,loss是降低了,但是推理结果验证了吗?

41passerby commented 2 months ago

@41passerby 和您确认几个问题(1)您进行的是 From Scratch 训练的吗? 没有加载作者的权重,而是加载visual encoder 以及llm的官方权重对吗? (2)按您的方式训练以后,推理结果验证了吗?

  1. 没有加载作者的 vit + llm 权重,加载的是 facebook/sam-vit-base + facebook/opt-125m
  2. 时间问题,没有验证推理结果,但有验证第一阶段训出 vit 权重后,第二阶段能加速收敛。之前做了很多次实验,第二阶段能加速收敛,效果就是好的。

第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]

Ucas-HaoranWei commented 2 months ago

那我感觉多ep不行,应该是学习率的问题, 感谢分享,至少证明开源的这套codebase没有明显的bug

41passerby commented 2 months ago

那我感觉多ep不行,应该是学习率的问题, 感谢分享,至少证明开源的这套codebase没有明显的bug

感谢作者分享这套方案,小问题不用在意,能跑就行。

zhyj3038 commented 2 months ago

@41passerby 您好 我的意思是,您这边二阶段推理做OCR出来的文本正确吗?

41passerby commented 2 months ago

@41passerby 您好 我的意思是,您这边二阶段推理做OCR出来的文本正确吗? 劳烦您加一下我的微信吧 18510754180 请教一下细节, 谢谢

@zhyj3038 我理解你担心模型到底有没有学到 OCR ,即泛化能力。但实践证明,是能学到的,第二阶段推理是正确的文本,但不保证 OCR 全对,会有一些错别字,不多。工作关系,不好加微信,抱歉哈。

zhyj3038 commented 2 months ago

@41passerby 好的 我我这边做几个实验验证一下,非常感谢

41passerby commented 2 months ago

@41passerby 好的 我我这边做几个实验验证一下,非常感谢

@zhyj3038 请教下你们怎么生产数据,有没有开源中英文文档数据集可以推荐一下。现在数据集成了非常头大的问题。

zhyj3038 commented 2 months ago

@41passerby 没有开源的,都是我自己制作的。 主要来源是arxive、中英文文献、百度文库这些。

zhyj3038 commented 2 months ago

确认,可以复现ocr效果。谢谢两位~ @Ucas-HaoranWei @41passerby

luohao123 commented 2 months ago

@zhyj3038 @41passerby 我这边复现了loss 收敛到0.5,在复现交流群里,有人用一个短文本的训练可以收敛,这个loss很低好像只是因为文本短,实际训练出得模型并不能推理。模型根本没法推理出正常结果, @41passerby 方便的话可以提供一下你的权重吗?

Ucas-HaoranWei commented 2 months ago

你loss 0.5能推理吗?