MegaPairs: un nuevo modelo de incrustación vectorial multimodal de BGE

Introducción general

MegaPairs es un proyecto de código abierto en GitHub del equipo VectorSpaceLab para generar modelos de incrustación multimodal para tareas de recuperación de imagen-texto-a-imagen mediante técnicas de síntesis de datos a gran escala. El proyecto se basa en más de 26 millones de conjuntos de datos heterogéneos de tríadas KNN , modelos entrenados de la serie BGE-VL , incluyendo BGE-VL-CLIP (versiones base y grande) y BGE-VL-MLLM (versiones S1 y S2). Entre ellos, BGE-VL-MLLM-S1 mejora el rendimiento en 8,1% en la prueba de referencia de recuperación de imágenes de muestra cero CIRCO (mAP@5) y también obtiene buenos resultados en la prueba de referencia de incrustación multimodal MMEB. El código y el modelo se han publicado en GitHub y Hugging Face, y el conjunto de datos se publicará posteriormente bajo licencia MIT, con datos procedentes de Recap-Datacomp (licencia CC BY 4.0).

MegaPairs:BGE新推出的多模态向量嵌入模型

 

Lista de funciones

  • Generar conjuntos de datos a gran escalaProporciona más de 26 millones de triplas KNN heterogéneas para el entrenamiento de modelos de incrustación multimodal.
  • Modelo de incrustación BGE-VL-CLIP: Incluye versiones base y ampliadas, genera representaciones incrustadas de imágenes y texto, y admite una recuperación eficaz.
  • Modelo de incrustación BGE-VL-MLLM: están disponibles las versiones S1 y S2, que generan incrustaciones multimodales de alto rendimiento compatibles con la recuperación de muestras cero.
  • Admite búsqueda de muestra ceroGenerar incrustaciones y realizar tareas de recuperación de texto-imagen sin formación.
  • Modelo de código abierto y ampliación: Proporciona modelos preentrenados en Hugging Face, facilitando su descarga, uso y puesta a punto.

 

Utilizar la ayuda

MegaPairs distribuye código y modelos a través de GitHub y Hugging Face, lo que permite a los usuarios generar rápidamente incrustaciones multimodales y completar tareas de recuperación. A continuación se ofrece una guía detallada basada en las instrucciones oficiales de BGE-VL-MLLM-S1 (Hugging Face).

Adquisición e instalación

  1. Acceso a los repositorios de GitHub: Abierto https://github.com/VectorSpaceLab/MegaPairsVer detalles del proyecto.
  2. almacén de clonesEjecute el siguiente comando en el terminal para descargar el código:
git clone https://github.com/VectorSpaceLab/MegaPairs.git
cd MegaPairs
  1. Instalación de dependencias: Usando Python 3.10, crea un entorno virtual e instala las librerías necesarias:
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
pip install torch transformers==4.41.2 sentencepiece

Solicitud de Cara de Abrazo transformers==4.41.2 responder cantando sentencepiece.
4. Descargar modelosConsigue BGE-VL-MLLM-S1 de Hugging Face:

  • Visite https://huggingface.co/BAAI/BGE-VL-MLLM-S1
  • Descarga automática mediante script Python (véase más abajo).

Utilización de las funciones principales

1. Utilización de conjuntos de datos

El conjunto de datos MegaPairs, que contiene 26 millones de triplas para entrenar modelos de incrustación multimodal, aún no se ha publicado en su totalidad y está previsto que se publique a través de la Cara de abrazo Oferta.

  • Método de adquisición: Esté atento a la actualización oficial, descárguela y utilícela para el entrenamiento o la validación del modelo.
  • formato de los datos: ternario (imagen de consulta, descripción de texto, imagen de destino) con soporte para la generación y recuperación de incrustaciones.

2. Generación de incrustaciones multimodales (BGE-VL-MLLM-S1)

BGE-VL-MLLM-S1 es el modelo de incrustación central para generar representaciones incrustadas de imágenes y texto y completar la recuperación. A continuación se muestra el código oficial:

  • Modelos de carga:
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 加速
  • Generar incrustación y 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)  # 输出相似度得分
    
    • Interpretación de los resultadosscores denota la similitud entre la incrustación de la consulta y la incrustación candidata; cuanto mayor sea la puntuación, mayor será la coincidencia.

3. Generación de incrustaciones con BGE-VL-CLIP

BGE-VL-CLIP (base/grande) también puede generar incrustaciones multimodales:

  • Cargar y ejecutar:
    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 del modelo

Los usuarios pueden ajustar el modelo con el conjunto de datos:

  • Preparación de datos: Prepara pares o triples imagen-texto.
  • proceso de ajuste: Se publicará un código perfeccionado, disponible en transformers (utilizado como expresión nominal) Trainer API.
  • validar (una teoría)Prueba el efecto utilizando las referencias CIRCO o MMEB.

Función destacada Operación

Generación y recuperación de muestras cero

El BGE-VL-MLLM-S1 admite el funcionamiento con muestreo cero:

  • Introduzca imágenes y texto, genere incrustaciones y recupérelas directamente sin formación.
  • Actualización de mAP@5 de 8.1% en CIRCO.

Alto rendimiento y escalabilidad

  • actuacionesGenerar excelentes incrustaciones multimodales en MMEB, optimizadas para la versión S2.
  • escalabilidad: La calidad de la incrustación mejora a medida que aumenta el volumen de datos, y 500.000 muestras ya superan a los modelos tradicionales.

advertencia

  • requisitos de hardwareGPU recomendada (16 GB de memoria de vídeo o más).
  • versión de dependencia: Uso transformers==4.41.2 responder cantando sentencepiece.
  • Soporte documental: Echa un vistazo a las páginas GitHub y Hugging Face.
  • Ayuda comunitariaHaz una pregunta en GitHub Issues o en Hugging Face Discussions.

Con los pasos anteriores, el usuario puede generar la incrustación multimodal y completar la tarea de recuperación.

© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...