kongds / E5-V

E5-V: Universal Embeddings with Multimodal Large Language Models
https://arxiv.org/abs/2407.12580
176 stars 8 forks source link

在Flickr30K上复现模型效果 #2

Closed saicoco closed 4 months ago

saicoco commented 4 months ago

作者你好,我在尝试使用e5-v, 在长文本检索的场景中,确实看到比较好的效果,但我在尝试复现时,发现效果和论文中没对齐。 实验实在Flickr30K上进行实验的,以下时实验结果

开放的权重e5-v

测试效果如下: 'image_retrieval_recall@1 'image_retrieval_recall@5 'image_retrieval_recall@10
0.4391655921936035 0.6691250205039978 0.7548311948776245
text_retrieval_recall@1 text_retrieval_recall@5 text_retrieval_recall@10
0.491048663854599 0.7385709285736084 0.8241827487945557

使用llava-next-8B

模型转换为hf格式,分别采用不同的batchsize进行训练,对比不同batch下的效果。 bz使用的是32,梯度累积实现768的batch-size,lr=4e-4, 'image_retrieval_recall@1 'image_retrieval_recall@5 'image_retrieval_recall@10
0.4331938326358795 0.6654500961303711 0.7514960765838623
text_retrieval_recall@1 text_retrieval_recall@5 text_retrieval_recall@10
0.4712896943092346 0.7266148328781128 0.8168203234672546
bz=128, 配置同上,观测效果(以上的模型均为组合的llava-next-8b转换后的模型) 'image_retrieval_recall@1 'image_retrieval_recall@5 'image_retrieval_recall@10
0.42873862385749817 0.661064088344574 0.7465500235557556
text_retrieval_recall@1 text_retrieval_recall@5 text_retrieval_recall@10
0.46178776025772095 0.7163892388343811 0.8093634843826294

模型使用llava-next-8b-hf

bz=768, 配置同上,观测效果

'image_retrieval_recall@1 'image_retrieval_recall@5 'image_retrieval_recall@10
0.42147061228752136 0.6545700430870056 0.7414404153823853
text_retrieval_recall@1 text_retrieval_recall@5 text_retrieval_recall@10
0.42147061228752136 0.726709246635437 0.8136110305786133
kongds commented 4 months ago

你好 感谢关注我们的工作。 请问可以提供具体的训练setting吗? 无法复现可能是用了梯度累计的关系,导致对比学习的负样本数量不够。 我们的settings是在32张卡上分别用了24 micro batch size,来实现768的batch size(没有使用梯度累计) 。

kongds commented 4 months ago

另外关于flickr30k的结果,请问是怎么复现的? 我们也提供了复现的脚本,应该可以用如下的方式进行复现

accelerate launch --num_machines=1 --num_processes 8 --machine_rank 0 retrieval.py  --use_e5v  --data flickr30k
saicoco commented 4 months ago

你好 感谢关注我们的工作。 请问可以提供具体的训练setting吗? 无法复现可能是用了梯度累计的关系,导致对比学习的负样本数量不够。 我们的settings是在32张卡上分别用了24 micro batch size,来实现768的batch size(没有使用梯度累计) 。

明白,我用的是仓库里提供的评估脚本。最后一组实验用的是8张A100, macro_batchsize是96。

有可能和梯度累积有关系,这里我再确认一下子

saicoco commented 4 months ago

另外关于flickr30k的结果,请问是怎么复现的? 我们也提供了复现的脚本,应该可以用如下的方式进行复现

accelerate launch --num_machines=1 --num_processes 8 --machine_rank 0 retrieval.py  --use_e5v  --data flickr30k

e5v是按这个跑的,我下周再确认下代码里的细节,看是不是预处理部分导致的

kongds commented 4 months ago

另外关于flickr30k的结果,请问是怎么复现的? 我们也提供了复现的脚本,应该可以用如下的方式进行复现

accelerate launch --num_machines=1 --num_processes 8 --machine_rank 0 retrieval.py  --use_e5v  --data flickr30k

e5v是按这个跑的,我下周再确认下代码里的细节,看是不是预处理部分导致的

用这个跑出来的flickr30k,应该是这个结果 {'image_retrieval_recall@1': 0.7954000234603882, 'text_retrieval_recall@1': 0.8820000290870667, 'image_retrieval_recall@5': 0.9503999948501587, 'text_retrieval_recall@5': 0.9869999885559082, 'image_retrieval_recall@10': 0.9757999777793884, 'text_retrieval_recall@10': 0.9940000176429749}

