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 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â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.

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 Se reposer 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.