Tarjeta modelo Granite Embedding 107m Multilingüe
El modelo granite-embedding-107m-multilingual es un modelo de incrustación biencodificador denso de 107M parámetros de la suite Granite Embeddings que puede utilizarse para generar incrustaciones de texto de alta calidad. Este modelo produce vectores de incrustación de tamaño 384 y se entrena utilizando una combinación de conjuntos de datos de pares de relevancia de código abierto con licencia permisiva y apta para empresas, y conjuntos de datos recopilados y generados IBM. Este modelo se desarrolla utilizando el ajuste contrastivo, la destilación de conocimientos y la fusión de modelos para mejorar el rendimiento.
- Desarrolladores: Equipo Granite Embedding, IBM
- Repositorio GitHub : ibm-granite/granite-embedding-models
- Sitio web : Granite Docs
- Papel: Próximamente
- Fecha de publicación : 18th diciembre de 2024
- Licencia: Apache 2.0
Idiomas soportados
Inglés, alemán, español, francés, japonés, portugués, árabe, checo, italiano, coreano, neerlandés y chino. Los usuarios pueden ajustar el modelo granite-embedding-107m-multilingual para idiomas distintos de estos 12.
Uso previsto
El modelo está diseñado para producir representaciones vectoriales de longitud fija para un texto dado, que pueden utilizarse para aplicaciones de similitud, recuperación y búsqueda de textos.
Uso con transformadores de frases
El modelo es compatible con la biblioteca SentenceTransformer y es muy fácil de usar:
En primer lugar, instale la biblioteca de transformadores de sentencias.
pip install sentence_transformers
A continuación, el modelo puede utilizarse para codificar pares de textos y hallar la similitud entre sus representaciones.
from sentence_transformers import SentenceTransformer, util
model_path = "ibm-granite/granite-embedding-107m-multilingual"
# Load the Sentence Transformer model
model = SentenceTransformer(model_path)
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."
]
# encode queries and passages
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
# calculate cosine similarity
print(util.cos_sim(query_embeddings, passage_embeddings))
Uso con transformadores Huggingface
Este es un ejemplo sencillo de cómo utilizar el modelo granite-embedding-107m-multilingual con la librería Transformers y PyTorch.
En primer lugar, instale las bibliotecas necesarias.
pip install transformers torch
A continuación, el modelo puede utilizarse para codificar pares de texto.
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "ibm-granite/granite-embedding-107m-multilingual"
# Load the model and tokenizer
model = AutoModel.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.eval()
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define'
]
# tokenize inputs
tokenized_queries = tokenizer(input_queries, padding=True, truncation=True, return_tensors='pt')
# encode queries
with torch.no_grad():
# Queries
model_output = model(**tokenized_queries)
# Perform pooling. granite-embedding-107m-multilingual uses CLS Pooling
query_embeddings = model_output[0][:, 0]
# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)
Evaluación
A continuación se muestra el rendimiento medio del modelo granite-embedding-107m-multilingual en Miracl multilingüe (18 idiomas), Mintaka Retrieval (8 idiomas) y MTEB Retrieval para inglés (15 tareas), alemán (4 tareas), español (2 tareas), francés (5 tareas), japonés (2 tareas), árabe (1 tarea), coreano (1 tarea) y chino (8 tareas). El modelo granite-embedding-107m-multilingual es dos veces más rápido que otros modelos con dimensiones de incrustación similares.
Modelo | Parámetros (M) | Dimensión de incrustación | Miracl (18) | Recuperación de Mintaka (8) | MTEB Inglés (15) | MTEB Alemán (4) | MTEB Español (2) | MTEB Francés (5) | MTEB Japonés (2) | MTEB Árabe (1) | MTEB Coreano (1) | MTEB Chino (8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
granite-embedding-107m-multilingual | 107 | 384 | 55.9 | 22.6 | 45.3 | 70.3 | 48.7 | 51.1 | 59.0 | 63.2 | 70.5 | 40.8 |
Arquitectura modelo
El modelo granite-embedding-107m-multilingual se basa en una arquitectura de transformadores XLM-RoBERTa similar a la del codificador, entrenada internamente en IBM Research.
Modelo | granite-embedding-30m-english | granite-embedding-125m-english | granite-embedding-107m-multilingual | granite-embedding-278m-multilingual |
---|---|---|---|---|
Tamaño de incrustación | 384 | 768 | 384 | 768 |
Número de capas | 6 | 6 | 6 | 6 |
Número de cabezas de atención | 6 | 6 | 12 | 6 |
Tamaño intermedio | 1536 | 3072 | 1536 | 3072 |
Función de activación | GeLU | GeLU | GeLU | GeLU |
Tamaño del vocabulario | 50265 | 50265 | 250002 | 250002 |
Máx. Longitud de secuencia | 512 | 512 | 512 | 512 |
Número de parámetros | 30M | 125M | 107M | 278M |
Datos de entrenamiento
En general, los datos de formación proceden de cuatro fuentes principales: (1) datos emparejados título-cuerpo no supervisados extraídos de la web, (2) datos emparejados disponibles públicamente con licencia permisiva y de uso empresarial, (3) datos emparejados IBM orientados a dominios técnicos específicos y (4) datos sintéticos IBM. Los datos figuran a continuación:
Conjunto de datos | Num. Pares |
---|---|
Multilingüe MC4 | 52,823,484 |
Webhose multilingüe | 12,369,322 |
Wikipedia en inglés | 20,745,403 |
Wikimedia multilingüe | 2,911,090 |
Miracl Corpus (Título-Cuerpo) | 10,120,398 |
Stack Exchange Preguntas duplicadas (títulos) | 304,525 |
Stack Exchange Preguntas duplicadas (títulos) | 304,525 |
Stack Exchange Preguntas duplicadas (cuerpos) | 250,519 |
Traducciones automáticas de preguntas duplicadas de Stack Exchange (títulos) | 187,195 |
Stack Exchange (Título, Respuesta) pares | 4,067,139 |
Stack Exchange (Título, Cuerpo) pares | 23,978,013 |
Stack Exchange (Título, Cuerpo) pares | 23,978,013 |
Traducciones automáticas de pares Stack Exchange (Título+Cuerpo, Respuesta) | 1,827,15 |
SearchQA | 582,261 |
S2ORC (Título, Resumen) | 41,769,185 |
WikiAnswers Preguntas duplicadas | 77,427,422 |
CCNoticias | 614,664 |
XSum | 226,711 |
SimpleWiki | 102,225 |
Corpus multilingües paralelos traducidos automáticamente | 28,376,115 |
Trillizos de citas SPECTER | 684,100 |
Traducciones automáticas de tripletas de citas SPECTER | 4,104,600 |
Preguntas naturales (NQ) | 100,231 |
SQuAD2.0 | 87,599 |
HotpotQA | 85.000 |
Fiebre | 109,810 |
PubMed | 20 000 000 |
Triples multilingües Miracl | 81,409 |
Triples multilingües MrTydi | 48,715 |
Sadeeem Pregunta Asnwering | 4,037 |
DBPedia Pares título-cuerpo | 4,635,922 |
Sintética: Pasaje en inglés de Query-Wikipedia | 1,879,093 |
Sintética: Verificación de hechos en inglés | 9,888 |
Sintética: Pasaje multilingüe de consulta-Wikipedia | 300,266 |
Sintética: Resúmenes multilingües de noticias | 37,489 |
Triples internos IBM | 40,290 |
Pares título-cuerpo internos de IBM | 1,524,586 |
En particular, no utilizamos el popular conjunto de datos de recuperación MS-MARCO en nuestro corpus de entrenamiento debido a su licencia no comercial, mientras que otros modelos de código abierto se entrenan en este conjunto de datos debido a su alta calidad.
Infraestructura
Entrenamos los modelos Granite Embedding utilizando el cluster de computación de IBM, Cognitive Compute Cluster, que está equipado con GPUs NVIDIA A100 80gb. Este clúster proporciona una infraestructura escalable y eficiente para entrenar nuestros modelos en múltiples GPU.
Consideraciones éticas y limitaciones
Los datos en inglés utilizados para entrenar el modelo lingüístico base se filtraron para eliminar los textos que contenían odio, insultos y blasfemias.
Recursos
- Más información sobre las últimas actualizaciones de Granite : sitio web IBM Granite
- Empiece con tutoriales, prácticas recomendadas y consejos de ingeniería: Documentación de IBM Granite
- Conozca los últimos recursos de aprendizaje Granite : Desarrollador IBM