saicoco commented 4 months ago

发现了不一样的地方,我是用的flickr30k数据为全量级30k, 你这里数据是1k-test.包括COCO部分 我觉得需要在论文中说明测试集合的量级,像BLIP中这样描述实验

image

E5-V论文中的实验结果如下:

image

是可以标记说明下的

saicoco commented 4 months ago

另外关于flickr30k的结果,请问是怎么复现的? 我们也提供了复现的脚本,应该可以用如下的方式进行复现

accelerate launch --num_machines=1 --num_processes 8 --machine_rank 0 retrieval.py  --use_e5v  --data flickr30k

e5v是按这个跑的,我下周再确认下代码里的细节,看是不是预处理部分导致的

用这个跑出来的flickr30k,应该是这个结果 {'image_retrieval_recall@1': 0.7954000234603882, 'text_retrieval_recall@1': 0.8820000290870667, 'image_retrieval_recall@5': 0.9503999948501587, 'text_retrieval_recall@5': 0.9869999885559082, 'image_retrieval_recall@10': 0.9757999777793884, 'text_retrieval_recall@10': 0.9940000176429749}

替换flickr30-1k-test后,测试效果如下: {'image_retrieval_recall@1': 0.7960000038146973, 'text_retrieval_recall@1': 0.8799999952316284, 'image_retrieval_recall@5': 0.9503999948501587, 'text_retrieval_recall@5': 0.9860000014305115, 'image_retrieval_recall@10': 0.9760000109672546, 'text_retrieval_recall@10': 0.9940000176429749} flickr30k: 0.9504 0.9860

saicoco commented 4 months ago

llava-next-8b-hf的测试结果是: {'image_retrieval_recall@1': 0.7874000072479248, 'text_retrieval_recall@1': 0.8519999980926514, 'image_retrieval_recall@5': 0.9476000070571899, 'text_retrieval_recall@5': 0.9810000061988831, 'image_retrieval_recall@10': 0.9721999764442444, 'text_retrieval_recall@10': 0.9929999709129333} flickr30k: 0.9476 0.9810 基本复现了

kongds commented 4 months ago

发现了不一样的地方,我是用的flickr30k数据为全量级30k, 你这里数据是1k-test.包括COCO部分 我觉得需要在论文中说明测试集合的量级,像BLIP中这样描述实验 image

E5-V论文中的实验结果如下: image 是可以标记说明下的

感谢建议 但是我看的论文里大家应该都是默认test下的结果 比如eva clip里 IMG_1882

kongds commented 4 months ago

llava-next-8b-hf的测试结果是: {'image_retrieval_recall@1': 0.7874000072479248, 'text_retrieval_recall@1': 0.8519999980926514, 'image_retrieval_recall@5': 0.9476000070571899, 'text_retrieval_recall@5': 0.9810000061988831, 'image_retrieval_recall@10': 0.9721999764442444, 'text_retrieval_recall@10': 0.9929999709129333} flickr30k: 0.9476 0.9810 基本复现了

另外llava-next-8b-hf和llava-next-8b有什么区别吗?我看之前的结果llava-next-8b-hf会比llava-next-8b要差

saicoco commented 4 months ago

llava-next-8b-hf是官方最近放出来的一个hf版本的模型,我一开始担心是自己转换模型有问题, 链接在这里:https://huggingface.co/llava-hf/llama3-llava-next-8b-hf

saicoco commented 4 months ago

发现了不一样的地方,我是用的flickr30k数据为全量级30k, 你这里数据是1k-test.包括COCO部分 我觉得需要在论文中说明测试集合的量级,像BLIP中这样描述实验 image E5-V论文中的实验结果如下: image 是可以标记说明下的

感谢建议 但是我看的论文里大家应该都是默认test下的结果 比如eva clip里 IMG_1882

那应该没啥问题,我是看到有的文章会特意强调在不同量级上做实验,比如LongCLIP

image

现在基本对齐了,评测了下长文本检索也是有优势的

kongds commented 4 months ago

llava-next-8b-hf是官方最近放出来的一个hf版本的模型,我一开始担心是自己转换模型有问题, 链接在这里:https://huggingface.co/llava-hf/llama3-llava-next-8b-hf

好的 不过我们的模型转换会另外把mllm中的llm单独存起来,在训练的时候只load这个。我之前试过这个转换应该没什么问题,e5v就是这样训练的(可能现在结果的gap是这部分导致的)

saicoco commented 4 months ago

嗯嗯,之前就是测试集没搞对,现在整个流程都没问题的。 【抱拳了】