百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

统一多模态Embedding:通义实验室开源GME系列模型

ztj100 2025-02-11 14:27 76 浏览 0 评论

在2025年初,阿里巴巴通义实验室推出了GME(General MultiModal Embedding)系列模型,旨在解决多模态信息检索中的复杂问题。随着多媒体应用的迅猛发展,用户产生的数据类型日益多样化,不再局限于文本,还包含大量图像、音频和视频等多模态信息。传统的信息检索模型多关注单一模态,如仅对文本或图像进行分析和搜索,而GME通过统一的多模态表征模型,显著提升了信息检索的效率和精准度。

Paper: http://arxiv.org/abs/2412.16855

huggingface:

https://huggingface.co/Alibaba-NLP/gme-Qwen2-VL-2B-Instruct

https://huggingface.co/Alibaba-NLP/gme-Qwen2-VL-7B-Instruct

modelscope:

https://modelscope.cn/models/iic/gme-Qwen2-VL-2B-Instruct

https://modelscope.cn/models/iic/gme-Qwen2-VL-7B-Instruct

以下是对GME效果的详细介绍:

GME的核心技术

GME基于Qwen2-VL多模态大语言模型构建,采用对比学习的方法进行训练。每个训练样本包含一个查询、一个相关候选项及多组无关候选项,覆盖文本、图像及图文组合等多种数据类型。通过指令调优,GME能够适应不同的检索任务,比如视觉问答(VQA)等,进一步增强了模型的表征能力。具体为:

模型架构:GME基于MLLM构建,能够接受图像、文本或图像-文本对作为输入。受先前文本嵌入研究的启发,GME使用最后一个标记的最终隐藏状态作为输入的表示(或嵌入)。尽管预训练的MLLM具有强大的多模态理解能力,但其原始训练目标并未针对表示学习进行优化。因此,需要进行任务特定的微调(或对齐)以增强模型的表示能力。

对比学习:在对比学习设置中,每个训练实例包括一个查询q、一个相关候选c和一组不相关的候选{c1?,c2?,…,cK?}。为了适应各种下游检索任务,GME采用了指令调优方法,为每个检索任务添加定制的指令文本i。训练过程中,GME通过最小化相关对的余弦距离,同时最大化不相关对的余弦距离来优化模型。

硬负样本:为了提高对比学习模型的质量和多样性,GME采用了两阶段训练策略:首先使用随机选择的负候选进行初始训练,然后使用初始模型检索每个查询的前K个候选,从中选择非相关候选作为硬负样本进行进一步训练。

训练数据组成:GME的训练数据包括单模态、跨模态和融合模态数据。通过实验,研究团队发现平衡不同类型的数据可以显著提高模型在各种检索场景中的表现。

在训练数据方面,GME不仅利用了丰富的单模态和跨模态数据,还通过大模型生成技术,合成了海量的混合模态相关性数据。为了高效合成高质量的融合模态数据,研究团队采用了类似于Doc2Query的策略。

具体步骤包括:文档到查询生成实体提取和查询重写图像检索和生成以及数据过滤。通过这些步骤,研究团队成功合成了113.5万条高质量的融合模态训练数据,显著增强了模型的训练和性能。

统一多模态检索评测 (UMRB)

为系统评估模型在多种模态检索场景下的表现,GME作者团队构建了一个统一多模态检索评测数据集,命名为通用多模态检索基准(Universal Multimodal Retrieval Benchmark,UMRB)

该Benchmark包含47个评测子集,覆盖广泛的多模态检索任务。这些子集主要来源于之前针对不同子场景或子任务构建的专用数据集。UMRB包括以下几类数据:

  1. BEIR评测集:用于文本到文本的检索场景。
  2. M-BEIR数据集:聚焦于视觉相关的检索场景。
  3. 混合模态数据集:涵盖M-BEIR未覆盖的检索任务。
  4. 文本到视觉文档搜索数据集(如ViDoRe):扩展评测数据的覆盖范围,确保对模型通用性的全面评估。

在UMRB评测中,GME-Qwen2-VL系列模型表现优异。2B和7B规模的GME模型均超越了此前的基线模型,验证了其在单模态、跨模态及混合模态检索任务中的有效性。

此外,GME在纯文本检索和富文本图片检索上也展现出强大的能力。在BEIR文本检索评测中,尽管多模态嵌入模型在文本任务上略逊于专门的纯文本模型,但GME在富文本图片检索(如论文PDF、财报等)中,无需经过OCR识别即可直接进行高效检索,取得了显著优势。

模型使用方法

GME模型是通义基于多模态预训练大模型构建多模态Embedding模型进行的初步探索,当前版本还有许多提升空间和技术改进方向。基于Qwen2-VL系列模型训练的General MultiModal Embedding(GME)系列模型现已在Huggingface和ModalScope平台开源。

Huggingface例代码(2B):

# You can find the script gme_inference.py in https://huggingface.co/Alibaba-NLP/gme-Qwen2-VL-2B-Instruct/blob/main/gme_inference.py
from gme_inference import GmeQwen2VL

texts = [
    "What kind of car is this?",
    "The Tesla Cybertruck is a battery electric pickup truck built by Tesla, Inc. since 2023."
]
images = [
    'https://en.wikipedia.org/wiki/File:Tesla_Cybertruck_damaged_window.jpg',
    'https://en.wikipedia.org/wiki/File:2024_Tesla_Cybertruck_Foundation_Series,_front_left_(Greenwich).jpg',
]

gme = GmeQwen2VL("Alibaba-NLP/gme-Qwen2-VL-2B-Instruct")

