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.
- Desenvolvedores: Equipe de incorporação Granite, IBM
- Repositório GitHub : ibm-granite/granite-embedding-models
- Site : Granite Docs
- Papel: Em breve
- Data de lançamento : 18th de dezembro de 2024
- Licença: Apache 2.0
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.
| 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.
| 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:
| 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
- Saiba mais sobre as últimas atualizações do Granite : site do IBM Granite
- Comece com tutoriais, práticas recomendadas e conselhos de engenharia imediatos: Documentação IBM Granite
- Saiba mais sobre os recursos de aprendizado mais recentes Granite : Desenvolvedor IBM