IBM slate-125m-english-rtrvr-v2 modelo de tarjeta
Versión 2.0.1 Fecha: 30/06/2024
Descripción de modelo
El modelo de codificador de frases ( slate.125m.english.rtrvr ) es un modelo de transformadores de frases estándar basado en bicodificadores. El modelo produce una incrustación para una entrada determinada (consulta, pasaje, documento, etc.). A grandes rasgos, nuestro modelo se entrena para maximizar la similitud coseno entre dos fragmentos de texto de entrada, por ejemplo, el texto A (texto de consulta) y el texto B (texto de pasaje), que dan como resultado las incrustaciones de frases q y p. A continuación, estas incrustaciones de frases pueden compararse mediante la similitud coseno.
Figura 1. Modelo de incrustación bicodificador para la recuperación
Modelo de lengua base
El modelo lingüístico (LM) subyacente para nuestras incrustaciones es “slate.125m.english”. Tiene la misma arquitectura que un modelo de transformador RoBERTa-base (12 capas) y cuenta con ~125 millones de parámetros y una dimensión de incrustación de 768. En concreto, slate.125m.english se ha ajustado a partir de “slate.125m.english” (anteriormente, WatBERT). Nuestro modelo final se llama slate.125m.english.rtrvr. El sufijo indica que la arquitectura del modelo subyacente se ha ajustado para tareas basadas en la recuperación.
Algoritmo de formación
La mayoría de los modelos de incrustación más avanzados o que ocupan los primeros puestos de la clasificación MTEB suelen entrenarse en tres fases:
- Preentrenamiento específico de la tarea (basado en la recuperación)
- Ajuste de tareas específicas en pares minados
- Ajuste fino en pares supervisados.
Seguimos el mismo planteamiento y, por último, realizamos una fusión de modelos promediando los pesos de los distintos modelos entrenados.
slate.125m.english.rtrvr se produce realizando una "fusión de modelos" - promediando los pesos de los siguientes modelos, ambos entrenados por etapas pero con las siguientes variaciones:
- Modelo 1 afinado en las tres etapas mencionadas
- Modelo 2 destilado de un modelo afinado en todas las etapas anteriores.
Formación previa específica
Esta etapa utiliza el marco RetroMAE, para que nuestro LM subyacente esté más orientado a la recuperación. Inicializamos nuestro LM base con slate.125m.english y continuamos con RetroMAE pre-entrenamiento, utilizando los datos de la Tabla 1. Nuestros hiperparámetros son: velocidad de aprendizaje: 2e-5, número de pasos: 190000, GPUs: 24 A100 40GB.
Nota: esta es nuestra LM base para las 2 etapas siguientes.
Ajuste fino con datos no supervisados a gran escala
Este modelo se inicializa con el modelo preentrenado RetroMAE y se entrena de la siguiente manera.
Para entrenar un modelo de incrustación, utilizamos un marco de bicodificación, como en la figura 1. El RetroMAE LM preentrenado se ajusta con <query, passage>
pares de textos utilizando un objetivo de pérdida contrastiva. Extraemos pares a gran escala de varios dominios, como se indica en la Tabla 2. El modelo se entrena con diversos pares, incluidas tareas de clasificación como NLI (Natural Language Inference), que consiste en emparejar una premisa con la hipótesis correspondiente. Nuestros hiperparámetros son: velocidad de aprendizaje: 2e-4; número de pasos: 35000; GPUs: 8 A100_80GB, tamaño efectivo del lote: 16k pares
Ajuste fino con datos supervisados a pequeña escala con negativos duros
Por último, el modelo se perfecciona con pares de entrenamiento supervisado de alta calidad, con supervisión procedente de minería negativa dura, para la tarea de recuperación. Los puntos de control intermedios del modelo se utilizan de forma iterativa para extraer negativos duros específicos del conjunto de datos, que luego se utilizan para el ajuste fino supervisado. Este proceso tiene por objeto hacer que el modelo sea más robusto al permitirle aprender de sus propios errores y ayuda a estabilizarse con datos mucho más pequeños.
Afinamos el modelo utilizando un subconjunto de conjuntos de datos (encontrados mediante la realización de experimentos de validación en un conjunto de datos retenido) mencionados en la sección Datos de entrenamiento, que son los siguientes: AllNLI, Squad, Stackexchange, NQ, HotpotQA, Fever y 5M subconjunto de cada uno de Specter, S2orc, WikiAnswers. Además, también generamos triples sintéticamente para crear pares de buena calidad de pregunta-respuesta, verificación de hechos, etc. utilizando Mixtral-8x7B-Instruct-v0.1
. Para proporcionar un mejor rendimiento para los casos de uso específicos de IBM, también incluimos pares creados a partir de datos de IBM Software Support y IBM Docs.
Los hiperparámetros de entrenamiento son tasa de aprendizaje: 2e-5; longitud máxima de consulta: 64; longitud máxima de pasaje: 512; pasos máximos: 5000; tamaño efectivo del lote: 512; GPUs: 1A100_80GB
Datos de entrenamiento
Conjunto de datos | Pasajes |
---|---|
Wikipedia | 36396918 |
Corpus de libros | 3401308 |
Stack Exchange | 15999837 |
Conjunto de datos | Pares |
---|---|
Trillizos de citas SPECTER | 684100 |
Stack Exchange Preguntas duplicadas (títulos) | 304525 |
Stack Exchange Preguntas duplicadas (cuerpos) | 250519 |
Stack Exchange Preguntas duplicadas (títulos+cuerpos) | 250460 |
Preguntas naturales (NQ) | 100231 |
SQuAD2.0 | 87599 |
Pares PAQ (Pregunta, Respuesta) | 64371441 |
Stack Exchange (Título, Respuesta) pares | 4067139 |
Stack Exchange (Título, Cuerpo) pares | 23978013 |
Pares Stack Exchange (Título+Cuerpo, Respuesta) | 187195 |
S2ORC Pares de citas (Títulos) | 52603982 |
S2ORC (Título, Resumen) | 41769185 |
S2ORC_citations_abstracts | 52603982 |
WikiAnswers Pares de preguntas duplicados | 77427422 |
SearchQA | 582261 |
HotpotQA | 85000 |
Fiebre | 109810 |
Arxiv | 2358545 |
Wikipedia | 20745403 |
PubMed | 20000000 |
Miracl En Pares | 9016 |
DBPedia Pares título-cuerpo | 4635922 |
Sintético: Pasaje Query-Wikipedia | 1879093 |
Sintética: Verificación de hechos | 9888 |
IBM: IBM Docs (Título-Cuerpo) | 474637 |
IBM: IBM Soporte (Título-Cuerpo) | 1049949 |
Uso
# make sure you’ve sentence transformers installed
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('path_to_slate_model')
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define']
input_passages = [
" Achy Breaky Heart is a country song written by Don Von Tress. Originally titled Don't Tell My Heart and performed by The Marcy Brothers in 1991. ",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments."]
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
print(util.cos_sim(query_embeddings, passage_embeddings)
La longitud máxima de secuencia de este modelo es de 512 tokens.
Evaluación
Líneas base
Para que la comparación sea justa, nos comparamos con las siguientes líneas de base:
BM25 (un modelo tradicional basado en tf-idf)
ELSER (un algoritmo de búsqueda comercial proporcionado por Elastic)
all-MiniLM-l6-v2: un popular modelo de transformadores de sentencias de código abierto. Este modelo comparte la misma arquitectura que slate.30m.english.rtrvr, se ha entrenado con más datos sin licencias comerciales. Para más detalles, consulte la ficha del modelo huggingface
E5-base: un reciente modelo de transformador de código abierto con muy buen rendimiento en el benchmark BEIR. Se trata de un modelo de tamaño base, que tiene la misma arquitectura que slate.125m.english.rtrvr. [Referencia: Wang et.al., 2022: Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Tarjeta modelo Huggingface
E5-small: un modelo más pequeño dentro de la familia E5 de código abierto. La dimensión de incrustación de este modelo coincide con la de slate.30m.rtrvr (384) sin embargo tiene 12 capas, y por lo tanto es más grande y ligeramente más lento. [Referencia: Wang et.al., 2022: Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Tarjeta modelo Huggingface
BGE-base: un reciente modelo de transformador de código abierto con uno de los mejores rendimientos en la prueba de referencia BEIR para el tamaño de incrustación 768. Tarjeta modelo Huggingface
BGE-small: un reciente modelo de transformador de código abierto con uno de los mejores resultados en la prueba de referencia BEIR para el tamaño de incrustación 384. Tarjeta modelo Huggingface
También comparamos el rendimiento de estos modelos con las versiones antiguas de los modelos de pizarra, slate.125m.english.rtrvr-012024 y slate.30m.english.rtrvr-012024.
Nuestra referencia de evaluación: BEIR(ficha de recuperación de MTEB)
La referencia BEIR consta de 15 tareas de recuperación de código abierto evaluadas en un entorno de disparo cero. BEIR se centró en la Diversidad, incluyendo nueve tareas de recuperación diferentes: Comprobación de hechos, predicción de citas, recuperación de preguntas duplicadas, recuperación de argumentos, recuperación de noticias, respuesta a preguntas, recuperación de tweets, RI biomédica y recuperación de entidades. Además, incluye conjuntos de datos de diversos dominios textuales, conjuntos de datos que abarcan temas amplios (como Wikipedia) y temas especializados (como COVID-19), diferentes tipos de texto (artículos de noticias frente a Tweets), conjuntos de datos de diferentes tamaños (3.6k - 15M documentos), y conjuntos de datos con diferentes longitudes de consulta (longitud media de consulta entre 3 y 192 palabras) y longitudes de documento (longitud media de documento entre 11 y 635 palabras). BEIR utiliza la métrica de ganancia acumulada normalizada de descuento (en concreto, nDCG@10) para la evaluación.
Largo NQ
Long NQ es un conjunto de datos IBM diseñado para evaluar toda la cadena RAG, basado en un subconjunto del conjunto de datos NaturalQuestions. El dev set tiene 300 preguntas con respuesta y un corpus de 178.891 pasajes de 2.345 documentos de Wikipedia. Long NQ también proporciona pasajes de Wikipedia de oro que son relevantes para cada pregunta. Durante la recuperación, la tarea consiste en obtener el pasaje de oro pertinente del corpus para cada pregunta.
Resultados
Modelo | BEIR-15 (NDCG@10) |
---|---|
BM25 | 42.02 |
ELSER | 49.01 |
all-miniLM-L6-v2 | 41.95 |
ES-small-v2 | 49.04 |
ES-base-v2 | 50.29 |
BGE-pequeño | 51.68 |
Base BGE | 53.25 |
slate.30m.english.rtrvr 01.20.2024 | 46.91 |
slate.125m.english.rtrvr-01.20.2024 | 49.37 |
slate.30m.english.rtrvr 06.30.2024 | 49.06 |
slate.125m.english.rtrvr-06.30.2024 | 51.26 |
Figura 2. Comparación del rendimiento en la prueba de referencia BEIR (pestaña de recuperación MTEB)
Modelo | LONGNQ (NDCG@10) |
---|---|
all-miniLM-L6-v2 | 58.10 |
BGE-pequeño | 59.33 |
Base BGE | 61.29 |
ES-small-v2 | 61.88 |
ES-base-v2 | 63.80 |
slate.30m.english.rtrvr 01.20.2024 | 59.94 |
slate.125m.english.rtrvr-01.20.2024 | 65.01 |
slate.30m.english.rtrvr 06.30.2024 | 62.07 |
slate.125m.english.rtrvr-06.30.2024 | 66.80 |
Figura 3. Comparación de resultados en el conjunto de datos Long NQ
Rendimiento en tiempo de ejecución
El tiempo de ejecución del rendimiento se mide en una tarea de reordenación con 466 consultas. Para cada consulta, volvemos a clasificar los top-100 pasajes obtenidos por BM25 e informamos del tiempo medio de todas las consultas. El reordenamiento se realizó en una GPU A100_40GB.
Modelo | Tiempo/consulta |
---|---|
all-miniLM-L6-v2 | 0.18 seg |
E5-small | 0.33 seg |
E5-base | 0.75 seg |
BGE-pequeño | 0.34 seg |
Base BGE | 0.75 seg |
slate.125m.english.rtrvr | 0.71 seg |
slate.30m.english.rtrvr | 0.20 seg |