Outils d’IA 101
Guide complet pour les débutants sur les outils LLM de Hugging Face

Hugging Face est un laboratoire de recherche en intelligence artificielle et un hub qui a créé une communauté de chercheurs, de scientifiques et d’enthousiastes. En un court laps de temps, Hugging Face a acquis une présence importante dans l’espace de l’IA. Les géants de la technologie, notamment Google, Amazon et Nvidia, ont soutenu le démarrage d’IA Hugging Face avec des investissements importants, ce qui porte sa valorisation à 4,5 milliards de dollars.
Dans ce guide, nous allons présenter les transformateurs, les LLM et le rôle important que joue la bibliothèque Hugging Face dans la promotion d’une communauté d’IA open source. Nous allons également parcourir les fonctionnalités essentielles de Hugging Face, notamment les pipelines, les ensembles de données, les modèles et plus encore, avec des exemples pratiques en Python.
Transformateurs en NLP
En 2017, l’Université de Cornell a publié un article influent qui a introduit les transformateurs. Il s’agit de modèles d’apprentissage automatique utilisés en NLP. 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 ressemblant à celui des humains. 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.
Hugging Face, créé en 2016, vise à rendre les modèles NLP accessibles à tous. Bien qu’il s’agisse d’une entreprise commerciale, il propose une gamme de ressources open source pour aider les personnes et les organisations à créer et à utiliser des modèles de transformateurs de manière abordable. L’apprentissage automatique consiste à enseigner 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 efficacement et de manière flexible les données d’entrée, ce qui en fait un choix populaire pour la construction de grands modèles de langage en raison de la moindre durée de formation requise.
Comment Hugging Face facilite les projets NLP et LLM
Hugging Face a simplifié le travail avec les LLM en offrant :
- Une gamme de modèles pré-entraînés à choisir.
- Des outils et des exemples pour affiner ces modèles à vos besoins spécifiques.
- Des options de déploiement faciles pour différents environnements.
Une excellente ressource disponible via Hugging Face est le Open LLM Leaderboard. Fonctionnant comme une plateforme complète, il surveille systématiquement, classe et évalue l’efficacité d’une gamme de grands modèles de langage (LLM) et de chatbots, fournissant une analyse discriminante des progrès dans le domaine open source.
LLM Benchmarks mesure les modèles à l’aide de quatre métriques :
- AI2 Reasoning Challenge (25-shot) — une série de questions autour du programme scientifique élémentaire.
- HellaSwag (10-shot) — 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 multifacette qui touche à la compétence d’un modèle de texte dans 57 domaines divers, englobant les mathématiques de base, le droit et l’informatique, entre autres.
- TruthfulQA (0-shot) — un outil pour déterminer la tendance d’un modèle à répéter les informations erronées souvent rencontrées 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 de prompt que reçoit un modèle lors du processus d’évaluation pour mesurer ses performances et ses capacités de raisonnement dans divers domaines. Dans les paradigmes « few-shot », les modèles reçoivent un petit nombre d’exemples pour guider leurs réponses, tandis que dans un environnement « 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 de Hugging Face
Pipelines
Les « pipelines » font partie de la bibliothèque de transformateurs de Hugging Face, une fonctionnalité qui aide à l’utilisation facile des modèles pré-entraînés disponibles dans le référentiel de Hugging Face. Il fournit une API intuitive pour une gamme de tâches, notamment l’analyse de sentiments, la réponse à des questions, la modélisation de langage masqué, la reconnaissance d’entités nommées et la synthèse.
Les pipelines intègrent trois composants centraux de Hugging Face :
- Tokeniseur : Prépare votre texte pour le modèle en le convertissant dans un format que le modèle peut comprendre.
- Modèle : C’est le cœur du pipeline où les prédictions réelles sont effectuées sur la base des données d’entrée prétraitées.
- Post-processeur : Transforme les prédictions brutes du modèle en une forme lisible par l’homme.
Ces pipelines ne réduisent pas seulement la quantité de code à écrire, mais offrent également une interface utilisateur conviviale pour accomplir diverses tâches NLP.
Applications de transformateurs à l’aide de la bibliothèque Hugging Face
Un point fort de la bibliothèque Hugging Face est la bibliothèque de transformateurs, qui simplifie les tâches NLP en reliant un modèle aux étapes de prétraitement et de 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 NLP en commençant par l’analyse de sentiments, qui catégorise le texte en sentiments positifs ou négatifs. La fonction pipeline() puissante de la bibliothèque sert de centre regroupant d’autres pipelines et facilitant les applications spécifiques à la tâche dans les domaines audio, visuel et multimodal.
Applications pratiques
Classification de texte
La classification de texte devient un jeu d’enfant avec la fonction pipeline() de Hugging Face. Voici comment vous pouvez initier un pipeline de classification de texte :
classifier = pipeline("text-classification")
Pour une expérience pratique, alimentez une chaîne ou une liste de chaînes dans votre pipeline pour obtenir des prédictions, qui peuvent être visualisées de manière élégante à l’aide de la bibliothèque Pandas de Python. Voici un extrait de code Python démontrant cela :
sentences = ["Je suis ravi de vous présenter le merveilleux monde de l'IA.",
"J'espère qu'il ne vous décevra pas."]
# Obtenir les résultats de classification pour chaque phrase de la liste
results = classifier(sentences)
# Boucler à travers chaque résultat et imprimer l'étiquette et le score
for i, result in enumerate(results):
print(f"Résultat {i + 1}:")
print(f" Étiquette : {result['label']}")
print(f" Score : {round(result['score'], 3)}\n")
Sortie
Résultat 1 : Étiquette : POSITIF Score : 1.0 Résultat 2 : Étiquette : POSITIF Score : 0.996
Reconnaissance d’entités nommées (NER)
La reconnaissance d’entités nommées est cruciale pour extraire des objets du monde réel appelés « entités nommées » à partir du texte. Utilisez le pipeline NER pour identifier ces entités de manière efficace :
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk est le PDG de SpaceX."
outputs = ner_tagger(text)
print(outputs)
Sortie
Elon Musk : PER, SpaceX : ORG
Réponse à des questions
La réponse à des questions implique l’extraction de réponses précises à des questions spécifiques à partir d’un contexte donné. Initialisez un pipeline de réponse à des questions et entrez votre question et votre contexte pour obtenir la réponse souhaitée :
reader = pipeline("question-answering")
text = "Hugging Face est une entreprise qui crée des outils pour le NLP. Elle est basée à New York et a été fondée en 2016."
question = "Où est basée Hugging Face ?"
outputs = reader(question=question, context=text)
print(outputs)
Sortie
{ 'score' : 0.998, 'start' : 51, 'end' : 60, 'answer' : 'New York' } La fonction pipeline de Hugging Face propose une gamme de pipelines préconstruits pour différentes tâches, outre la classification de texte, la reconnaissance d’entités nommées et la réponse à des questions. Voici les détails sur un sous-ensemble de tâches disponibles :
Tableau : Tâches de pipeline Hugging Face
| Tâche | Description | Identifiant de pipeline |
| Génération de texte | Générer du texte en fonction d’un prompt donné | pipeline(task=”text-generation”) |
| Synthèse | Résumer un texte ou un document long | pipeline(task=”summarization”) |
| Classification d’images | Étiqueter une image d’entrée | pipeline(task=”image-classification”) |
| Classification audio | Catégoriser des données audio | pipeline(task=”audio-classification”) |
| Réponse à des questions visuelles | Répondre à une question en utilisant à la fois une image et une question | pipeline(task=”vqa”) |
Pour des descriptions détaillées et plus de tâches, reportez-vous à la documentation du pipeline sur le site Web de Hugging Face.
Pourquoi Hugging Face déplace son attention sur Rust
L’écosystème Hugging Face (HF) a commencé à utiliser Rust dans ses bibliothèques telles que safesensors et tokeniseurs.
Hugging Face a récemment publié un nouveau cadre d’apprentissage automatique appelé Candle. Contrairement aux cadres traditionnels qui utilisent Python, Candle est construit avec Rust. L’objectif derrière 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 principal de Candle est de faciliter l’inférence sans serveur, permettant le déploiement de fichiers binaires légers et supprimant Python des charges de travail de production, qui peuvent parfois ralentir les processus en raison de leurs surcharges. Ce cadre vient résoudre les problèmes rencontrés avec les cadres d’apprentissage automatique complets comme PyTorch qui sont grands et lents lors de la création d’instances sur un cluster.
Décomposons pourquoi Rust devient un choix plus populaire que Python.
- Vitesse et performances – Rust est connu pour sa vitesse incroyable, surpassant Python, qui est traditionnellement utilisé dans les cadres d’apprentissage automatique. Les performances de Python peuvent parfois être ralenties en raison de 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 fournit des garanties de sécurité de la mémoire sans collecteur de garbage, un aspect essentiel pour assurer la sécurité des systèmes concurrents. Cela joue un rôle crucial dans des domaines tels que safetensors où la sécurité dans la manipulation des structures de données est une priorité.
Safetensors
Safetensors bénéficient des fonctionnalités de vitesse et de sécurité de Rust. Safetensors implique la manipulation de tenseurs, une entité mathématique complexe, et avoir Rust garantit que les opérations sont non seulement rapides, mais aussi sécurisées, évitant les bogues et les problèmes de sécurité courants qui pourraient découler d’une mauvaise gestion de la mémoire.
Tokeniseur
Tokenizers gèrent la division de phrases ou de phrases en unités plus petites, telles que des mots ou des termes. Rust aide à 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 tokeniseur de Hugging Face se trouve le concept de tokenisation de sous-mots, qui équilibre délicatement la tokenisation de mots et de caractères pour optimiser la conservation d’informations et la taille du vocabulaire. Il fonctionne par la création de sous-mots, tels que « ##ing » et « ##ed », conservant la richesse sémantique tout en évitant un vocabulaire gonflé.
La tokenisation de sous-mots implique une phase d’entraînement pour identifier l’équilibre le plus efficace entre la tokenisation de caractères et de mots. Elle va au-delà des règles de préfixe et de suffixe, nécessitant une analyse approfondie des modèles de langage dans de vastes corpus de texte pour concevoir un tokeniseur de sous-mots efficace. Le tokeniseur généré est capable de gérer des mots nouveaux en les décomposant en sous-mots connus, maintenant un niveau élevé de compréhension sémantique.
Composants de tokenisation
La bibliothèque de tokeniseurs divise le processus de tokenisation en plusieurs étapes, chacune abordant un aspect distinct de la tokenisation. Décomposons ces composants :
- Normaliseur : Effectue des transformations initiales sur la chaîne d’entrée, appliquant les ajustements nécessaires tels que la conversion en minuscules, la normalisation Unicode et le décapage.
- Pré-tokeniseur : 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 d’espace.
- Modèle : Supervise la découverte et la création de sous-mots, s’adaptant aux spécificités de vos données d’entrée et offrant des capacités d’entraînement.
- 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 commencer avec les tokeniseurs de Hugging Face, installez la bibliothèque à l’aide de la commande pip install tokenizers et importez-la dans votre environnement Python. La bibliothèque peut tokeniser de grandes quantités de texte en très peu de temps, économisant ainsi des ressources de calcul précieuses pour des tâches plus intensives comme l’entraînement de modèles.
La bibliothèque de tokeniseurs utilise Rust, qui hérite de la similarité syntaxique de C++ tout en introduisant de nouveaux concepts dans la conception de langages de programmation. Associé à des liaisons Python, il garantit que vous bénéficiez des performances d’un langage de niveau inférieur tout en travaillant dans un environnement Python.
Ensembles de données
Les ensembles de données sont la base des projets d’IA. Hugging Face propose une large gamme d’ensembles de données, adaptés à une gamme de tâches NLP et plus encore. Pour les utiliser efficacement, il est essentiel de comprendre le processus de chargement et d’analyse. Voici un script Python bien commenté démontrant comment explorer les ensembles de données disponibles sur Hugging Face :
from datasets import load_dataset
# Charger un ensemble de données
dataset = load_dataset('squad')
# Afficher la première entrée
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 à des questions.
Exploitation de modèles pré-entraînés et mise en œuvre
Les modèles pré-entraînés forment la colonne vertébrale de nombreux projets d’apprentissage automatique, permettant aux chercheurs et aux développeurs de lancer leurs initiatives sans partir de zéro. Hugging Face facilite l’exploration d’une gamme diversifiée de modèles pré-entraînés, comme le montre le code suivant :
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Charger le modèle et le tokeniseur pré-entraînés
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Afficher l'architecture du modèle
print(model)
Avec le modèle et le tokeniseur chargés, nous pouvons maintenant procéder à la création d’une fonction qui prend un texte et une question comme entrées et retourne la réponse extraite du texte. Nous allons utiliser le tokeniseur pour traiter le texte et la question d’entrée en un format compatible avec le modèle, puis nous allons alimenter ce traitement en entrée dans le modèle pour obtenir la réponse :
def get_answer(text, question): # Tokeniser le texte et la question d'entrée inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Obtenir les scores de début et de fin pour la réponse 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 de transformateurs, puis chargeons un modèle et un tokeniseur pré-entraînés à l’aide de la méthode from_pretrained. Nous choisissons un modèle BERT affiné sur l’ensemble de données SQuAD.
Voyons un exemple d’utilisation de cette fonction où nous avons un paragraphe de texte et nous voulons extraire une réponse spécifique à une question à partir de celui-ci :
text = """
La tour Eiffel, située à Paris, en France, est l'une des attractions les plus emblématiques du monde. Elle a été conçue par Gustave Eiffel et achevée en 1889. La tour s'élève à une hauteur de 324 mètres et était la structure artificielle la plus haute du monde au moment de son achèvement.
"""
question = "Qui a conçu la tour Eiffel ?"
# Obtenir la réponse à la question
answer = get_answer(text, question)
print(f"La réponse à la question est : {answer}")
# Sortie : La réponse à la question est : Gustave Eiffel
Dans ce script, nous construisons une fonction get_answer qui prend un texte et une question, les tokenise correctement, et utilise 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 construire un système de réponse à des questions simple mais puissant. Pour bien comprendre les concepts, il est recommandé de faire des expériences pratiques en utilisant un carnet de notes Google Colab.
Conclusion
Grâce à sa gamme étendue d’outils open source, de modèles pré-entraînés et de pipelines conviviaux, Hugging Face permet aux professionnels chevronnés et aux nouveaux venus de se lancer dans le vaste monde de l’IA avec une sensation 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 à promouvoir l’innovation tout en assurant l’efficacité et la sécurité dans les applications d’IA. Le travail de transformation de Hugging Face non seulement démocratise l’accès à des outils d’IA de haut niveau, mais crée également un environnement collaboratif pour l’apprentissage et le développement dans l’espace d’IA, facilitant un avenir où l’IA est accessible à tous.

















