Le modèle granite-embedding-107m-multilingual est un modèle d'incorporation à biencoder dense de 107M paramètres de la suite Granite Embeddings qui peut être utilisé pour générer des incorporations de texte de haute qualité. Ce modèle produit des vecteurs d'intégration de taille 384 et est entraîné à l'aide d'une combinaison d'ensembles de données de paires de pertinence de source ouverte avec une licence permissive et adaptée aux entreprises, et d'ensembles de données collectés et générés par IBM Ce modèle est développé en utilisant la mise au point contrastive, la distillation des connaissances et la fusion des modèles pour améliorer les performances.
- Développeurs : Équipe Granite Embedding, IBM
- Dépôt GitHub : ibm-granite/granite-embedding-models
- Site web : Granite Docs
- Papier : Bientôt disponible
- Date de sortie : 18th décembre 2024
- Licence : Apache 2.0
Langues prises en charge
Anglais, allemand, espagnol, français, japonais, portugais, arabe, tchèque, italien, coréen, néerlandais et chinois. Les utilisateurs peuvent affiner le modèle granite-embedding-107m-multilingual pour les langues au-delà de ces 12 langues.
Utilisation prévue
Le modèle est conçu pour produire des représentations vectorielles de longueur fixe pour un texte donné, qui peuvent être utilisées pour des applications de similarité, d'extraction et de recherche de texte.
Utilisation avec les transformateurs de phrases
Le modèle est compatible avec la bibliothèque SentenceTransformer et est très facile à utiliser :
Tout d'abord, installez la bibliothèque des transformateurs de phrases.
pip install sentence_transformers
Le modèle peut ensuite être utilisé pour coder des paires de textes et trouver la similarité entre leurs représentations.
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))
Utilisation avec les transformateurs Huggingface
Voici un exemple simple d'utilisation du modèle granite-embedding-107m-multilingual avec la bibliothèque Transformers et PyTorch.
Il faut d'abord installer les bibliothèques nécessaires.
pip install transformers torch
Le modèle peut ensuite être utilisé pour coder des paires de textes.
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)
Évaluation
La performance moyenne du modèle granite-embedding-107m-multilingual sur Miracl multilingue (18 langues), Mintaka Retrieval (8 langues) et MTEB Retrieval pour l'anglais (15 tâches), l'allemand (4 tâches), l'espagnol (2 tâches), le français (5 tâches), le japonais (2 tâches), l'arabe (1 tâche), le coréen (1 tâche) et le chinois (8 tâches) est présentée ci-dessous. Le modèle granite-embedding-107m-multilingual est deux fois plus rapide que les autres modèles ayant des dimensions d'intégration similaires.
Modèle | Paramètres (M) | Dimension d'intégration | Miracl (18) | Récupération de Mintaka (8) | MTEB Anglais (15) | MTEB Allemand (4) | MTEB Espagnol (2) | MTEB Français (5) | MTEB Japonais (2) | MTEB arabe (1) | MTEB Coréen (1) | MTEB Chinois (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 |
Modèle d'architecture
Le modèle granite-embedding-107m-multilingual est basé sur une architecture de transformateur de type XLM-RoBERTa, formé en interne par IBM Research.
Modèle | granite-embedding-30m-english | granite-embedding-125m-english | granite-embedding-107m-multilingual | granite-embedding-278m-multilingual |
---|---|---|---|---|
Taille de l'encastrement | 384 | 768 | 384 | 768 |
Nombre de couches | 6 | 12 | 6 | 12 |
Nombre de têtes d'attention | 12 | 12 | 12 | 12 |
Taille intermédiaire | 1536 | 3072 | 1536 | 3072 |
Fonction d'activation | GeLU | GeLU | GeLU | GeLU |
Taille du vocabulaire | 50265 | 50265 | 250002 | 250002 |
Max. Longueur de la séquence | 512 | 512 | 512 | 512 |
Nombre de paramètres | 30M | 125M | 107M | 278M |
Données d'entraînement
Globalement, les données d'entraînement se composent de quatre sources principales : (1) des données appariées titre-corps non supervisées récupérées sur le web, (2) des données appariées accessibles au public avec une licence permissive et adaptée aux entreprises, (3) des données appariées IBM ciblant des domaines techniques spécifiques, et (4) des données synthétiques IBM Les données sont énumérées ci-dessous :
Ensemble de données | Num. Paires |
---|---|
Multilingue MC4 | 52,823,484 |
Le webhose multilingue | 12,369,322 |
Wikipédia en anglais | 20,745,403 |
Wikimedia multilingue | 2,911,090 |
Corpus Miracl (Titre-Corps) | 10,120,398 |
Stack Exchange Questions en double (titres) | 304,525 |
Stack Exchange Questions en double (titres) | 304,525 |
Stack Exchange Questions en double (corps) | 250,519 |
Traductions automatiques des questions dupliquées de Stack Exchange (titres) | 187,195 |
Paires Stack Exchange (Titre, Réponse) | 4,067,139 |
Paires Stack Exchange (Titre, Corps) | 23,978,013 |
Paires Stack Exchange (Titre, Corps) | 23,978,013 |
Traductions automatiques des paires Stack Exchange (Titre+Corps, Réponse) | 1,827,15 |
SearchQA | 582,261 |
S2ORC (titre, résumé) | 41,769,185 |
WikiAnswers Paires de questions en double | 77,427,422 |
CCNews | 614,664 |
XSum | 226,711 |
SimpleWiki | 102,225 |
Corpora parallèles interlinguistiques traduits à la machine | 28,376,115 |
Triplets de citation SPECTER | 684,100 |
Traductions automatiques des triplets de citations SPECTER | 4,104,600 |
Questions naturelles (NQ) | 100,231 |
SQuAD2.0 | 87,599 |
HotpotQA | 85 000 |
Fièvre | 109,810 |
PubMed | 20 000 000 |
Triples miracles multilingues | 81,409 |
Triples multilingues MrTydi | 48,715 |
Question Sadeeem Asnwering | 4,037 |
Paires titre-corps DBPedia | 4,635,922 |
Synthétique : Passage de l'interrogation anglaise à Wikipédia | 1,879,093 |
Synthétique : Vérification des faits en anglais | 9,888 |
Synthétique : Passage multilingue Query-Wikipedia | 300,266 |
Synthétique : Résumés d'actualité multilingues | 37,489 |
Triples internes IBM | 40,290 |
Paires titre-corps internes IBM | 1,524,586 |
Notamment, nous n'utilisons pas le populaire ensemble de données de recherche MS-MARCO dans notre corpus d'entraînement en raison de sa licence non commerciale, alors que d'autres modèles open-source s'entraînent sur cet ensemble de données en raison de sa haute qualité.
hyper-convergée
Nous formons les modèles d'intégration Granite en utilisant le cluster informatique d' IBM, Cognitive Compute Cluster, qui est équipé de GPU NVIDIA A100 80gb. Ce cluster fournit une infrastructure évolutive et efficace pour l'entraînement de nos modèles sur plusieurs GPU.
Considérations éthiques et limites
Les données anglaises utilisées pour former le modèle linguistique de base ont été filtrées pour supprimer les textes contenant des propos haineux, injurieux et blasphématoires.
Ressources
- Découvrez les dernières mises à jour de Granite : IBM Granite website
- Démarrez avec des tutoriels, les meilleures pratiques et des conseils d'ingénierie rapides : Documentation IBM Granite
- Découvrez les dernières ressources de formation Granite : Développeur IBM