Depuis son introduction en 2018, Bert a transformé le traitement du langage naturel. Il fonctionne bien dans des tâches comme l'analyse des sentiments, la réponse aux questions et l'inférence du langage. En utilisant une formation bidirectionnelle et une auto-attention à base de transformateurs, Bert a introduit une nouvelle façon de comprendre les relations entre les mots dans le texte. Cependant, malgré son succès, Bert a des limites. Il lutte contre l'efficacité de calcul, la gestion des textes plus longs et la fourniture d'interprétabilité. Cela a conduit au développement de Modernbert, un modèle conçu pour relever ces défis. Modernbert améliore la vitesse de traitement, gère mieux les textes plus longs et offre plus de transparence pour les développeurs. Dans cet article, nous explorerons comment utiliser Modernbert pour l'analyse des sentiments, mettant en évidence ses caractéristiques et ses améliorations par rapport à Bert.
Objectif d'apprentissage
- Brief Introduction à Bert et pourquoi Modernbert a vu le jour
- Comprendre les caractéristiques de Modernbert
- Comment mettre en œuvre pratiquement Modernbert via l'exemple d'analyse des sentiments
- Limites de Modernbert
Cet article a été publié dans le cadre du Data Science Blogathon.
Table des matières
- Qu'est-ce que Bert?
- Qu'est-ce que Modernbert?
- Bert vs Modernbert
- Comprendre les fonctionnalités de Modernbert
- Analyse des sentiments en utilisant Modernbert
- Fréquerie des limites de moderne
- Conclusion
- Fréquence des limites de moderne
Fréquence des limites de Modernbert
Questions
Qu'est-ce que Bert?
Bert, qui signifie Bidirectional Encoder Representations de Transformers, change la donne depuis son introduction par Google en 2018. Bert a introduit le concept de formation bidirectionnelle qui a permis au modèle de comprendre le contexte en regardant les mots environnants dans toutes les directions. Cela a conduit à des performances considérablement meilleures des modèles pour un certain nombre de tâches PNL, notamment la réponse aux questions, l'analyse des sentiments et l'inférence du langage. L'architecture de Bert est basée sur des transformateurs uniquement en encodeur, qui utilisent des mécanismes d'auto-agencement pour peser l'influence de différents mots dans une phrase et n'ont que des encodeurs. Cela signifie qu'ils ne comprennent et codent que l'entrée, et ne reconstruisent ni ne générent de sortie. Ainsi, Bert est excellent pour capturer des relations contextuelles dans le texte, ce qui en fait l'un des modèles NLP les plus puissants et les plus largement adoptés ces dernières années. Qu'est-ce que Modernbert? Malgré le succès révolutionnaire de Bert, il a certaines limites. Certains d'entre eux sont:
- Ressources de calcul: BERTIS Un modèle à forte intensité de mémoire coûteux en calcul, qui interdit les applications en temps réel ou pour les configurations qui n'ont pas une infrastructure informatique accessible et puissante.
- Longueur de contexte: Bert a une fenêtre de contexte de longueur fixe qui devient une limitation dans la gestion des entrées à longue portée comme des documents longs.
- Interprétabilité: la complexité du modèle le rend moins interprétable que les modèles plus simples, conduisant à des défis dans le débogage et la réalisation des modifications du modèle.
- Raisonnement de bon sens: Bert manque de raisonnement de bon sens et de lutter pour comprendre le contexte, les nuances et le raisonnement logique au-delà des informations données.
Bert vs Modernbert
BERT | ModernBERT |
It has fixed positional embeddings | It uses Rotary Positional Embeddings (RoPE) |
Standard self-attention | Flash Attention for improved efficiency |
It has fixed-length context windows | It can support longer contexts with Local-Global Alternating Attention |
Complex and less interpretable | Improved interpretability |
Primarily trained on English text | Primarily trained on English and code data |
Modernbert aborde ces limitations en incorporant des algorithmes plus efficaces tels que l'attention du flash et l'attention alternative locale-globale , qui optimiser la consommation de la mémoire et améliore la vitesse de traitement. De plus, Modernbert introduit des améliorations pour gérer plus efficacement les longueurs de contexte plus longues en intégrant des techniques telles que incorporation de position rotative (corde) pour prendre en charge les longueurs de contexte plus longues.
Il améliore l'interprétabilité en visant à être plus transparent et convivial, ce qui permet aux développeurs de déboguer et d'adapter plus facilement le modèle à des tâches spécifiques. En outre, Modernbert intègre des progrès dans le raisonnement de bon sens, ce qui lui permet de mieux comprendre le contexte, les nuances et les relations logiques au-delà des informations explicites fournies. Il convient aux GPU communs comme NVIDIA T4, A100 et RTX 4090.
Modernbert est formé sur les données provenant de diverses sources anglaises, notamment des documents Web, du code et des articles scientifiques. Il est formé sur 2 billions de jetons uniques, contrairement aux répétitions standard 20-40 populaires dans les encodeurs précédents.
Il est publié dans les tailles suivantes:
- Modernbert-base qui a 22 couches et 149 millions de paramètres
- Modernbert-Gargo qui compte 28 couches et 395 millions de paramètres
Comprendre les caractéristiques de Modernbert
certaines des caractéristiques uniques de Modernbert sont:
Flash Attention
Il s'agit d'un nouvel algorithme développé pour accélérer le mécanisme d'attention des modèles de transformateurs en termes de temps et d'utilisation de la mémoire. Le calcul de l'attention peut être accéléré en réorganisant les opérations et en utilisant le carrelage et la recomputation. Le carrelage aide à décomposer de grandes données en morceaux gérables, et Recomputation réduit l'utilisation de la mémoire en recalculant les résultats intermédiaires au besoin. Cela réduit l'utilisation de la mémoire quadratique jusqu'à la linéaire, ce qui le rend beaucoup plus efficace pour les séquences longues. La surcharge de calcul réduit. Il est 2-4x plus rapide que les mécanismes d'attention traditionnels. L'attention des flashs est utilisée pour accélérer l'entraînement et l'inférence des modèles de transformateurs.
Attention alternative locale-globale
L'une des caractéristiques les plus nouvelles de Modernbert est l'attention alternée, plutôt que l'attention mondiale complète.
- L'entrée complète n'est suivie qu'après chaque troisième couche. C'est une attention mondiale.
- En attendant, toutes les autres couches ont une fenêtre coulissante. Dans cette fenêtre coulissante, chaque jeton s'occupe uniquement de ses 128 jetons les plus proches. C'est l'attention locale.
incorporations de position rotative (corde)
Les incorporations de positionnt rotatives (corde) sont une technique de modèle de transformateur qui code la position des jetons dans une séquence à l'aide de matrices de rotation. Il intègre des informations positionnelles absolues et relatives, ajustant le mécanisme d'attention pour comprendre l'ordre et la distance entre les jetons. La corde code la position absolue des jetons à l'aide d'une matrice de rotation et prend également note des informations de position relatives ou de l'ordre et de la distance entre les jetons.
Unpadding et séquençage
Unfadding et l'emballage de séquence sont des techniques conçues pour optimiser la mémoire et l'efficacité de calcul.
- Habituellement, le rembourrage est utilisé pour trouver le jeton le plus long, ajouter des jetons de rembourrage sans signification pour remplir le reste des séquences plus courtes pour égaler leurs longueurs. Cela augmente le calcul sur les jetons dénués de sens. Undedding supprime les jetons de rembourrage inutiles des séquences, réduisant le calcul gaspillé.
- Emballage de séquence réorganise les lots de texte en formes compactes, regroupant des séquences plus courtes pour maximiser l'utilisation du matériel.
Analyse des sentiments utilisant Modernbert
Mise en œuvre de l'analyse des sentiments en utilisant pratiquement Modernbert. Nous allons effectuer une tâche d'analyse des sentiments à l'aide de Modernbert. L'analyse des sentiments est un type spécifique de tâche de classification du texte qui vise à classer le texte (ex. Revues) en positif ou négatif.
L'ensemble de données que nous utilisons est un ensemble de données IMDB Movie pour classer les avis en sentiments positifs ou négatifs.
Remarque:
- J'ai utilisé un GPU A100 pour un traitement plus rapide sur Google Colab. Pour plus d'informations, reportez-vous à: ResponseDotai / Modernbert-Base .
- Le processus de formation aura besoin d'une clé API WANDB. Vous pouvez en créer un via: poids et biais.
Étape 1: Installez les bibliothèques nécessaires
Installez les bibliothèques nécessaires pour travailler avec des transformateurs de face étreintes.
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Étape 2: Chargez l'ensemble de données IMDB à l'aide de la fonction LOAD_DATASET
La commande IMDB [«test»] [0] imprimera le premier échantillon dans la répartition du test de l'ensemble de données de revue de film IMDB, c'est-à-dire la première revue de test avec son étiquette associée.
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]
Étape 3: Tokenisation
Okenize l'ensemble de données à l'aide de tokenizer à base moderne-bases prélevés. Ce processus convertit le texte en entrées numériques adaptées au modèle.La commande «tokeniszed_test_dataset [0]» imprimera le premier échantillon de l'ensemble de données de test de tokenisé, y compris les entrées de tokenisés telles que les ID d'entrée et les étiquettes.
#initialize the tokenizer and the model tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base") #define the tokenizer function def tokenizer_function(example): return tokenizer( example["text"], padding="max_length", truncation=True, max_length=512, ## max length can be modified return_tensors="pt" ) #tokenize training and testing data set based on above defined tokenizer function tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True) tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True) #print the tokenized output of first test sample print(tokenized_test_dataset[0])
Étape 4: Initialisez le modèle de base moderne pour la classification des sentiments
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Étape 5: Préparez les ensembles de données
Préparez les ensembles de données en renommant la colonne (étiquette) des étiquettes de sentiment aux «étiquettes» et en supprimant les colonnes inutiles.
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]
Étape 6: Définissez les mesures de calcul
Utilisons F1_Score comme métrique pour évaluer notre modèle. Nous définirons une fonction pour traiter les prévisions d'évaluation et calculer leur score F1. Cela nous compare les prédictions du modèle par rapport aux véritables étiquettes.
#initialize the tokenizer and the model tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base") #define the tokenizer function def tokenizer_function(example): return tokenizer( example["text"], padding="max_length", truncation=True, max_length=512, ## max length can be modified return_tensors="pt" ) #tokenize training and testing data set based on above defined tokenizer function tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True) tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True) #print the tokenized output of first test sample print(tokenized_test_dataset[0])
Étape 7: Définissez les arguments de formation
Définissez les hyperparamètres et autres configurations pour affiner le modèle en utilisant des arguments de formation de Face. Comprenons quelques arguments:
- Train_bsz, Val_bsz : indique la taille du lot pour la formation et la validation. La taille du lot détermine le nombre d'échantillons traités avant que les paramètres internes du modèle ne soient mis à jour.
- LR : Le taux d'apprentissage contrôle l'ajustement des poids du modèle par rapport au gradient de perte.
- bétas : Ce sont les paramètres bêta de l'optimiseur Adam.
- n_pochs : nombre d'époches, indiquant une passe complète à travers l'ensemble de données de formation.
- EPS : Une petite constante ajoutée au dénominateur pour améliorer la stabilité numérique dans l'optimiseur ADAM.
- wd : signifie la désintégration du poids, une technique de régularisation pour empêcher le sur-ajustement en pénalisant de gros poids.
#initialize the model config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForSequenceClassification.from_config(config)
Étape 8: formation du modèle
Utilisez la classe des formateurs pour effectuer le processus de formation et d'évaluation du modèle.
#data preparation step - train_dataset = tokenized_train_dataset.remove_columns(['text']).rename_column('label', 'labels') test_dataset = tokenized_test_dataset.remove_columns(['text']).rename_column('label', 'labels')
Étape 9: Évaluation
Évaluer le modèle formé sur le test de l'ensemble de données.
import numpy as np from sklearn.metrics import f1_score # Metric helper method def compute_metrics(eval_pred): predictions, labels = eval_pred predictions = np.argmax(predictions, axis=1) score = f1_score( labels, predictions, labels=labels, pos_label=1, average="weighted" ) return {"f1": float(score) if score == 1 else score}
Étape 10: Enregistrez le modèle affiné
Enregistrez le modèle et le jetons affinés pour une réutilisation supplémentaire.
#define training arguments train_bsz, val_bsz = 32, 32 lr = 8e-5 betas = (0.9, 0.98) n_epochs = 2 eps = 1e-6 wd = 8e-6 training_args = TrainingArguments( output_dir=f"fine_tuned_modern_bert", learning_rate=lr, per_device_train_batch_size=train_bsz, per_device_eval_batch_size=val_bsz, num_train_epochs=n_epochs, lr_scheduler_type="linear", optim="adamw_torch", adam_beta1=betas[0], adam_beta2=betas[1], adam_epsilon=eps, logging_strategy="epoch", eval_strategy="epoch", save_strategy="epoch", load_best_model_at_end=True, bf16=True, bf16_full_eval=True, push_to_hub=False, )
Étape 11: Prédire le sentiment de la revue
Ici: 0 indique une revue négative et 1 indique une revue positive. Pour mon nouvel exemple, la sortie doit être [0,1] car l'ennui indique une revue négative (0) et la spectaculaire indique une opinion positive, donc 1 sera donnée comme sortie.
#Create a Trainer instance trainer = Trainer( model=model, # The pre-trained model args=training_args, # Training arguments train_dataset=train_dataset, # Tokenized training dataset eval_dataset=test_dataset, # Tokenized test dataset compute_metrics=compute_metrics, # Personally, I missed this step, my output won't show F1 score )
Limites de Modernbert
Alors que Modernbert apporte plusieurs améliorations par rapport à Bert traditionnel, il a encore certaines limites:
- Biais de données de formation: Il est formé sur les données de l'anglais et du code, donc elle ne peut donc pas fonctionner aussi efficacement sur d'autres langues ou un texte non code.
- Complexité : Les améliorations architecturales et les nouvelles techniques telles que l'attention du flash et les incorporations de position rotative ajoutent de la complexité au modèle, ce qui peut le rendre plus difficile à mettre en œuvre et à affiner pour des tâches spécifiques.
- Vitesse d'inférence : Bien que l'attention du flash améliore la vitesse d'inférence, en utilisant la fenêtre de jeton complète de 8 192 peut être encore plus lente.
Conclusion
Modernbert prend la fondation de Bert et l'améliore avec un traitement plus rapide, une meilleure gestion des textes longs et une interprétabilité améliorée. Bien qu'il soit toujours confronté à des défis tels que la formation du biais des données et de la complexité, il représente un saut significatif dans la PNL. Modernbert ouvre de nouvelles possibilités de tâches comme l'analyse des sentiments et la classification du texte, ce qui rend la compréhension avancée de la langue plus efficace et accessible.
Les plats clés
- Modernbert améliore Bert en résolvant des problèmes tels que l'inefficacité et la gestion limitée du contexte.
- Il utilise l'attention du flash et les incorporations de positionnelles rotatives pour un traitement plus rapide et un support de texte plus long.
- Modernbert est idéal pour les tâches comme l'analyse des sentiments et la classification du texte.
- Il a encore certaines limites, comme le biais envers les données de l'anglais et du code.
- Les outils tels que les étreintes et le wandb le facilitent la mise en œuvre et l'utilisation.
Références:
- Blog de Modernbert
- Documentation de Moderbert
Le média présenté dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur.
Les questions fréquemment posées
Q1. Que sont les architectures d'encodeur uniquement?ANS. Ans. Les architectures de l'encodeur traitent les séquences d'entrée sans générer de séquences de sortie, en se concentrant sur la compréhension et le codage de l'entrée.
Q2. Quelles sont les limites de Bert?Ans. Certaines limites de Bert comprennent des ressources de calcul élevées, une longueur de contexte fixe, une inefficacité, une complexité et un manque de raisonnement de bon sens.
Q3. Qu'est-ce que le mécanisme d'attention?Ans. Un mécanisme d'attention est une technique qui permet au modèle de se concentrer sur des parties spécifiques de l'entrée pour déterminer quelles pièces sont plus ou moins importantes.
Q4. Qu'est-ce que l'attention alternée?Ans. Ce mécanisme alterne entre se concentrer sur les contextes locaux et globaux dans les séquences de texte. L'attention locale met en évidence des mots ou des phrases adjacents, la collecte d'informations à grain fin, tandis que l'attention globale reconnaît les modèles et les relations globaux à travers le texte.
Q5. Que sont les intérêts du potentiel rotatif? En quoi sont-ils différents des incorporations positionnelles fixes?ANS. Contrairement aux incorporations de position de position fixe, qui ne capturent que les positions absolues, les intérêts de position rotatif (corde) utilisent des matrices de rotation pour coder à la fois des positions absolues et relatives. La corde fonctionne mieux avec des séquences étendues.
Q6. Quelles sont les applications potentielles de Modernbert?Ans. Certaines applications de Modernbert peuvent être dans les domaines de la classification du texte, de l'analyse des sentiments, de la réponse aux questions, de la reconnaissance de l'entité nommée, de l'analyse juridique du texte, de la compréhension du code, etc.
Q7. De quoi et pourquoi l'API WANDB est-elle nécessaire?ANS. Les poids et biais (W&B) sont une plate-forme pour suivre, visualiser et partager des expériences ML. Il aide à suivre les mesures du modèle, à visualiser les données de l'expérience, à partager les résultats et plus encore. Il aide à surveiller les mesures comme la précision, à visualiser les progrès, à régler les hyperparamètres, à garder une trace des versions du modèle, etc.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

