Introdução geral
O MegaPairs é um projeto de código aberto no GitHub da equipe do VectorSpaceLab para gerar modelos de incorporação multimodal para tarefas de recuperação de imagem-texto-imagem por meio de técnicas de síntese de dados em grande escala. O projeto é baseado em mais de 26 milhões de conjuntos de dados heterogêneos de tríades KNN, modelos treinados da série BGE-VL, incluindo BGE-VL-CLIP (versões básica e grande) e BGE-VL-MLLM (versões S1 e S2). Entre eles, o BGE-VL-MLLM-S1 melhora o desempenho em 8,1% no benchmark de recuperação de imagem de amostra zero CIRCO (mAP@5) e também apresenta bom desempenho no benchmark de incorporação multimodal MMEB. O código e o modelo foram disponibilizados pelo GitHub e pela Hugging Face, e o conjunto de dados está planejado para uma versão subsequente sob a licença MIT, com dados disponibilizados pela Recap-Datacomp (licença CC BY 4.0).
Lista de funções
- Gerar conjuntos de dados em grande escalaKNN: fornece mais de 26 milhões de triplas KNN heterogêneas para o treinamento de modelos de incorporação multimodal.
- Modelo de incorporação BGE-VL-CLIPInclui versões básicas e grandes, gera representações incorporadas de imagens e texto e oferece suporte à recuperação eficiente.
- Modelo de incorporação BGE-VL-MLLMAs versões S1 e S2 estão disponíveis, gerando embeddings multimodais de alto desempenho que suportam recuperação de amostra zero.
- Suporte à pesquisa de amostra zeroGerar embeddings e executar tarefas de recuperação de texto-imagem sem treinamento.
- Modelo de código aberto e extensãoHugging Face: fornece modelos pré-treinados no Hugging Face, oferecendo suporte para download, uso e ajuste fino.
Usando a Ajuda
O MegaPairs distribui código e modelos via GitHub e Hugging Face, permitindo que os usuários gerem rapidamente embeddings multimodais e concluam tarefas de recuperação. Abaixo está um guia detalhado de como fazer, com base nas instruções oficiais do BGE-VL-MLLM-S1 (Hugging Face).
Aquisição e instalação
- Acesso aos repositórios do GitHub: Aberto
https://github.com/VectorSpaceLab/MegaPairs
, veja os detalhes do projeto. - armazém de clonesExecute o seguinte comando no terminal para fazer o download do código:
git clone https://github.com/VectorSpaceLab/MegaPairs.git
cd MegaPairs
- Instalação de dependênciasUse o Python 3.10 para criar um ambiente virtual e instalar as bibliotecas necessárias:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install torch transformers==4.41.2 sentencepiece
Solicitação de rosto de abraço transformers==4.41.2
responder cantando sentencepiece
.
4. Modelos para downloadObtenha BGE-VL-MLLM-S1 da Hugging Face:
- Visite https://huggingface.co/BAAI/BGE-VL-MLLM-S1
- Download automático por meio de script Python (veja abaixo).
Uso das funções principais
1. uso de conjuntos de dados
O conjunto de dados MegaPairs, que contém 26 milhões de triplas para treinar modelos de incorporação multimodal, ainda não foi totalmente liberado e está planejado para ser liberado por meio do Cara de abraço Oferecer.
- Método de aquisiçãoObservação: fique de olho na atualização oficial, faça o download e use-a para treinamento ou validação do modelo.
- formato de dadosImagem de consulta: ternária (imagem de consulta, descrição de texto, imagem de destino) com suporte para geração e recuperação de incorporação.
2) Geração de embeddings multimodais (BGE-VL-MLLM-S1)
O BGE-VL-MLLM-S1 é o modelo de incorporação principal para gerar representações incorporadas de imagens e textos e concluir a recuperação. O código oficial é o seguinte:
- Modelos de carregamento:
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 加速
- Gerar incorporação e recuperar:
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) # 输出相似度得分
- Interpretação dos resultados:
scores
denota a similaridade entre a incorporação da consulta e a incorporação do candidato; quanto maior a pontuação, maior a correspondência.
- Interpretação dos resultados:
3 Geração de embeddings com BGE-VL-CLIP
O BGE-VL-CLIP (base/large) também pode gerar embeddings multimodais:
- Carregar e executar:
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. ajuste fino do modelo
Os usuários podem fazer o ajuste fino do modelo com o conjunto de dados:
- Preparação de dadosPrepara pares ou triplas de imagem-texto.
- processo de ajuste fino: Código ajustado a ser lançado, disponível em
transformers
(usado em uma expressão nominal)Trainer
API. - validar (uma teoria)Teste o efeito usando os benchmarks CIRCO ou MMEB.
Operação da função em destaque
Geração e recuperação de incorporação de amostra zero
O BGE-VL-MLLM-S1 é compatível com a operação de amostragem zero:
- Insira imagens e textos, gere embeddings e recupere-os diretamente sem treinamento.
- Atualizando o mAP@5 do 8.1% no CIRCO.
Alto desempenho e escalabilidade
- performancesGerar excelentes embeddings multimodais no MMEB, otimizados ainda mais para a versão S2.
- escalabilidadeA qualidade da incorporação melhora à medida que o volume de dados aumenta, e 500.000 amostras já superam os modelos tradicionais.
advertência
- Requisitos de hardwareGPU recomendada (16 GB de memória de vídeo ou mais).
- versão de dependência: Uso
transformers==4.41.2
responder cantandosentencepiece
. - Suporte à documentação: Dê uma olhada nas páginas do GitHub e do Hugging Face.
- Ajuda da comunidadeFaça uma pergunta em Problemas do GitHub ou Discussões do Hugging Face.
Com as etapas acima, o usuário pode gerar a incorporação multimodal e concluir a tarefa de recuperação.