Depuis des années, l’IA suscite un intérêt grandissant avec les performances obtenues grâce à l’apprentissage automatique (Machine Learning) et, plus particulièrement, avec l’apprentissage profond (Deep Learning).
Ces technologies ont joué un rôle décisif dans l’évolution du traitement du langage naturel (NLP). Elles ont contribué à l’automatisation des tâches de NLPles plus courantes à l’instar de la classification des mots et des phrases, la génération de texte, l’extraction de réponse, et la reconnaissance de la parole et de la vision.
Aujourd’hui, il existe plusieurs bibliothèques open source contenant des modèles pré-entraînés permettant aux Data Scientists et aux entreprises d’utiliser des modèles existants afin d’économiser en coûts de calcul et de gagner du temps. Hugging Face est l’une d’entre elles.
À propos de Hugging Face Transformers
Hugging Face transformers est une plateforme destinée à faire progresser l’IA en partageant des collections de modèles et des ensembles de données permettant aux utilisateurs de gérer, partager et développer leurs modèles d’IA. Il s’agit d’une librairie d’apprentissage en profondeur Open Source basée sur Python etoffrant une grande variété de modèles pré-entraînés pour différents types de tâches de NLP. Elle présente une API à utiliser dans de nombreuses architectures de transformateurs pré-entraînées, telles que BERT, GPT-2, DistilBERT, BART ou GPT-3 permettant d’obtenir de très bons résultats sur une variété de tâches NLP comme la classification de texte, la détection d’entités nommées, la génération de texte, etc.
Les transformateurs pré-entraînées de Hugging Face peuvent être regroupés en trois catégories :
- Les transformers autorégressifs (architecture de type GPT) : concentrés sur la prédiction du prochain mot dans la phrase, ils sont adaptés pour les tâches génératives telles que la génération de texte.
- Les transformers auto-encodeurs (architecture de type BERT) : plus adaptés pour des tâches qui requièrent une compréhension complète de l’entrée. Par exemple la classification de phrases, la reconnaissance d’entités nommées et plus généralement la classification de mots.
- Les transformers séquence-à-séquence (architecture de type BART/T5) : les plus adaptés pour les tâches liées à la génération de nouvelles phrases en fonction d’une entrée donnée, comme le résumé de texte, la traduction ou la génération de questions-réponses.
En plus des modèles officiels pré-entraînés, il existe des centaines de modèles de transformateurs de phrases (sentence-transformer) sur le Hugging Face Hub.
Quel est l'intérêt de ces Hugging Face Transformers ?
L’objectif des Transformers est de faciliter le développement des projets d’apprentissage automatique en fournissant des APIs et des outils pour télécharger et entraîner des modèles pré-entraînés. L’utilisation de ces modèles peut réduire les coûts de calcul, et faire économiser le temps et les ressources nécessaires pour former un modèle à partir de zéro. Ils sont rapidement devenus l’architecture dominante pour obtenir des résultats fiables sur une variété de tâches NLP.
Ces modèles prennent en charge des tâches courantes dans différentes modalités :
- Texte : Pour tout ce qui touche à la classification, l’extraction d’informations, la réponse à des questions, la génération, la création et la traduction de texte dans plus de 100 langues différentes.
- Discours : Pour des tâches telles que la classification audio des objets et la reconnaissance vocale.
- Vision : Pour la détection d’objets, la classification d’images et la segmentation.
- Données tabulaires : Pour les problèmes de régression et de classification.
D’autre part, les Transformers prennent en charge l’interopérabilité des frameworks entre PyTorch, TensorFlow et JAX. Cela permet d’utiliser un framework différent à chaque étape de la vie d’un modèle : former un modèle en trois lignes de code dans un framework, et le charger pour l’inférence dans un autre.
Mise en place des Transformers
Dans cette partie, nous allons mettre en pratique les Transformers en découvrant l’outil pipeline, puis nous montrerons comment cet outil facilite l’implémentation des tâches de NLP et de computer vision.
Les Pipelines
Les pipelines sont un moyen simple et efficace pour extraire une grande partie du code complexe de la bibliothèque fournissant une API pour effectuer des inférences sur une variété de tâches, notamment la reconnaissance d’entités nommées, l’analyse des sentiments, la réponse aux questions, etc.
Ils sont utilisés pour encapsuler le processus global de chaque tâche de NLP comme le nettoyage du texte, la tokenisation, l’incorporation, etc.
C’est une fonction simple à utiliser : l’instanciation d’un pipeline se fait via la méthode pipeline(). Il suffit de spécifier la tâche à lancer.
Ci-après, une liste non-exhaustive des pipelines disponibles de la bibliothèque Hugging Face Transformers :
- feature-extraction (pour obtenir la représentation vectorielle d’un texte)
- fill-mask (pour prédire les mots masqués)
- ner (reconnaissance d’entités nommées)
- question-answering (pour répondre aux questions)
- sentiment-analysis (pour analyser les sentiments)
- summarization (pour résumer un texte)
- text-generation (pour produire un nouveau texte)
- translation (pour traduire un texte)
- zero-shot-classification (pour classer de nouveaux exemples à partir de classes inédites)
Génération de Texte
De nos jours, la génération de texte est devenue une tendance avec la publication et l’évolution de ChatGPT. Dans ce contexte, le pipeline nous permet d’utiliser des modèles avancés de génération de texte en une seule ligne de code.
Dans la ligne ci-dessus, nous spécifions le cas d’utilisation que nous souhaitons (génération de texte), et il va automatiquement télécharger le modèle par défaut (dans ce cas GPT-2). Nous pouvons utiliser d’autres versions en spécifiant le paramètre ‘model’.
Maintenant commençons à générer le texte en passant une phrase comme un paramètre.
Dans cet exemple, nous avons posé une question au modèle » Why artificial intelligence ? « .
Le modèle a généré une réponse dans la clé ‘generated_text’, et nous pouvons générer une autre réponse en exécutant le code une autre fois. Cet exemple montre que les Transformers nous aident à mettre en œuvre un chatbot en un temps réduit.
Classification d’Image
La classification d’images est un problème lié à l’apprentissage automatique (Machine Learning). Avec l’API Transformers, il est simple d’acquérir le modèle pour ce problème.
En une ligne, nous avons acquis le modèle Image Classifier. Nous pourrions facilement passer un fichier image de n’importe quelle source pour identifier l’image avec ce modèle.
Par exemple, nous allons passer le lien de l’image au dessous et laisser le modèle la classifier.
La Pipeline nous aide à le faire en une seule ligne de code. Le modèle propose cinq classifications, chacune associée à une probabilité. La première a le plus grand score, nous pouvons donc prendre « voiture de sport » comme prédiction principale et c’est en effet juste.
Cet exemple prouve que nous pouvons mettre en œuvre un modèle sophistiqué en peu de temps et sans avoir de grandes connaissances en IA.
Spécification du modèle dans un pipeline
Dans les exemples précédents nous avons utilisé le modèle par défaut pour la tâche en question, mais il est aussi possible de choisir un modèle particulier du Hub et l’utiliser dans un pipeline pour une tâche spécifique.
Conclusion
Aujourd’hui, Hugging Face Transformers est la bibliothèque logicielle la plus largement adoptée, aussi bien par les débutants que par les professionnels pour les modèles d’apprentissage automatique afin de traiter les tâches NLP. Elle met à la disposition de l’utilisateur un modèle pré-entraîné qui était auparavant inaccessible en raison des exigences techniques.