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

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
Hugging Face a simplifié le travail avec les LLM en proposant :
- Une gamme de modèles pré-entraînés parmi lesquels choisir.
- Des outils et des exemples pour affiner ces modèles à vos besoins spécifiques.
- 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 :
- 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.
- 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.
- 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
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.
- 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é.
- 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.

















