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