talon Guide complet du débutant sur les outils LLM Hugging Face - Unite.AI
Suivez nous sur

Outils IA 101

Guide complet du débutant sur les outils LLM Hugging Face

mm
Le kit de préparation mis à jour on
VISAGE Câlin - GUIDE COMPLET

Hugging Face est un laboratoire et une plateforme de recherche en IA qui a bâti une communauté d'universitaires, de chercheurs et de passionnés. En peu de temps, Hugging Face a acquis une présence substantielle dans le domaine de l'IA. Géants de la technologie dont Google, Amazon et Nvidia ont soutenu la startup d'IA Hugging Face avec des investissements importants, rendant ainsi sa valorisation 4.5 milliard de dollars.

Dans ce guide, nous présenterons les transformateurs, les LLM et comment la bibliothèque Hugging Face joue un rôle important dans la promotion d'une communauté d'IA open source. Nous présenterons également les fonctionnalités essentielles de Hugging Face, notamment les pipelines, les ensembles de données, les modèles, etc., avec des exemples pratiques de Python.

Transformateurs en PNL

En 2017, l’Université Cornell a publié un article influent présentant transformateurs. Ce sont des modèles d’apprentissage profond utilisés en PNL. Cette découverte a alimenté le développement de grands modèles de langage comme ChatGPT.

Les grands modèles de langage ou LLM sont des systèmes d'IA qui utilisent des transformateurs pour comprendre et créer du texte de type humain. Cependant, la création de ces modèles est coûteuse, nécessitant souvent des millions de dollars, ce qui limite leur accessibilité aux grandes entreprises.

Étreindre le visage, lancé en 2016, vise à rendre les modèles PNL accessibles à tous. Bien qu'il s'agisse d'une société commerciale, elle propose une gamme de ressources open source aidant les personnes et les organisations à construire et à utiliser des modèles de transformateurs à moindre coût. L'apprentissage automatique consiste à apprendre aux ordinateurs à effectuer des tâches en reconnaissant des modèles, tandis que l'apprentissage profond, un sous-ensemble de l'apprentissage automatique, crée un réseau qui apprend de manière indépendante. Les transformateurs sont un type d'architecture d'apprentissage profond qui utilise les données d'entrée de manière efficace et flexible, ce qui en fait un choix populaire pour créer de grands modèles de langage en raison des exigences de temps de formation moindres.

Comment Hugging Face facilite les projets PNL et LLM

Écosystème Hugging Face - Modèles, ensembles de données, métriques, transformateurs, accélérations, tokeniseurs

Hugging Face a simplifié le travail avec les LLM en proposant :

  1. Une gamme de modèles pré-entraînés parmi lesquels choisir.
  2. Des outils et des exemples pour affiner ces modèles à vos besoins spécifiques.
  3. Options de déploiement faciles pour divers environnements.

Une excellente ressource disponible via Hugging Face est le Classement ouvert LLM. Fonctionnant comme une plate-forme complète, elle surveille, classe et évalue systématiquement l'efficacité d'un éventail de modèles linguistiques étendus (LLM) et de chatbots, fournissant ainsi une analyse approfondie des avancées dans le domaine open source.

LLM Benchmarks mesure les modèles à travers quatre mesures :

  • Défi de raisonnement AI2 (25 plans) – une série de questions autour du programme de sciences élémentaires.
  • HellaSwag (10 plans) – un test d'inférence de bon sens qui, bien que simple pour les humains, cette métrique constitue un défi important pour les modèles de pointe.
  • MMLU (5 plans) — une évaluation à multiples facettes abordant la maîtrise d'un modèle de texte dans 57 domaines divers, englobant les mathématiques de base, le droit et l'informatique, entre autres.
  • AQ véridique (0-shot) — un outil pour vérifier la tendance d'un modèle à faire écho à la désinformation en ligne fréquemment rencontrée.

Les benchmarks, qui sont décrits à l'aide de termes tels que « 25-shot », « 10-shot », « 5-shot » et « 0-shot », indiquent le nombre d'exemples rapides qu'un modèle est donné au cours du processus d'évaluation. pour évaluer ses performances et ses capacités de raisonnement dans divers domaines. Dans les paradigmes « quelques plans », les modèles reçoivent un petit nombre d'exemples pour les aider à guider leurs réponses, tandis que dans un contexte « 0-shot », les modèles ne reçoivent aucun exemple et doivent s'appuyer uniquement sur leurs connaissances préexistantes pour répondre de manière appropriée. .

Composants du visage câlin

Pipelines

