Gme Qwen2 VL 2B Instruct
G
Gme Qwen2 VL 2B Instruct
由 Alibaba-NLP 开发
Qwen2-VL-2B-Instruct 是一个基于 Qwen2 架构的视觉语言模型,支持中英文,适用于多种自然语言处理任务。
下载量 31.18k
发布时间 : 12/21/2024
模型简介
该模型是一个多模态视觉语言模型,能够处理文本和图像相关的任务,特别优化了指令跟随能力。
模型特点
多语言支持
支持英语和中文,适用于跨语言任务。
多任务处理
能够执行句子相似度、分类、检索等多种自然语言处理任务。
视觉语言能力
结合视觉和语言处理能力,适用于多模态任务。
模型能力
文本分类
句子相似度计算
信息检索
聚类分析
重排序
多模态处理
使用案例
文本分析
情感分析
对亚马逊评论进行情感极性分类。
准确率高达 96.75%
意图识别
识别银行客服对话中的用户意图。
准确率 80.24%
信息检索
文档检索
在 ArguAna 数据集上进行文档检索。
平均精度@10 达到 52.78
多模态应用
图文匹配
结合视觉和语言信息进行图文匹配任务。
🚀 GME-Qwen2-VL-2B:通用多模态嵌入模型
GME-Qwen2-VL-2B 是基于先进的 Qwen2-VL 多模态大语言模型(MLLMs)开发的统一多模态嵌入模型。该模型支持文本、图像和图像 - 文本对三种输入类型,能生成通用向量表示,具备强大的检索性能。
✨ 主要特性
- 统一的多模态表示:能够处理单模态和组合模态输入,生成统一的向量表示,支持文本检索、文本到图像检索、图像到图像检索等多种检索场景(Any2Any 搜索)。
- 高性能:在通用多模态检索基准测试(UMRB)中达到了当前最优(SOTA)结果,在多模态文本评估基准(MTEB)中也表现出色。
- 动态图像分辨率:得益于
Qwen2-VL
和训练数据,支持动态分辨率的图像输入。 - 强大的视觉检索性能:在视觉文档检索任务中表现卓越,尤其适用于需要深入理解文档截图的复杂文档理解场景,如专注于学术论文的多模态检索增强生成(RAG)应用。
📦 安装指南
使用自定义代码调用模型时,可参考以下步骤:
# 可从 https://huggingface.co/Alibaba-NLP/gme-Qwen2-VL-2B-Instruct/blob/main/gme_inference.py 找到 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")
# 单模态嵌入
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)
# 如何设置嵌入指令
e_query = gme.get_text_embeddings(texts=texts, instruction='Find an image that matches the given text.')
# 如果 is_query=False,我们始终使用默认指令。
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)
# 融合模态嵌入
e_fused = gme.get_fused_embeddings(texts=texts, images=images)
print((e_fused[0] * e_fused[1]).sum())
## tensor(0.6108, dtype=torch.float16)
💻 使用示例
基础用法
# 可从 https://huggingface.co/Alibaba-NLP/gme-Qwen2-VL-2B-Instruct/blob/main/gme_inference.py 找到 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")
# 单模态嵌入
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)
高级用法
# 设置嵌入指令
e_query = gme.get_text_embeddings(texts=texts, instruction='Find an image that matches the given text.')
# 如果 is_query=False,我们始终使用默认指令。
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)
# 融合模态嵌入
e_fused = gme.get_fused_embeddings(texts=texts, images=images)
print((e_fused[0] * e_fused[1]).sum())
## tensor(0.6108, dtype=torch.float16)
📚 详细文档
模型列表
模型 | 模型大小 | 最大序列长度 | 维度 | MTEB - 英文 | MTEB - 中文 | UMRB |
---|---|---|---|---|---|---|
gme-Qwen2-VL-2B |
2.21B | 32768 | 1536 | 65.27 | 66.92 | 64.45 |
gme-Qwen2-VL-7B |
8.29B | 32768 | 3584 | 67.48 | 69.73 | 67.44 |
评估结果
我们在通用多模态检索基准测试(UMRB)等测试中验证了模型的性能。
单模态 | 跨模态 | 融合模态 | 平均 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
T→T (16) | I→I (1) | T→I (4) | T→VD (10) | I→T (4) | T→IT (2) | IT→T (5) | IT→I (2) | IT→IT (3) | (47) | ||
VISTA | 0.2B | 55.15 | 31.98 | 32.88 | 10.12 | 31.23 | 45.81 | 53.32 | 8.97 | 26.26 | 37.32 |
CLIP - SF | 0.4B | 39.75 | 31.42 | 59.05 | 24.09 | 62.95 | 66.41 | 53.32 | 34.9 | 55.65 | 43.66 |
One - Peace | 4B | 43.54 | 31.27 | 61.38 | 42.9 | 65.59 | 42.72 | 28.29 | 6.73 | 23.41 | 42.01 |
DSE | 4.2B | 48.94 | 27.92 | 40.75 | 78.21 | 52.54 | 49.62 | 35.44 | 8.36 | 40.18 | 50.04 |
E5 - V | 8.4B | 52.41 | 27.36 | 46.56 | 41.22 | 47.95 | 54.13 | 32.9 | 23.17 | 7.23 | 42.52 |
[GME - Qwen2 - VL - 2B](https://huggingface.co/Alibaba - NLP/gme - Qwen2 - VL - 2B - Instruct) | 2.2B | 55.93 | 29.86 | 57.36 | 87.84 | 61.93 | 76.47 | 64.58 | 37.02 | 66.47 | 64.45 |
[GME - Qwen2 - VL - 7B](https://huggingface.co/Alibaba - NLP/gme - Qwen2 - VL - 7B - Instruct) | 8.3B | 58.19 | 31.89 | 61.35 | 89.92 | 65.83 | 80.94 | 66.18 | 42.56 | 73.62 | 67.44 |
🔧 技术细节
微调方法
GME 模型可以使用 SWIFT 进行微调:
pip install ms-swift -U
# MAX_PIXELS 设置以减少内存使用
# 查看: https://swift.readthedocs.io/en/latest/BestPractices/Embedding.html
nproc_per_node=8
MAX_PIXELS=1003520 \
USE_HF=1 \
NPROC_PER_NODE=$nproc_per_node \
swift sft \
--model Alibaba-NLP/gme-Qwen2-VL-2B-Instruct \
--train_type lora \
--dataset 'HuggingFaceM4/TextCaps:emb' \
--torch_dtype bfloat16 \
--num_train_epochs 1 \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps $(expr 64 / $nproc_per_node) \
--eval_steps 100 \
--save_steps 100 \
--eval_strategy steps \
--save_total_limit 5 \
--logging_steps 5 \
--output_dir output \
--lazy_tokenize true \
--warmup_ratio 0.05 \
--learning_rate 5e-6 \
--deepspeed zero3 \
--dataloader_num_workers 4 \
--task_type embedding \
--loss_type infonce \
--dataloader_drop_last true
📄 许可证
本项目采用 Apache 2.0 许可证。
🔖 引用
如果您觉得我们的论文或模型有帮助,请考虑引用:
@misc{zhang2024gme,
title={GME: Improving Universal Multimodal Retrieval by Multimodal LLMs},
author={Zhang, Xin and Zhang, Yanzhao and Xie, Wen and Li, Mingxin and Dai, Ziqi and Long, Dingkun and Xie, Pengjun and Zhang, Meishan and Li, Wenjie and Zhang, Min},
year={2024},
eprint={2412.16855},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={http://arxiv.org/abs/2412.16855},
}
⚠️ 重要提示
- 单图像输入:在
Qwen2-VL
中,一张图像可能会转换为大量的视觉标记。为了获得良好的训练效率,我们将视觉标记的数量限制为 1024。由于缺乏相关数据,我们的模型和评估仅保留单张图像。 - 仅英文训练:我们的模型仅在英文数据上进行训练。尽管
Qwen2-VL
模型支持多语言,但多语言 - 多模态嵌入性能无法保证。
我们将在未来版本中扩展到多图像输入、图像 - 文本交错数据以及多语言数据。
💡 使用建议
- 在使用模型进行推理时,可以根据具体任务设置合适的嵌入指令,以获得更好的检索效果。
- 进行微调时,可根据实际情况调整
MAX_PIXELS
等参数,以优化内存使用。
Clip Vit Large Patch14 336
基于Vision Transformer架构的大规模视觉语言预训练模型,支持图像与文本的跨模态理解
文本生成图像
Transformers

C
openai
5.9M
241
Fashion Clip
MIT
FashionCLIP是基于CLIP开发的视觉语言模型,专门针对时尚领域进行微调,能够生成通用产品表征。
文本生成图像
Transformers 英语

F
patrickjohncyh
3.8M
222
Gemma 3 1b It
Gemma 3是Google推出的轻量级先进开放模型系列,基于与Gemini模型相同的研究和技术构建。该模型是多模态模型,能够处理文本和图像输入并生成文本输出。
文本生成图像
Transformers

G
google
2.1M
347
Blip Vqa Base
Bsd-3-clause
BLIP是一个统一的视觉语言预训练框架,擅长视觉问答任务,通过语言-图像联合训练实现多模态理解与生成能力
文本生成图像
Transformers

B
Salesforce
1.9M
154
CLIP ViT H 14 Laion2b S32b B79k
MIT
基于OpenCLIP框架在LAION-2B英文数据集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索任务
文本生成图像
Safetensors
C
laion
1.8M
368
CLIP ViT B 32 Laion2b S34b B79k
MIT
基于OpenCLIP框架在LAION-2B英语子集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索
文本生成图像
Safetensors
C
laion
1.1M
112
Pickscore V1
PickScore v1 是一个针对文本生成图像的评分函数,可用于预测人类偏好、评估模型性能和图像排序等任务。
文本生成图像
Transformers

P
yuvalkirstain
1.1M
44
Owlv2 Base Patch16 Ensemble
Apache-2.0
OWLv2是一种零样本文本条件目标检测模型,可通过文本查询在图像中定位对象。
文本生成图像
Transformers

O
google
932.80k
99
Llama 3.2 11B Vision Instruct
Llama 3.2 是 Meta 发布的多语言多模态大型语言模型,支持图像文本到文本的转换任务,具备强大的跨模态理解能力。
文本生成图像
Transformers 支持多种语言

L
meta-llama
784.19k
1,424
Owlvit Base Patch32
Apache-2.0
OWL-ViT是一个零样本文本条件目标检测模型,可以通过文本查询搜索图像中的对象,无需特定类别的训练数据。
文本生成图像
Transformers

O
google
764.95k
129
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98