# Single-modal embedding
e_text = gme.get_text_embeddings(texts=texts)
e_image = gme.get_image_embeddings(images=images)
print((e_text * e_image).sum(-1))
## tensor([0.2281, 0.6001], dtype=torch.float16)

# How to set embedding instruction
e_query = gme.get_text_embeddings(texts=texts, instruction='Find an image that matches the given text.')
# If is_query=False, we always use the default instruction.
e_corpus = gme.get_image_embeddings(images=images, is_query=False)
print((e_query * e_corpus).sum(-1))
## tensor([0.2433, 0.7051], dtype=torch.float16)

# Fused-modal embedding
e_fused = gme.get_fused_embeddings(texts=texts, images=images)
print((e_fused[0] * e_fused[1]).sum())
## tensor(0.6108, dtype=torch.float16)

Modelscope例代码(7B):

# You can find the script gme_inference.py in https://modelscope.cn/models/iic/gme-Qwen2-VL-7B-Instruct/file/view/master?fileName=gme_inference.py
from gme_inference import GmeQwen2VL

texts = [
    "What kind of car is this?",
    "The Tesla Cybertruck is a battery electric pickup truck built by Tesla, Inc. since 2023."
]
images = [
    'https://mitalinlp.oss-cn-hangzhou.aliyuncs.com/test/Tesla_Cybertruck_damaged_window.jpg',
    'https://mitalinlp.oss-cn-hangzhou.aliyuncs.com/test/2024_Tesla_Cybertruck_Foundation_Series%2C_front_left_(Greenwich).jpg',
]

gme = GmeQwen2VL("gme-Qwen2-VL-7B-Instruct")

# Single-modal embedding
e_text = gme.get_text_embeddings(texts=texts)
e_image = gme.get_image_embeddings(images=images)
print((e_text * e_image).sum(-1))
## tensor([0.2281, 0.6001], dtype=torch.float16)

# How to set embedding instruction
e_query = gme.get_text_embeddings(texts=texts, instruction='Find an image that matches the given text.')
# If is_query=False, we always use the default instruction.
e_corpus = gme.get_image_embeddings(images=images, is_query=False)
print((e_query * e_corpus).sum(-1))
## tensor([0.2433, 0.7051], dtype=torch.float16)

# Fused-modal embedding
e_fused = gme.get_fused_embeddings(texts=texts, images=images)
print((e_fused[0] * e_fused[1]).sum())
## tensor(0.6108, dtype=torch.float16)


阿里云多模态Embedding模型服务

通义实验室也在阿里云百炼大模型平台上推出推理性能更佳、垂直领域检索效果更优秀的公共云多模态Embedding模型服务multimodal-embedding-v1, multimodal-embedding-v1模型服务提供文本、图片、视频三种模态的表征能力,详情参考阿里云百炼大模型服务平台模型服务。

结论

GME系列模型的推出,标志着多模态信息检索领域的一次重大突破。通过统一的多模态表征模型,GME不仅提升了信息检索的效率和精准度,还为未来的多模态应用提供了强大的技术支持。随着开源社区的不断壮大,GME有望在多模态信息处理与检索领域发挥更大的作用。

探讨

我以前用Chinese Clip进行商品比对一类的工作。效果还不错,具体参考:

北方的郎:利用Chinese Clip实现基于图片的商品识别

看GME的文档,感觉效果肯定比Clip要好。可是看了一下模型,也大了很多:

后续准备有时间评估一下费效比。

相关推荐

其实TensorFlow真的很水无非就这30篇熬夜练

好的!以下是TensorFlow需要掌握的核心内容,用列表形式呈现,简洁清晰(含表情符号,<300字):1.基础概念与环境TensorFlow架构(计算图、会话->EagerE...

交叉验证和超参数调整:如何优化你的机器学习模型

准确预测Fitbit的睡眠得分在本文的前两部分中,我获取了Fitbit的睡眠数据并对其进行预处理,将这些数据分为训练集、验证集和测试集,除此之外,我还训练了三种不同的机器学习模型并比较了它们的性能。在...

机器学习交叉验证全指南:原理、类型与实战技巧

机器学习模型常常需要大量数据,但它们如何与实时新数据协同工作也同样关键。交叉验证是一种通过将数据集分成若干部分、在部分数据上训练模型、在其余数据上测试模型的方法,用来检验模型的表现。这有助于发现过拟合...

深度学习中的类别激活热图可视化

作者:ValentinaAlto编译:ronghuaiyang导读使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性...

超强,必会的机器学习评估指标

大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。选择正确的验证指...

机器学习入门教程-第六课:监督学习与非监督学习

1.回顾与引入上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。2.监督学习监督学习就像是有老师的教学...

Python教程(三十八):机器学习基础

...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

超全面讲透一个算法模型,高斯核!!

...

神经网络与传统统计方法的简单对比

传统的统计方法如...

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

...

自回归滞后模型进行多变量时间序列预测

下图显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。假设要预测其中一个变量。比如,sparklingwine。如何建立一个模型来进行预测呢?一种常见的方...

苹果AI策略:慢哲学——科技行业的“长期主义”试金石

苹果AI策略的深度原创分析,结合技术伦理、商业逻辑与行业博弈,揭示其“慢哲学”背后的战略智慧:一、反常之举:AI狂潮中的“逆行者”当科技巨头深陷AI军备竞赛,苹果的克制显得格格不入:功能延期:App...

时间序列预测全攻略,6大模型代码实操

如果你对数据分析感兴趣,希望学习更多的方法论,希望听听经验分享,欢迎移步宝藏公众号...

AI 基础知识从 0.4 到 0.5—— 计算机视觉之光 CNN

...

取消回复欢迎 发表评论: