Cartão de modelo multilíngue Granite Embedding 278m

O modelo granite-embedding-278m-multilingual é um modelo de parâmetro 278M do conjunto Granite Embeddings que pode ser usado para gerar embeddings de texto de alta qualidade. Esse modelo produz vetores de incorporação de tamanho 768 e é treinado usando uma combinação de conjuntos de dados de pares de relevância de código aberto com licença permissiva e amigável para empresas e conjuntos de dados coletados e gerados IBM. Esse modelo é desenvolvido usando o ajuste fino contrastivo, a destilação de conhecimento e a fusão de modelos para melhorar o desempenho.

Idiomas Suportados

Inglês, alemão, espanhol, francês, japonês, português, árabe, tcheco, italiano, coreano, holandês e chinês. Os usuários podem ajustar o Granite-Embedding-278M-Multilingual para idiomas além desses 12 idiomas.

Uso desejado

O modelo foi projetado para produzir representações vetoriais de comprimento fixo para um determinado texto, que podem ser usadas para aplicativos de similaridade de texto, recuperação e pesquisa.

Uso com transformadores de frases

O modelo é compatível com a biblioteca SentenceTransformer e é muito fácil de usar.

Primeiro, instale a biblioteca de transformadores de frases.

pip install sentence_transformers

O modelo pode então ser usado para codificar pares de texto e encontrar a similaridade entre suas representações.

from sentence_transformers import SentenceTransformer, util

model_path = "ibm-granite/granite-embedding-278m-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 com transformadores Huggingface

Este é um exemplo simples de como usar o modelo granite-embedding-278m-multilingual com a biblioteca Transformers e PyTorch.

Primeiro, instale as bibliotecas necessárias.

pip install transformers torch

O modelo pode então ser usado para codificar pares de texto.

import torch
from transformers import AutoModel, AutoTokenizer

model_path = "ibm-granite/granite-embedding-278m-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-278m-multilingual uses CLS Pooling
    query_embeddings = model_output[0][:, 0]

# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)

Avaliação

O desempenho médio do Granite-Embedding-278M-Multilingual no Multilingual Miracl (em 18 idiomas), Mintaka Retrieval (em 8 idiomas) e MTEB Retrieval para inglês (em 15 tarefas), alemão (em 4 tarefas), espanhol (em 2 tarefas), francês (em 5 tarefas), japonês (em 2 tarefas), árabe (1 tarefa), coreano (1 tarefa) e chinês (em 8 tarefas) é relatado abaixo.

Tabela 1. Pontuações de referência para o modelo granite-embedding-278m-multilingual
Modelo Parâmetros (M) Dimensão de incorporação Miracl (18) Recuperação de Mintaka (8) MTEB Inglês (15) MTEB Alemão (4) MTEB Espanhol (2) MTEB Francês (5) MTEB Japonês (2) MTEB Árabe (1) MTEB Coreano (1) Chinês MTEB (8)
granite-embedding-278M-multilingual 278 768 58.3 23.2 48.2 71.2 52.6 54.1 61.7 64.2 71.8 45.2

Arquitetura de modelos

O modelo granite-embedding-278m-multilingual baseia-se em uma arquitetura de transformador do tipo XLM-RoBERTa somente para codificador, treinada internamente na IBM Research.

Tabela 2. Detalhes da arquitetura do modelo de incorporação de Granite
Modelo granite-embedding-30m-english granite-embedding-125m-english granite-embedding-107M-multilingual granite-embedding-278m-multilingual
Tamanho da incorporação 384 768 384 768
Número de camadas 6 12 6 12
Número de cabeças de atenção 12 12 12 12
Tamanho intermediário 1536 3072 1536 3072
Função de ativação GeLU GeLU GeLU GeLU
Tamanho do vocabulário 50265 50265 250002 250002
Máximo. Comprimento da sequência 512 512 512 512
Número de parâmetros 30M 125M 107M 278M

Dados de treinamento

Em geral, os dados de treinamento consistem em quatro fontes principais: (1) dados emparelhados de título-corpo não supervisionados extraídos da Web, (2) dados emparelhados disponíveis publicamente com licença permissiva e amigável à empresa, (3) dados emparelhados IBM direcionados a domínios técnicos específicos e (4) dados sintéticos IBM. Os dados estão listados abaixo:

Tabela 3. Dados de treinamento para o modelo granite-embedding-278m-multilingual
Conjunto de dados Num. Pares
Multilíngue MC4 52,823,484
Webhose multilíngue 12,369,322
Wikipédia em inglês 20,745,403
Wikimedia multilíngue 2,911,090
Miracl Corpus (Título-Corpo) 10,120,398
Stack Exchange Perguntas duplicadas (títulos) 304,525
Stack Exchange Perguntas duplicadas (títulos) 304,525
Stack Exchange Perguntas duplicadas (corpos) 250,519
Traduções automáticas de perguntas duplicadas do Stack Exchange (títulos) 187,195
Pares de Stack Exchange (Título, Resposta) 4,067,139
Pares do Stack Exchange (Título, Corpo) 23,978,013
Pares do Stack Exchange (Título, Corpo) 23,978,013
Traduções automáticas de pares do Stack Exchange (Título+Corpo, Resposta) 1,827,15
SearchQA 582,261
S2ORC (Título, Resumo) 41,769,185
WikiAnswers Pares de perguntas duplicadas 77,427,422
CCNews 614,664
XSum 226,711
SimpleWiki 102,225
Corpora paralelos multilíngues traduzidos por máquina 28,376,115
Tripletos de citações SPECTER 684,100
Traduções automáticas dos tripletos de citação SPECTER 4,104,600
Perguntas naturais (NQ) 100,231
SQuAD2.0 87,599
HotpotQA 85,000
Febre 109,810
PubMed 20,000,000
Triplos multilíngues do Miracl 81,409
Triplas multilíngues MrTydi 48,715
Pergunta de Sadeeem Asnwering 4,037
Pares Título-Corpo da DBPedia 4,635,922
Sintético: Passagem da consulta em inglês para a Wikipédia 1,879,093
Sintético: Verificação de fatos em inglês 9,888
Sintético: Passagem de consulta multilíngue para a Wikipédia 300,266
Sintético: Resumos de notícias multilíngues 37,489
Triplas internas IBM 40,290
Pares título-corpo internos IBM 1,524,586

Notavelmente, não usamos o popular conjunto de dados de recuperação MS-MARCO em nosso corpus de treinamento devido à sua licença não comercial, enquanto outros modelos de código aberto treinam nesse conjunto de dados devido à sua alta qualidade.

Infraestrutura

Treinamos o Granite Embedding Models usando o cluster de computação da IBM, o Cognitive Compute Cluster, que é equipado com GPUs NVIDIA A100 80gb. Esse cluster oferece uma infraestrutura dimensionável e eficiente para treinar nossos modelos em várias GPUs.

Considerações éticas e limitações

Os dados em inglês usados para treinar o modelo de idioma base foram filtrados para remover textos que continham ódio, abuso e palavrões.

Recursos