Allgemeine Einführung
MegaPairs ist ein Open-Source-Projekt auf GitHub des VectorSpaceLab-Teams zur Erzeugung multimodaler Einbettungsmodelle für Bild-Text-Bild-Retrieval-Aufgaben durch groß angelegte Datensyntheseverfahren. Das Projekt basiert auf mehr als 26 Millionen heterogenen KNN-Triad-Datensätzen, trainierten BGE-VL-Serienmodellen, einschließlich BGE-VL-CLIP (Basis- und große Versionen) und BGE-VL-MLLM (S1- und S2-Versionen). Unter ihnen verbessert BGE-VL-MLLM-S1 die Leistung um 8,1% beim CIRCO-Benchmark für das Abrufen von Bildern ohne Stichproben (mAP@5) und schneidet auch beim multimodalen Einbettungsbenchmark MMEB gut ab. Der Code und das Modell wurden von GitHub und Hugging Face als Open Source zur Verfügung gestellt, und der Datensatz ist für eine spätere Veröffentlichung unter der MIT-Lizenz geplant, wobei die Daten von Recap-Datacomp (CC BY 4.0-Lizenz) bezogen werden.
Funktionsliste
- Generierung großer DatensätzeBietet über 26 Millionen heterogene KNN-Tripel für das Training multimodaler Einbettungsmodelle.
- BGE-VL-CLIP EinbettungsmodellEnthält Basis- und Großversionen, erzeugt eingebettete Darstellungen von Bildern und Text und unterstützt eine effiziente Suche.
- BGE-VL-MLLM-EinbettungsmodellS1- und S2-Versionen stehen zur Verfügung, die leistungsstarke multimodale Einbettungen erzeugen und die Abfrage von Nullproben unterstützen.
- Unterstützung der Nullproben-SucheGenerierung von Einbettungen und Durchführung von Bild-Text-Retrievalaufgaben ohne Training.
- Modell Open Source und ErweiterungBietet vorgefertigte Modelle bei Hugging Face an und unterstützt den Download, die Verwendung und die Feinabstimmung.
Hilfe verwenden
MegaPairs vertreibt Code und Modelle über GitHub und Hugging Face, so dass Benutzer schnell multimodale Einbettungen erzeugen und Retrievalaufgaben erledigen können. Im Folgenden finden Sie eine detaillierte Anleitung, die auf den offiziellen Anweisungen für BGE-VL-MLLM-S1 (Hugging Face) basiert.
Anschaffung und Installation
- Zugriff auf GitHub-Repositories: Öffnen
https://github.com/VectorSpaceLab/MegaPairs
, Projektdetails anzeigen. - Klon-Lager: Führen Sie den folgenden Befehl im Terminal aus, um den Code herunterzuladen:
git clone https://github.com/VectorSpaceLab/MegaPairs.git
cd MegaPairs
- Installation von Abhängigkeiten: Erstellen Sie mit Python 3.10 eine virtuelle Umgebung und installieren Sie die erforderlichen Bibliotheken:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install torch transformers==4.41.2 sentencepiece
Gesicht umarmen Anfrage transformers==4.41.2
im Gesang antworten sentencepiece
.
4. Modelle herunterladenBGE-VL-MLLM-S1 von Hugging Face kaufen:
- Besuchen Sie https://huggingface.co/BAAI/BGE-VL-MLLM-S1
- Automatischer Download über ein Python-Skript (siehe unten).
Verwendung der Hauptfunktionen
1. die Verwendung von Datensätzen
Der MegaPairs-Datensatz, der 26 Millionen Tripel für das Training von multimodalen Einbettungsmodellen enthält, wurde noch nicht vollständig freigegeben und soll im Rahmen des Gesicht umarmen Angebot.
- ErfassungsmethodeBehalten Sie das offizielle Update im Auge, laden Sie es herunter und verwenden Sie es für das Modelltraining oder die Validierung.
- Datenformat: ternär (Suchbild, Textbeschreibung, Zielbild) mit Unterstützung für die Erzeugung von Einbettungen und die Suche nach Bildern.
2. die Erzeugung multimodaler Einbettungen (BGE-VL-MLLM-S1)
BGE-VL-MLLM-S1 ist das zentrale Einbettungsmodell für die Erzeugung von eingebetteten Darstellungen von Bildern und Text und die Vervollständigung des Retrievals. Im Folgenden ist der offizielle Code aufgeführt:
- Modelle laden:
import torch
from transformers import AutoModel, AutoProcessor
model_name = "BAAI/BGE-VL-MLLM-S1"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
model.eval()
model.cuda() # 使用 GPU 加速
- Einbettung generieren und abrufen:
from PIL import Image # 准备输入 query_image = Image.open("./cir_query.png").convert("RGB") query_text = "Make the background dark, as if the camera has taken the photo at night" candidate_images = [Image.open("./cir_candi_1.png").convert("RGB"), Image.open("./cir_candi_2.png").convert("RGB")] # 处理查询数据 query_inputs = processor( text=query_text, images=query_image, task_instruction="Retrieve the target image that best meets the combined criteria by using both the provided image and the image retrieval instructions: ", return_tensors="pt", q_or_c="q" ) query_inputs = {k: v.cuda() for k, v in query_inputs.items()} # 处理候选数据 candidate_inputs = processor( images=candidate_images, return_tensors="pt", q_or_c="c" ) candidate_inputs = {k: v.cuda() for k, v in candidate_inputs.items()} # 生成嵌入并计算相似度 with torch.no_grad(): query_embs = model(**query_inputs, output_hidden_states=True).hidden_states[-1][:, -1, :] candi_embs = model(**candidate_inputs, output_hidden_states=True).hidden_states[-1][:, -1, :] query_embs = torch.nn.functional.normalize(query_embs, dim=-1) candi_embs = torch.nn.functional.normalize(candi_embs, dim=-1) scores = torch.matmul(query_embs, candi_embs.T) print(scores) # 输出相似度得分
- Auswertung der Ergebnisse:
scores
bezeichnet die Ähnlichkeit zwischen der Einbettung der Abfrage und der Einbettung des Kandidaten, je höher die Punktzahl, desto höher die Übereinstimmung.
- Auswertung der Ergebnisse:
3. die Erzeugung von Einbettungen mit BGE-VL-CLIP
BGE-VL-CLIP (base/large) kann auch multimodale Einbettungen erzeugen:
- Laden und Ausführen:
from transformers import AutoModel model_name = "BAAI/BGE-VL-base" model = AutoModel.from_pretrained(model_name, trust_remote_code=True) model.set_processor(model_name) model.eval() with torch.no_grad(): query = model.encode(images="./cir_query.png", text="Make the background dark") candidates = model.encode(images=["./cir_candi_1.png", "./cir_candi_2.png"]) scores = query @ candidates.T print(scores)
4. die Feinabstimmung des Modells
Die Benutzer können das Modell anhand des Datensatzes feinabstimmen:
- Vorbereitung der DatenBild-Text-Paare oder -Dreiergruppen vorbereiten.
- Feinabstimmungsprozess: Feinabgestimmter Code wird veröffentlicht, verfügbar unter
transformers
(in Form eines Nominalausdrucks)Trainer
API. - validieren (eine Theorie)Testen Sie die Auswirkungen anhand der CIRCO- oder MMEB-Benchmarks.
Featured Function Bedienung
Erzeugung und Abruf von Nullprobeneinbettungen
Das BGE-VL-MLLM-S1 unterstützt den Nullabtastbetrieb:
- Geben Sie Bilder und Text ein, erzeugen Sie Einbettungen und rufen Sie sie direkt ohne Training ab.
- Aufrüstung des mAP@5 von 8.1% auf CIRCO.
Hohe Leistung und Skalierbarkeit
- LeistungenGenerieren Sie hervorragende multimodale Einbettungen auf MMEB, die für die S2-Version weiter optimiert wurden.
- SkalierbarkeitEinbettungsqualität: Die Qualität der Einbettung verbessert sich mit zunehmender Datenmenge, und 500.000 Stichproben übertreffen bereits traditionelle Modelle.
caveat
- Hardware-VoraussetzungEmpfohlener Grafikprozessor (16 GB Videospeicher oder mehr).
- abhängige Version: Verwendung
transformers==4.41.2
im Gesang antwortensentencepiece
. - Unterstützung der DokumentationBesuchen Sie die Seiten GitHub und Hugging Face.
- Hilfe der Gemeinschaft: Stellen Sie eine Frage in GitHub Issues oder Hugging Face Discussions.
Mit den oben genannten Schritten kann der Benutzer die multimodale Einbettung erstellen und die Abrufaufgabe erfüllen.