'pipelines' font partie de la bibliothèque de transformateurs de Hugging Face, une fonctionnalité qui facilite l'utilisation des modèles pré-entraînés disponibles dans le référentiel Hugging Face. Il fournit une API intuitive pour un éventail de tâches, notamment l'analyse des sentiments, la réponse aux questions, la modélisation du langage masqué, la reconnaissance d'entités nommées et la synthèse.

Les pipelines intègrent trois composants centraux de Hugging Face :

  1. Générateur de jetons: prépare votre texte pour le modèle en le convertissant dans un format que le modèle peut comprendre.
  2. Modèle: Il s'agit du cœur du pipeline où les prédictions réelles sont effectuées sur la base des entrées prétraitées.
  3. Post-processeur: Transforme les prédictions brutes du modèle en une forme lisible par l'homme.

Ces pipelines réduisent non seulement le codage fastidieux, mais offrent également une interface conviviale pour accomplir diverses tâches NLP.

Applications Transformer utilisant la bibliothèque Hugging Face

L'un des points forts de la bibliothèque Hugging Face est la bibliothèque Transformers, qui simplifie les tâches de PNL en connectant un modèle aux étapes de pré et post-traitement nécessaires, rationalisant ainsi le processus d'analyse. Pour installer et importer la bibliothèque, utilisez les commandes suivantes :

pip install -q transformers
from transformers import pipeline

Cela fait, vous pouvez exécuter des tâches PNL en commençant par l'analyse des sentiments, qui classe le texte en sentiments positifs ou négatifs. La puissante fonction pipeline() de la bibliothèque sert de plate-forme englobant d'autres pipelines et facilitant les applications spécifiques à des tâches dans les domaines de l'audio, de la vision et du multimodal.

Applications pratiques

Classification du texte

La classification de texte devient un jeu d'enfant avec la fonction pipeline() de Hugging Face. Voici comment lancer un pipeline de classification de texte :

classifier = pipeline("text-classification")

Pour une expérience pratique, introduisez une chaîne ou une liste de chaînes dans votre pipeline pour obtenir des prédictions, qui peuvent être clairement visualisées à l'aide de la bibliothèque Pandas de Python. Vous trouverez ci-dessous un extrait Python démontrant ceci :

sentences = ["I am thrilled to introduce you to the wonderful world of AI.",
"Hopefully, it won't disappoint you."]
# Get classification results for each sentence in the list
results = classifier(sentences)
# Loop through each result and print the label and score
for i, result in enumerate(results):
print(f"Result {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")

Sortie

Result 1: 
Label: POSITIVE 
Score: 1.0 
Result 2: 
Label: POSITIVE 
Score: 0.996 

Reconnaissance des entités nommées (NER)

NER joue un rôle essentiel dans l'extraction du texte d'objets du monde réel appelés « entités nommées ». Utilisez le pipeline NER pour identifier efficacement ces entités :

ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk is the CEO of SpaceX."
outputs = ner_tagger(text)
print(outputs)

Sortie

 Elon Musk: PER, SpaceX: ORG 

Question Répondant

La réponse aux questions consiste à extraire des réponses précises à des questions spécifiques dans un contexte donné. Initialisez un pipeline de questions-réponses et saisissez votre question et votre contexte pour obtenir la réponse souhaitée :

reader = pipeline("question-answering")
text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016."
question = "Where is Hugging Face based?"
outputs = reader(question=question, context=text)
print(outputs)