L'IA rationalise la récupération des incendies de forêt Le logiciel AI de la société de technologie australienne Archistar, utilisant l'apprentissage automatique et la vision par ordinateur, automatise l'évaluation des plans de construction de conformité aux réglementations locales. Cette signification de pré-validation

Le gouvernement numérique de l'Estonie: un modèle pour les États-Unis? Les États-Unis luttent contre les inefficacités bureaucratiques, mais l'Estonie offre une alternative convaincante. Cette petite nation possède un gouvernement de près de 100% numérisé et centré sur les citoyens alimentés par l'IA. Ce n'est pas

Planifier un mariage est une tâche monumentale, souvent écrasante même les couples les plus organisés. Cet article, qui fait partie d'une série Forbes en cours sur l'impact de l'IA (voir le lien ici), explore comment l'IA génératrice peut révolutionner la planification de mariage. Le mariage PL

Les entreprises exploitent de plus en plus les agents de l'IA pour les ventes, tandis que les gouvernements les utilisent pour diverses tâches établies. Cependant, les défenseurs des consommateurs mettent en évidence la nécessité pour les individus de posséder leurs propres agents d'IA comme une défense contre les

Google mène ce changement. Sa fonction "AI AperSews" sert déjà plus d'un milliard d'utilisateurs, fournissant des réponses complètes avant que quiconque clique sur un lien. [^ 2] D'autres joueurs gagnent également du terrain rapidement. Chatgpt, Microsoft Copilot et PE

En 2022, il a fondé la startup de défense de l'ingénierie sociale Doppel pour faire exactement cela. Et alors que les cybercriminels exploitent des modèles d'IA de plus en plus avancés pour turbuler leurs attaques, les systèmes d'IA de Doppel ont aidé les entreprises à les combattre à grande échelle - plus rapidement et

Le tour est joué, via l'interaction avec les modèles mondiaux appropriés, l'IA et les LLM génératives peuvent être considérablement stimulées. Parlons-en. Cette analyse d'une percée innovante de l'IA fait partie de ma couverture de colonne Forbes en cours sur la dernière IA, y compris

La fête du Travail 2050. Les parcs à travers le pays se remplissent de familles bénéficiant de barbecues traditionnelles tandis que les défilés nostalgiques vont dans les rues de la ville. Pourtant, la célébration porte désormais une qualité de musée - une reconstitution historique plutôt que la commémoration de C


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dreamweaver Mac
Outils de développement Web visuel
