Suivez nous sur

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

Outils IA 101

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

mm
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 milliards de dollars.

Dans ce guide, nous présenterons les transformateurs, les LLM et le rôle important de la bibliothèque Hugging Face dans le développement d'une communauté d'IA open source. Nous aborderons également les fonctionnalités essentielles de Hugging Face, notamment les pipelines, les jeux de données, les modèles et bien plus encore, avec des exemples pratiques en 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 coups) — une sĂ©rie de questions sur le programme des sciences Ă©lĂ©mentaires.
  • HellaSwag (10 coups) — un test d'infĂ©rence de bon sens qui, bien que simple pour les humains, constitue un dĂ©fi important pour les modèles de pointe.
  • MMLU (5-shot) — une Ă©valuation multidimensionnelle portant sur la compĂ©tence d'un modèle de texte dans 57 domaines diffĂ©rents, englobant les mathĂ©matiques de base, le droit et l'informatique, entre autres.
  • TruthfulQA (0-shot) — un outil permettant de dĂ©terminer la tendance d'un modèle Ă  faire Ă©cho Ă  la dĂ©sinformation frĂ©quemment rencontrĂ©e en ligne.

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« Fait 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. Elle fournit une API intuitive pour un large Ă©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

Une fois cela fait, vous pouvez exécuter des tâches de traitement du langage naturel (TALN), en commençant par l'analyse des sentiments, qui catégorise le texte en sentiments positifs ou négatifs. La puissante fonction pipeline() de la bibliothèque sert de plateforme englobant d'autres pipelines et facilitant les applications spécifiques aux tâches dans les domaines audio, visuel et multimodal.

Applications pratiques

Classification du texte

La classification de texte devient un jeu d'enfant grâce Ă  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)

Le NER est essentiel pour extraire du texte des objets rĂ©els 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 propose un ensemble 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âche Description Identificateur de pipeline
Génération de texte Générer du texte en fonction d'une invite donnée pipeline (tâche = "génération de texte")
Récapitulation Résumer un long texte ou document pipeline(tâche=”résumé”)
Classification d'image Étiqueter une image d'entrée pipeline (tâche = "classification d'images")
Classification audio Catégoriser les données audio pipeline(tâche=”audio-classification”)
Réponse visuelle aux questions Répondez à une requête en utilisant à la fois une image et une question pipeline(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.

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

  1. Vitesse et performance Rust est réputé pour sa rapidité incroyable, surpassant Python, traditionnellement utilisé dans les frameworks d'apprentissage automatique. Les performances de Python peuvent parfois être ralenties par son verrou d'interpréteur global (GIL), mais Rust ne rencontre pas ce problème, promettant une exécution plus rapide des tâches et, par conséquent, de meilleures performances 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 rapidité et de sécurité de Rust. Safetensors implique la manipulation de tenseurs, une entité mathématique complexe. Utiliser Rust garantit des opérations non seulement rapides, mais aussi sécurisées, évitant ainsi les bugs et problèmes de sécurité courants liés à 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 des sous-mots, trouvant un Ă©quilibre dĂ©licat entre la tokenisation au niveau des mots et des caractères afin d'optimiser la rĂ©tention d'information et la richesse du vocabulaire. Ce système fonctionne grâce Ă  la crĂ©ation de sous-tokens, tels que « ##ing Â» et « ##ed Â», prĂ©servant ainsi la richesse sĂ©mantique tout en Ă©vitant un vocabulaire surchargĂ©.

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 de tokenisation divise le processus de tokenisation en plusieurs Ă©tapes, chacune traitant un aspect spĂ©cifique 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 Se reposer qui hérite de la similarité syntaxique du C++ tout en introduisant de nouveaux concepts dans la conception des langages de programmation. Associé aux liaisons Python, il vous garantit les performances d'un langage de bas niveau 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 nous voulons 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 crĂ©ons une fonction get_answer qui prend un texte et une question, les segmente correctement et exploite le modèle BERT prĂ©-entraĂ®nĂ© pour extraire la rĂ©ponse du texte. Il illustre une application pratique de la bibliothèque Transformers de Hugging Face pour crĂ©er un système de questions-rĂ©ponses simple et performant. Pour bien saisir les concepts, il est recommandĂ© de rĂ©aliser une expĂ©rimentation pratique avec 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, Hugging Face permet aux professionnels chevronnés comme aux novices de se plonger dans le vaste monde de l'IA avec aisance et compréhension. De plus, l'intégration de Rust, grâce à ses fonctionnalités de rapidité 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 favorise également un environnement collaboratif pour l'apprentissage et le développement dans le domaine de l'IA, ouvrant la voie à un avenir où l'IA sera 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.