IBM slate-30m-english-rtrvr-v2 carte modèle
Version 2.0.1 Date : 30/06/2024
Description du modèle
Le modèle slate.30m.english.rtrvr est un modèle standard de transformateurs de phrases basé sur des bi-encodeurs. Le modèle produit une intégration pour une entrée donnée, par exemple une requête, un passage, un document, etc. À un niveau élevé, notre modèle est formé pour maximiser la similarité en cosinus entre deux morceaux de texte d'entrée, par exemple le texte A (texte de requête) et le texte B (texte de passage), qui se traduisent par les enchâssements de phrases q et p. Ces enchâssements de phrases peuvent ensuite être comparés à l'aide de la similarité cosinusienne.
Figure 1 : Modèle d'intégration à deux encodeurs pour la recherche d'information
Modèle de langue de base
Le modèle linguistique (LM) sous-jacent pour nos enregistrements est “slate.30m.english”. Il a la même architecture qu'un modèle de transformateur small-RoBERTa (6 couches) et a ~30 millions de paramètres et une dimension d'intégration de 384. Plus précisément, “slate.30m.english” a été distillé à partir de “slate.125m.english” (anciennement, WatBERT). Notre modèle final s'appelle slate.30m.english.rtrvr. Remarquez le suffixe à la fin qui indique que nous affinons l'architecture du modèle sous-jacent pour les tâches basées sur la recherche.
Algorithme de formation
La plupart des modèles d'intégration qui sont soit à la pointe de la technologie, soit en tête du classement MTEB, sont généralement formés en trois étapes :
- Pré-entraînement spécifique à la tâche (basé sur la récupération)
- Ajustement spécifique à la tâche sur les paires extraites
- Ajustement des paires supervisées. Nous suivons une approche similaire, en combinant les deux dernières étapes en une seule étape de réglage fin.
slate.30m.english.rtrvr est produit par distillation du modèle “slate.125m.english.rtrvr-06-30-2024” lors de l'étape de mise au point (les détails du modèle de l'enseignant plus grand se trouvent à cet endroit). La distillation des connaissances transfère les connaissances d'un modèle enseignant très performant vers un modèle élève plus petit en entraînant la distribution de probabilité de sortie de l'élève pour qu'elle corresponde le plus possible à celle de l'enseignant, ce qui améliore les performances de l'élève par rapport à un réglage fin autonome.
Pré-entraînement spécifique à une tâche
Cette étape utilise le cadre RetroMAE, pour rendre notre LM sous-jacente plus orientée vers la recherche. Nous initialisons notre LM de base avec “slate.30m.english” et poursuivons avec RetroMAE le pré-entraînement, en utilisant les données du tableau 1. Ici, au lieu d'utiliser uniquement les étiquettes des données, nous distillons également les prédictions de l'encodeur RetroMAE utilisé par slate.125m.english.rtrvr. Nos hyperparamètres sont les suivants : taux d'apprentissage : 2e-5, nombre de pas : 435000, GPUs : 8 A100 (80GB) GPUs.
Remarque : il s'agit de notre LM de base pour les deux étapes suivantes.
Distillation à l'aide de paires non supervisées et supervisées
Nous utilisons un cadre bi-encodeur pour l'apprentissage d'un modèle d'intégration, comme le montre la figure 1. Nous initialisons avec le modèle pré-entraîné RetroMAE, et employons ensuite la distillation de connaissances avec des paires de textes <requête, passage> en utilisant un objectif de pertecontrastive avec des négatifs en lot. La distillation des connaissances entraîne la distribution des probabilités de sortie de l'étudiant pour qu'elle corresponde le plus possible à celle de l'enseignant. Dans le contexte des modèles de recherche, la distribution de sortie est constituée des scores de similarité entre les paires de textes. Plus précisément, pour chaque paire de phrases < requête, passage>, la distribution des scores de l'enseignant entre les intégrations de requête et passage, c'est-à-dire la similarité cosinus entre les intégrations, est distillée dans l'étudiant.
Le professeur utilisé pour la distillation est le modèle "slate.125m.english.rtrvr” entraîné sur les mêmes données que celles mentionnées ci-dessous. Le modèle de l'enseignant a été formé à l'aide d'un paradigme en plusieurs étapes où un modèle prétraîné RetroMAE a vu des données non supervisées lors de la phase de préformation, puis a été affiné sur des données plus propres, extraites ou étiquetées avec de l'or pendant quelques centaines d'étapes. Pour garantir la robustesse des ensembles de données, ce modèle ajusté a ensuite été fusionné avec un autre modèle formé avec différents hyperparamètres sur les mêmes données. Pour plus de détails, veuillez vous référer à la carte modèle slate.125m.english.rtrvr.
Le flux de transfert de connaissances est illustré à la figure 2.
Figure 2. Distillation des connaissances
Nous extrayons des paires à grande échelle de différents domaines, comme indiqué dans la section Données d'entraînement. En outre, nous incluons également des paires de haute qualité pour la tâche d'extraction sur les ensembles de données suivants : SQuAD, Questions naturelles, Specter, paires Stack Exchange (Titre, Corps), S2ORC, SearchQA, HotpotQA, Fever, et Miracl. Pour ces ensembles de données supervisés, nous incluons également les Hard Negatives extraits avec une version précédente du modèle slate.125m.english.rtrvr. En outre, nous générons synthétiquement des triples pour créer des paires de bonne qualité de questions-réponses, de vérifications factuelles, etc. en utilisant `Mixtral-8x7B-Instruct-v0.1`. Afin d'améliorer les performances pour les cas d'utilisation spécifiques à IBM, nous incluons également des paires créées à partir de IBM Software Support data et IBM Docs.
Les hyperparamètres de distillation sont les suivants : apprentissage rate:7e-4, nombre d'étapes : 500000, taille effective du lot : 2048, GPUs : 4 A100_80GB GPUs.
Données d'entraînement
Ensemble de données | Passages |
---|---|
Wikipédia | 36396918 |
Corpus de livres | 3401308 |
Stack Exchange | 15999837 |
Ensemble de données | Paires |
---|---|
Triplets de citation SPECTER | 684100 |
Stack Exchange Questions en double (titres) | 304525 |
Stack Exchange Questions en double (corps) | 250519 |
Stack Exchange Questions en double (titres+corps) | 250460 |
Questions naturelles (NQ) | 100231 |
SQuAD2.0 | 87599 |
Paires PAQ (Question, Réponse) | 64371441 |
Paires Stack Exchange (Titre, Réponse) | 4067139 |
Paires Stack Exchange (Titre, Corps) | 23978013 |
Paires Stack Exchange (Titre+Corps, Réponse) | 187195 |
S2ORC Paires de citations (titres) | 52603982 |
S2ORC (Titre, Résumé) | 41769185 |
S2ORC_citations_abstracts | 52603982 |
WikiAnswers Paires de questions dupliquées | 77427422 |
SearchQA | 582261 |
HotpotQA | 85000 |
Fièvre | 109810 |
Arxiv | 2358545 |
Wikipédia | 20745403 |
PubMed | 20000000 |
Miracl En Paires | 9016 |
Paires titre-corps DBPedia | 4635922 |
Synthétique : Passage Query-Wikipedia | 1879093 |
Synthétique : Vérification des faits | 9888 |
IBM : Le support logiciel triple | 40290 |
IBM : IBM Docs (Titre-Corps) | 474637 |
IBM : IBM Soutien (Titre-Corps) | 1049949 |
Utilisation
# make sure you’ve sentence transformers installed
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('path_to_slate_model')
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."]
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
print(util.cos_sim(query_embeddings, passage_embeddings))
La longueur maximale de la séquence de ce modèle est de 512 jetons.
Évaluation
Lignes de base
Pour une comparaison équitable, nous comparons avec les lignes de base suivantes :
BM25 (un modèle traditionnel basé sur tf-idf)
ELSER (un algorithme de recherche commercial fourni par Elastic)
all-MiniLM-l6-v2: un modèle populaire de transformateur de phrases à source ouverte. Ce modèle partage la même architecture que slate.30m.english.rtrvr, et a été entraîné sur un plus grand nombre de données sans licence commerciale. Pour plus de détails, veuillez consulter la carte modèle du visage de câlin
E5-base: un modèle de transformateur open-source récent avec de très bonnes performances sur le benchmark BEIR. Il s'agit d'un modèle de base, qui a la même architecture que slate.125m.english.rtrvr. [Référence : Wang et.al..., 2022 : Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Carte modèle Huggingface
E5-small: un modèle plus petit au sein de la famille E5 open source. La dimension d'encastrement de ce modèle correspond à celle de slate.30m.rtrvr (384), mais il comporte 12 couches et est donc plus grand et légèrement plus lent. [Référence : Wang et.al..., 2022 : Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Carte modèle Huggingface
BGE-base : un modèle de transformateur à source ouverte récent qui présente l'une des meilleures performances sur le benchmark BEIR pour une taille d'intégration de 768. Carte modèle Huggingface
BGE-small : un modèle de transformateur à source ouverte récent qui présente l'une des meilleures performances sur le benchmark BEIR pour la taille d'intégration 384. Carte modèle Huggingface
Nous comparons également les performances de ces modèles avec les anciennes versions des modèles d'ardoise, slate.125m.english.rtrvr-012024 et slate.30m.english.rtrvr-012024.
Notre évaluation de référence : BEIR(onglet de recherche de MTEB)
Le benchmark BEIR contient 15 tâches d'extraction de sources ouvertes évaluées dans un contexte d'essai zéro. Le BEIR s'est concentré sur la diversité, y compris neuf tâches de recherche différentes : vérification des faits, prédiction des citations, recherche de questions en double, recherche d'arguments, recherche de nouvelles, réponse aux questions, recherche de tweets, RI bio-médicale et recherche d'entités. En outre, il inclut des ensembles de données provenant de divers domaines textuels, des ensembles de données qui couvrent des sujets généraux (comme Wikipedia) et des sujets spécialisés (comme les publications COVID-19), différents types de texte (articles d'actualité vs. Tweets), des ensembles de données de différentes tailles (3.6k - 15M documents), et des ensembles de données avec différentes longueurs de requêtes (longueur moyenne des requêtes entre 3 et 192 mots) et longueurs de documents (longueur moyenne des documents entre 11 et 635 mots). BEIR utilise l'indicateur Normalized Cumulative Discount Gain (en particulier, nDCG@10) pour l'évaluation.
Long NQ
Long NQ est un IBM ensemble de données conçu pour évaluer l'ensemble du pipeline RAG, basé sur un sous-ensemble de l'ensemble de données NaturalQuestions. L'ensemble de démonstration comprend 300 questions auxquelles il est possible de répondre et un corpus de 178 891 passages tirés de 2 345 documents Wikipédia. Long NQ fournit également des passages de Wikipédia en or qui sont pertinents pour chaque question. Lors de la recherche, il s'agit d'obtenir le passage en or pertinent du corpus pour chaque question.
Résultats
Modèle | BEIR-15 (NDCG@10) |
---|---|
BM25 | 42.02 |
ELSER | 49.01 |
all-miniLM-L6-v2 | 41.95 |
ES-small-v2 | 49.04 |
ES-base-v2 | 50.29 |
BGE-petit | 51.68 |
BGE-base | 53.25 |
slate.30m.english.rtrvr 01.20.2024 | 46.91 |
slate.125m.english.rtrvr-01.20.2024 | 49.37 |
slate.30m.english.rtrvr 06.30.2024 | 49.06 |
slate.125m.english.rtrvr-06.30.2024 | 51.26 |
Figure 3 Comparaison des performances sur le benchmark BEIR (onglet de recherche MTEB)
Modèle | LONGNQ (NDCG@10) |
---|---|
all-miniLM-L6-v2 | 58.10 |
BGE-petit | 59.33 |
BGE-base | 61.29 |
ES-small-v2 | 61.88 |
ES-base-v2 | 63.80 |
slate.30m.english.rtrvr 01.20.2024 | 59.94 |
slate.125m.english.rtrvr-01.20.2024 | 65.01 |
slate.30m.english.rtrvr 06.30.2024 | 62.07 |
slate.125m.english.rtrvr-06.30.2024 | 66.80 |
Figure 4 Comparaison des performances sur l'ensemble de données Long NQ
Performance d'exécution
La durée d'exécution des performances est mesurée sur une tâche de reclassement comportant 466 requêtes. Pour chaque requête, nous reclassons les top-100 passages obtenus par BM25 et nous indiquons le temps moyen pour toutes les requêtes. Le reclassement a été effectué sur un GPU A100_40GB.
Modèle | Temps/requête |
---|---|
all-miniLM-L6-v2 | 0.18 sec |
E5-small | 0.33 sec |
E5-base | 0.75 sec |
BGE-petit | 0.34 sec |
BGE-base | 0.75 sec |
slate.125m.english.rtrvr | 0.71 sec |
slate.30m.english.rtrvr | 0.20 sec |