Aprendizagem pessoal com IA
e orientação prática
Espelho de desenho CyberKnife

MegaPairs: um novo modelo de incorporação de vetor multimodal do BGE

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).

MegaPairs: um novo modelo de incorporação de vetor multimodal do BGE-1


 

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

  1. Acesso aos repositórios do GitHub: Aberto https://github.com/VectorSpaceLab/MegaPairs, veja os detalhes do projeto.
  2. 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
  1. 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 resultadosscores denota a similaridade entre a incorporação da consulta e a incorporação do candidato; quanto maior a pontuação, maior a correspondência.

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 cantando sentencepiece.
  • 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.

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " MegaPairs: um novo modelo de incorporação de vetor multimodal do BGE
pt_BRPortuguês do Brasil