Scheda modello Granite Embedding 107m multilingue
Il modello granite-embedding-107m-multilingual è un modello di embedding biencoder denso a 107M parametri della suite Granite Embeddings che può essere usato per generare embedding di testo di alta qualità. Questo modello produce vettori di incorporamento di dimensione 384 ed è stato addestrato utilizzando una combinazione di dataset di coppie di rilevanza open source con licenza permissiva e di tipo enterprise-friendly e dataset raccolti e generati IBM. Questo modello è stato sviluppato utilizzando la messa a punto contrastiva, la distillazione della conoscenza e la fusione dei modelli per migliorare le prestazioni.
- Sviluppatori: Team Granite Embedding, IBM
- Repository GitHub : ibm-granite/granite-embedding-models
- Sito web : Granite Docs
- Carta: Prossimamente
- Data di uscita : 18th dicembre 2024
- Licenza: Apache 2.0
Lingue supportate
Inglese, tedesco, spagnolo, francese, giapponese, portoghese, arabo, ceco, italiano, coreano, olandese e cinese. Gli utenti possono regolare con precisione il modello granite-embedding-107m-multilingual per lingue diverse da queste 12 lingue.
Uso previsto
Il modello è progettato per produrre rappresentazioni vettoriali a lunghezza fissa per un dato testo, che possono essere utilizzate per applicazioni di similarità testuale, recupero e ricerca.
Uso con i trasformatori di frasi
Il modello è compatibile con la libreria SentenceTransformer ed è molto facile da usare:
Per prima cosa, installare la libreria dei trasformatori di frasi.
pip install sentence_transformers
Il modello può quindi essere utilizzato per codificare coppie di testi e trovare la somiglianza tra le loro rappresentazioni.
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))
Utilizzo con i trasformatori Huggingface
Questo è un semplice esempio di utilizzo del modello granite-embedding-107m-multilingual con la libreria Transformers e PyTorch.
Per prima cosa, installare le librerie necessarie.
pip install transformers torch
Il modello può quindi essere utilizzato per codificare coppie di testi.
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)
Valutazione
Le prestazioni medie del modello granite-embedding-107m-multilingual su Miracl multilingue (in 18 lingue), Mintaka Retrieval (in 8 lingue) e MTEB Retrieval per l'inglese (in 15 compiti), il tedesco (in 4 compiti), lo spagnolo (in 2 compiti), il francese (in 5 compiti), il giapponese (in 2 compiti), l'arabo (1 compito), il coreano (1 compito) e il cinese (in 8 compiti) sono riportate di seguito. Il modello granite-embedding-107m-multilingual è due volte più veloce di altri modelli con dimensioni di incorporazione simili.
Modello | Parametri (M) | Dimensione di incorporazione | Miracl (18) | Recupero di Mintaka (8) | MTEB Inglese (15) | MTEB Tedesco (4) | MTEB Spagnolo (2) | MTEB Francese (5) | MTEB Giapponese (2) | MTEB Arabo (1) | MTEB Coreano (1) | MTEB Cinese (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 |
Modello di architettura
Il modello granite-embedding-107m-multilingual si basa su un'architettura di trasformatori XLM-RoBERTa di sola codifica, addestrata internamente all' IBM Research.
Modello | granite-embedding-30m-english | granite-embedding-125m-english | granite-embedding-107m-multilingual | granite-embedding-278m-multilingual |
---|---|---|---|---|
Dimensione dell'incorporazione | 384 | 768 | 384 | 768 |
Numero di livelli | 6 | 12 | ERROR! SEGMENT DATA CORRUPTED, SEGDATA=6 | 12 |
Numero di teste di attenzione | 12 | 12 | 12 | 12 |
Dimensione intermedia | 1536 | 3072 | 1536 | 3072 |
Funzione di attivazione | GeLU | GeLU | GeLU | GeLU |
Dimensione del vocabolario | 50265 | 50265 | 250002 | 250002 |
Max. Lunghezza della sequenza | 512 | 512 | 512 | 512 |
Numero di parametri | 30M | 125M | 107M | 278M |
Dati di formazione
In generale, i dati di addestramento sono costituiti da quattro fonti chiave: (1) dati accoppiati titolo-corpo non supervisionati, raccolti dal web, (2) dati accoppiati disponibili pubblicamente con licenza permissiva e di tipo enterprise, (3) dati accoppiati IBM e relativi a domini tecnici specifici e (4) dati sintetici IBM. I dati sono elencati di seguito:
Dataset | Num. Coppie |
---|---|
Multilingua MC4 | 52,823,484 |
Webhose multilingue | 12,369,322 |
Wikipedia inglese | 20,745,403 |
Wikimedia multilingue | 2,911,090 |
Corpus Miracl (Titolo-Corpo) | 10,120,398 |
Stack Exchange Domande duplicate (titoli) | 304,525 |
Stack Exchange Domande duplicate (titoli) | 304,525 |
Stack Exchange Domande duplicate (corpi) | 250,519 |
Traduzioni automatiche delle domande duplicate di Stack Exchange (titoli) | 187,195 |
Scambio di coppie (Titolo, Risposta) | 4,067,139 |
Coppie di scambio (titolo, corpo) | 23,978,013 |
Coppie di scambio (titolo, corpo) | 23,978,013 |
Traduzioni automatiche di coppie di Stack Exchange (Titolo+Corpo, Risposta) | 1,827,15 |
SearchQA | 582,261 |
S2ORC (Titolo, abstract) | 41,769,185 |
WikiAnswers Coppie di domande duplicate | 77,427,422 |
CCNews | 614,664 |
XSum | 226,711 |
SimpleWiki | 102,225 |
Corpora paralleli interlinguistici a traduzione automatica | 28,376,115 |
Tripletta di citazioni SPECTER | 684,100 |
Traduzioni automatiche di terzine di citazioni SPECTER | 4,104,600 |
Domande naturali (NQ) | 100,231 |
SQuAD2.0 | 87,599 |
HotpotQA | 85,000 |
Febbre | 109,810 |
PubMed | 20,000,000 |
Tripli Miracl multilingue | 81,409 |
Trio MrTydi multilingue | 48,715 |
Domanda di Sadeeem Asnwering | 4,037 |
DBPedia Coppie titolo-corpo | 4,635,922 |
Sintetico: Quesito inglese-Passaggio su Wikipedia | 1,879,093 |
Sintetico: Verifica dei fatti in inglese | 9,888 |
Sintetico: Passaggio Query-Wikipedia multilingue | 300,266 |
Sintetico: Riassunti di notizie multilingue | 37,489 |
Triplicazione interna IBM | 40,290 |
Coppie titolo-corpo interne IBM | 1,524,586 |
In particolare, nel nostro corpus di addestramento non utilizziamo il popolare dataset MS-MARCO a causa della sua licenza non commerciale, mentre altri modelli open-source si addestrano su questo dataset a causa della sua alta qualità.
infrastruttura
Addestriamo i modelli di Granite Embedding utilizzando il cluster di calcolo di IBM, Cognitive Compute Cluster, dotato di GPU NVIDIA A100 80gb. Questo cluster fornisce un'infrastruttura scalabile ed efficiente per l'addestramento dei nostri modelli su più GPU.
Considerazioni etiche e limitazioni
I dati in inglese utilizzati per addestrare il modello linguistico di base sono stati filtrati per rimuovere i testi contenenti odio, abusi e bestemmie.
Risorse
- Per conoscere gli ultimi aggiornamenti di Granite : sito web IBM Granite
- Iniziate a lavorare con tutorial, best practice e consigli tecnici immediati: Documentazione IBM Granite
- Scoprite le ultime risorse di apprendimento Granite : Sviluppatore IBM