Sortie

 {'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} 

La fonction de pipeline de Hugging Face offre une gamme de pipelines prédéfinis pour différentes tâches, outre la classification de texte, le NER et la réponse aux questions. Vous trouverez ci-dessous des détails sur un sous-ensemble de tâches disponibles :

Tableau : Tâches du pipeline Câlins de visage

TâcheDescriptionIdentificateur de pipeline
Génération de texteGénérer du texte en fonction d'une invite donnéepipeline (tâche = "génération de texte")
RécapitulationRésumer un long texte ou documentpipeline(tâche=”résumé”)
Classification d'imageÉtiqueter une image d'entréepipeline (tâche = "classification d'images")
Classification audioCatégoriser les données audiopipeline(tâche=”audio-classification”)
Réponse visuelle aux questionsRépondez à une requête en utilisant à la fois une image et une questionpipeline(tâche=”vqa”)

 

Pour des descriptions détaillées et plus de tâches, reportez-vous au documentation du pipeline sur le site Web de Hugging Face.

Pourquoi Hugging Face se concentre sur Rust

Étreignant le visage Safetensors et tokenizer Rust

Câlins de visage Safetensors et tokenizer Page GitHub

L'écosystème Hugging Face (HF) a commencé à utiliser Rust dans ses bibliothèques telles que les capteurs de sécurité et les tokeniseurs.

Hugging Face a également publié très récemment un nouveau framework d'apprentissage automatique appelé Massage à la bougie. Contrairement aux frameworks traditionnels qui utilisent Python, Candle est construit avec Rust. L'objectif de l'utilisation de Rust est d'améliorer les performances et de simplifier l'expérience utilisateur tout en prenant en charge les opérations GPU.

L'objectif clé de Candle est de faciliter l'inférence sans serveur, en rendant possible le déploiement de binaires légers et en supprimant Python des charges de travail de production, ce qui peut parfois ralentir les processus en raison de ses frais généraux. Ce framework constitue une solution pour surmonter les problèmes rencontrés avec les frameworks d'apprentissage automatique complets comme PyTorch qui sont volumineux et lents lors de la création d'instances sur un cluster.

Voyons pourquoi Rust devient un choix privilégié bien plus que Python.

  1. Vitesse et performance – Rust est connu pour sa vitesse incroyable, surpassant Python, traditionnellement utilisé dans les frameworks d’apprentissage automatique. Les performances de Python peuvent parfois être ralenties en raison de son Global Interpreter Lock (GIL), mais Rust n'est pas confronté à ce problème, promettant une exécution plus rapide des tâches et, par la suite, des performances améliorées dans les projets où il est implémenté.
  2. Sécurité – Rust offre des garanties de sécurité de la mémoire sans garbage collector, un aspect essentiel pour assurer la sécurité des systèmes concurrents. Cela joue un rôle crucial dans des domaines tels que les tenseurs de sécurité, où la sécurité dans la gestion des structures de données est une priorité.

Safetenseurs

Safetenseurs bénéficiez des fonctionnalités de vitesse et de sécurité de Rust. Safetensors implique la manipulation de tenseurs, une entité mathématique complexe, et le fait d'avoir Rust garantit que les opérations sont non seulement rapides, mais également sécurisées, évitant ainsi les bogues courants et les problèmes de sécurité qui pourraient résulter d'une mauvaise gestion de la mémoire.

Générateur de jetons

Tokeniseurs gérer la décomposition de phrases ou d'expressions en unités plus petites, telles que des mots ou des termes. Rust facilite ce processus en accélérant le temps d'exécution, garantissant que le processus de tokenisation est non seulement précis mais également rapide, améliorant ainsi l'efficacité des tâches de traitement du langage naturel.

Au cœur du tokenizer de Hugging Face se trouve le concept de tokenisation de sous-mots, établissant un équilibre délicat entre la tokenisation au niveau des mots et des caractères pour optimiser la rétention des informations et la taille du vocabulaire. Il fonctionne grâce à la création de sous-jetons, tels que « ##ing » et « ##ed », conservant la richesse sémantique tout en évitant un vocabulaire trop volumineux.

La tokenisation des sous-mots implique une phase de formation pour identifier l'équilibre le plus efficace entre la tokenisation au niveau des caractères et des mots. Cela va au-delà des simples règles de préfixe et de suffixe, nécessitant une analyse complète des modèles linguistiques dans de vastes corpus de textes pour concevoir un tokeniseur de sous-mots efficace. Le tokenizer généré est capable de gérer des mots nouveaux en les décomposant en sous-mots connus, maintenant ainsi un niveau élevé de compréhension sémantique.

Composants de tokenisation

La bibliothèque tokenizers divise le processus de tokenisation en plusieurs étapes, chacune abordant une facette distincte de la tokenisation. Examinons ces composants :

  • Normalizer: Prend les transformations initiales sur la chaîne d'entrée, en appliquant les ajustements nécessaires tels que la conversion en minuscules, la normalisation Unicode et la suppression.
  • PréTokenizer: Responsable de la fragmentation de la chaîne d'entrée en pré-segments, déterminant les divisions en fonction de règles prédéfinies, telles que les délimitations des espaces.
  • Modèle: Supervise la découverte et la création de sous-jetons, s'adaptant aux spécificités de vos données d'entrée et offrant des capacités de formation.
  • Post-processeur: Améliore les fonctionnalités de construction pour faciliter la compatibilité avec de nombreux modèles basés sur des transformateurs, comme BERT, en ajoutant des jetons tels que [CLS] et [SEP].

Pour démarrer avec les tokenizers Hugging Face, installez la bibliothèque à l'aide de la commande pip install tokenizers et importez-le dans votre environnement Python. La bibliothèque peut symboliser de grandes quantités de texte en très peu de temps, économisant ainsi de précieuses ressources informatiques pour des tâches plus intensives telles que la formation de modèles.

La bibliothèque de tokenizers utilise Calme qui hérite de la similarité syntaxique du C++ tout en introduisant de nouveaux concepts dans la conception des langages de programmation. Couplé aux liaisons Python, il vous garantit de profiter des performances d'un langage de niveau inférieur tout en travaillant dans un environnement Python.

Jeux de données

Les ensembles de données sont le fondement des projets d’IA. Hugging Face propose une grande variété d'ensembles de données, adaptés à une gamme de tâches de PNL, et bien plus encore. Pour les utiliser efficacement, il est essentiel de comprendre le processus de chargement et d’analyse. Vous trouverez ci-dessous un script Python bien commenté montrant comment explorer les ensembles de données disponibles sur Hugging Face :

from datasets import load_dataset
# Load a dataset
dataset = load_dataset('squad')
# Display the first entry
print(dataset[0])

Ce script utilise la fonction load_dataset pour charger l'ensemble de données SQuAD, qui est un choix populaire pour les tâches de réponse aux questions.

Tirer parti des modèles pré-entraînés et rassembler le tout

Les modèles pré-entraînés constituent l'épine dorsale de nombreux projets d'apprentissage profond, permettant aux chercheurs et aux développeurs de relancer leurs initiatives sans repartir de zéro. Hugging Face facilite l'exploration d'une gamme diversifiée de modèles pré-entraînés, comme indiqué dans le code ci-dessous :

from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Load the pre-trained model and tokenizer
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Display the model's architecture
print(model)

Une fois le modèle et le tokenizer chargés, nous pouvons maintenant procéder à la création d'une fonction qui prend un morceau de texte et une question comme entrées et renvoie la réponse extraite du texte. Nous utiliserons le tokenizer pour traiter le texte et la question saisis dans un format compatible avec le modèle, puis nous alimenterons cette entrée traitée dans le modèle pour obtenir la réponse :

def get_answer(text, question):
    # Tokenize the input text and question
    inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True)
    outputs = model(**inputs)
    # Get the start and end scores for the answer
    answer_start = torch.argmax(outputs.start_logits)
    answer_end = torch.argmax(outputs.end_logits) + 1
    answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][answer_start:answer_end]))
    return answer

Dans l'extrait de code, nous importons les modules nécessaires du package Transformers, puis chargeons un modèle pré-entraîné et son tokenizer correspondant à l'aide de la méthode from_pretrained. Nous choisissons un modèle BERT affiné sur le jeu de données SQuAD.

Voyons un exemple de cas d'utilisation de cette fonction où nous avons un paragraphe de texte et que nous souhaitons en extraire une réponse spécifique à une question :

text = """
The Eiffel Tower, located in Paris, France, is one of the most iconic landmarks in the world. It was designed by Gustave Eiffel and completed in 1889. The tower stands at a height of 324 meters and was the tallest man-made structure in the world at the time of its completion.
"""
question = "Who designed the Eiffel Tower?"
# Get the answer to the question
answer = get_answer(text, question)
print(f"The answer to the question is: {answer}")
# Output: The answer to the question is: Gustave Eiffel

Dans ce script, nous construisons une fonction get_answer qui prend un texte et une question, les symbolise de manière appropriée et exploite le modèle BERT pré-entraîné pour extraire la réponse du texte. Il démontre une application pratique de la bibliothèque de transformateurs de Hugging Face pour créer un système de questions-réponses simple mais puissant. Pour bien appréhender les concepts, il est recommandé de faire une expérimentation pratique à l'aide d'un Bloc-notes Google Colab.

Conclusion

Grâce à sa vaste gamme d'outils open source, de modèles pré-entraînés et de pipelines conviviaux, il permet aux professionnels chevronnés et aux nouveaux arrivants de se plonger dans le vaste monde de l'IA avec un sentiment de facilité et de compréhension. De plus, l'initiative d'intégrer Rust, en raison de ses fonctionnalités de vitesse et de sécurité, souligne l'engagement de Hugging Face à favoriser l'innovation tout en garantissant l'efficacité et la sécurité des applications d'IA. Le travail transformateur de Hugging Face démocratise non seulement l'accès aux outils d'IA de haut niveau, mais nourrit également un environnement collaboratif pour l'apprentissage et le développement dans l'espace de l'IA, facilitant ainsi un avenir où l'IA est accessible à tous.

J'ai passé les cinq dernières années à m'immerger dans le monde fascinant du Machine Learning et du Deep Learning. Ma passion et mon expertise m'ont amené à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique du langage naturel, un domaine que j'ai hâte d'explorer davantage.