Comment utiliser Hugging Face 🤗 Transformers et les pipelines

Dans cet article, nous allons voir comment utiliser la bibliothèque de Hugging Face 🤗 Transformers, et notamment les pipelines.

Avec plus de 1 million de modèles hĂ©bergĂ©s, Hugging Face est LA plateforme rĂ©unissant les praticiens de l’Intelligence Artificielle.

Sa librairie 🤗 Transformers donne accès de manière simplifiĂ©e Ă  des modèles de type transformer – entrainĂ© par des experts.

Ainsi, débutants, professionnels et chercheurs peuvent aisément utiliser des modèles de pointe dans leur projet.

Dans un prĂ©cĂ©dent article, tu as pu en savoir plus sur Hugging Face ainsi que sa bibliothèque 🤗 Transformers. Nous avons ainsi explorĂ© le but de l’entreprise et la plus-value qu’elle apporte dans le domaine de l’IA.

Aujourd’hui, tu va dĂ©couvrir comment utiliser concrètement la bibliothèque 🤗 Transformers grâce aux pipelines.

Les Pipelines – Hugging Face 🤗 Transformers

DĂ©finition

Un pipeline dans 🤗 Transformers dĂ©signe un processus oĂą plusieurs Ă©tapes sont suivies dans un ordre prĂ©cis pour obtenir une prĂ©diction Ă  partir d’un modèle.

Glossaire

Ces Ă©tapes peuvent inclure la prĂ©paration des donnĂ©es, l’extraction de features et la normalisation.

Tu peux le considérer comme une boîte à outils 🛠️ qui automatise les tâches complexes pour toi.

Le principal avantage du pipeline est sa simplicitĂ© d’utilisation. Il ne nĂ©cessite qu’une ligne de code pour ĂŞtre chargĂ© et une autre ligne de code pour ĂŞtre utilisĂ©.

🤗 Transformers offre une API claire et intuitive. Ainsi, mĂŞme si tu n’es pas un expert en Machine Learning, tu peux utiliser ces modèles de pointe.

Tu pourras ainsi rĂ©soudre des tâches variĂ©es comme la reconnaissance d’entitĂ©s nommĂ©es (NER), l’analyse de sentiment, la dĂ©tection d’objets, et bien d’autres.

Le pipeline est une abstraction, c’est-Ă -dire que, mĂŞme si, en surface, tu n’utilises qu’une ligne de code, en profondeur, de nombreux leviers seront actionnĂ©s.

Selon les paramètres que tu sélectionneras, le pipeline utilisera TensorFlow, PyTorch ou JAX pour construire et mettre à ta disposition un modèle.

Je te conseille d’ailleurs ce super article (en anglais) si tu souhaites approfondir le sujet.

En parlant de code et de paramètres, rentrons un peu plus en détails dans les pipelines.

Importation – Hugging Face 🤗 Transformers

Pour installer la librairie 🤗 Transformers, il suffit d’utiliser la commande suivante dans ton terminal :

pip install transformers

Remarque: si tu travailles directement sur un notebook, tu peux utiliser !pip install transformers pour installer la librairie depuis ton environnement.

Une fois la librairie installée, voilà comment importer un pipeline en Python :

from transformers import pipeline

Pour l’utiliser, il te suffit d’appeler pipeline() en indiquant les paramètres souhaitĂ©s entre les parenthèses.

La première chose à noter est que tu peux spécifier la tâche que tu souhaites accomplir en utilisant le paramètre task.

Tu peux simplement choisir la tâche qui t’intĂ©resse, et le pipeline fera le reste pour toi.

Remarque: on plonge en détail dans les différentes tâches réalisables par le pipeline dans les parties suivantes de cet article.

En plus, de task, d’autres paramètres peuvent ĂŞtre modulĂ©s pour adapter le pipeline Ă  tes besoins.

Choix des paramètres – Hugging Face 🤗 Transformers

🤗 Transformers te donne la flexibilité de choisir le modèle que tu souhaites utiliser.

Si tu as une prĂ©fĂ©rence, tu peux l’indiquer grâce au paramètres model. Si tu n’en spĂ©cifies pas, le pipeline utilisera automatiquement le modèle par dĂ©faut pour la tâche sĂ©lectionnĂ©e.

Le paramètre config te permet de personnaliser la configuration du modèle. Par exemple, pour des modèles génération de texte, il est possible de régler le nombre de caractères maximum générés.

Le paramètre tokenizer, utilisĂ© lors de tâches de NLP, et feature_extractor, utilisĂ© lors de tâches de vision par ordinateur et lors de tâches multimodales, gèrent l’encodage des donnĂ©es. Encore une fois, si tu ne spĂ©cifies rien, le pipeline choisira automatiquement les valeurs par dĂ©faut appropriĂ©es.

Le choix du framework, que ce soit PyTorch framework=pt ou TensorFlow framework=tf, est Ă©galement pris en charge.

En plus de ces paramètres clés, le pipeline de 🤗 Transformers offre plusieurs options annexes pour personnaliser ton utilisation.

Par exemple, le paramètre device permet de définir le processeur sur lequel le pipeline sera exécuté: CPU ou GPU.

En utilisant ces paramètres, tu peux adapter facilement le pipeline de 🤗 Transformers à tes besoins spécifique.

Cela rend l’accès Ă  des modèles de pointe pour une variĂ©tĂ© de tâches plus ouvert que jamais.

À présent que nous avons vu les principaux paramètres de pipeline, voyons concrètement comment utiliser cette classe sur des tâches de :

  • Natural Language Processing
  • Computer Vision
  • Traitement Audio
  • Multi-Modal

Natural Language Processing

Une multitude de tâches

Le Natural Language Processing est le traitement de texte par Intelligence Artificielle.

Grâce aux pipelines de 🤗 Transformers on peut réaliser une multitude de tâches dans ce domaine:

  • conversational: communication textuelle avec des agents virtuels ou des chatbots
  • fill-mask: remplacement de « masques » par des mots ou des phrases dans un texte pour complĂ©ter ou gĂ©nĂ©rer du contenu
  • ner: Named Entity Recognition – identification et classification des entitĂ©s nommĂ©es (comme les noms de personnes, d’organisations ou de lieux) dans un texte
  • question-answering: rĂ©ponse Ă  des questions textuel en extrayant des informations Ă  partir d’un texte donnĂ©
  • summarization: rĂ©duction de la longueur d’un texte tout en prĂ©servant les informations pertinentes pour crĂ©er un rĂ©sumĂ© concis
  • table-question-answering: rĂ©ponse Ă  des questions en utilisant des donnĂ©es tabulaires en tant que source d’information
  • text2text-generation: gĂ©nĂ©ration de texte Ă  partir d’un texte source, pouvant inclure des tâches telles que la traduction, la rĂ©Ă©criture ou la paraphrase.
  • text-classification: attribution d’une catĂ©gorie ou d’une Ă©tiquette prĂ©dĂ©finie Ă  un texte en fonction de son contenu
  • text-generation: crĂ©ation de texte Ă  partir de zĂ©ro ou en complĂ©tant un texte existant
  • token-classification: attribution d’Ă©tiquettes Ă  chaque « token Â» (unitĂ© de texte, gĂ©nĂ©ralement un mot ou un caractère) dans un texte, souvent utilisĂ© pour l’annotation sĂ©mantique ou la dĂ©tection d’entitĂ©s (NER)
  • translation: traduction automatique d’un texte d’une langue source vers une langue cible
  • zero-shot-classification: classification de texte sans nĂ©cessiter de donnĂ©es d’entraĂ®nement spĂ©cifiques Ă  chaque catĂ©gorie, en utilisant des modèles prĂ©-entraĂ®nĂ©s pour prĂ©dire des Ă©tiquettes

Il est aisĂ© d’utiliser un pipeline pour rĂ©aliser chacune de ces tâches.

Utilisation

Par exemple, ici j’utilise un pipeline pour une tâche de text-classification en seulement 3 lignes de code:

from transformers import pipeline

pipe = pipeline("text-classification")
pipe("This restaurant is awesome")

Sortie: [{'label': 'POSITIVE', 'score': 0.9998743534088135}]

Le pipeline charge un modèle par défaut automatiquement (ici, le modèle chargé est distilbert-base-uncased-finetuned-sst-2-english). De plus, le pipeline peut directement traiter un texte brut car il prend en charge, en plus de la prédiction, le preprocessing NLP.

Ă€ partir de la phrase « This restaurant is awesome Â» le modèle prĂ©dit une tonalitĂ© positive de la part de l’auteur.

Il est également possible de traiter plusieurs données en même temps. Pour cela, on passe simplement une liste de string au pipeline:

Au fait, si ton objectif est d'apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • DĂ©veloppe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN

À présent, on peut revenir à ce que je mentionnais précédemment.

pipe(["This restaurant is awesome", "This restaurant is awful"])

Sortie:
[{'label': 'POSITIVE', 'score': 0.9998743534088135},
{'label': 'NEGATIVE', 'score': 0.9996669292449951}]

Ici, le modèle chargé par défaut détermine parfaitement la polarité de nos phrases: positive ou négative.

Computer vision

La Computer Vision est le traitement d’image et de succession d’images (vidĂ©o) par Intelligence Artificielle.

Voici les principales tâches que peut résoudre les pipeline de 🤗 Transformers:

  • depth-estimation: estimation de la profondeur ou de la distance des objets dans une image
  • image-classification: classification d’une image dans une classe prĂ©dĂ©finie ou prĂ©diction de son contenu
  • image-segmentation: division d’une image en rĂ©gions ou segments afin d’identifier les objets prĂ©sents dans l’image
  • object-detection: localisation et classification des objets spĂ©cifiques dans une image
  • video-classification: classification d’une sĂ©quence vidĂ©o dans une classe donnĂ©e en fonction de son contenu
  • zero-shot-image-classification: classification d’une image dans une classe non vue pendant l’entraĂ®nement du modèle
  • zero-shot-object-detection: localisation et classification d’objets spĂ©cifiques dans une image, y compris des objets non vus pendant l’entraĂ®nement du modèle

Illustrons la simplicité des pipeline avec une tâche de depth-estimation.

Tout d’abord, importons une image :

from PIL import Image
import requests
from io import BytesIO

image_url = "https://cc0.photo/wp-content/uploads/2016/11/Fluffy-orange-cat-980x735.jpg"
Image.open(BytesIO(requests.get(image_url).content))

Ensuite, on utilise un pipeline pour la traiter. Par ailleurs, on indique un modèle choisi par nos soins: le "Intel/dpt-large".

from transformers import pipeline

estimator = pipeline(task="depth-estimation", model="Intel/dpt-large")
result = estimator(images=image_url)
result

Sortie:
{'predicted_depth': tensor([[
[ 6.3199, 6.3629, 6.4148, ..., 10.4104, 10.5109, 10.3847],
...,
[22.5176, 22.5275, 22.5218, ..., 22.6281, 22.6216, 22.6108]]]),
'depth': <PIL.Image.Image image mode=L size=640x480>}

Le rĂ©sultat est donnĂ© Ă  la fois sous la forme d’un tensor PyTorch et d’une image PIL.

On peut afficher l’image comme ceci:

result['depth']
Hugging Face 🤗 Transformers – Depth Estimation

Grâce au modèle que nous avons sélectionné, le pipeline détermine avec aisance la profondeur de notre image.

Audio

Un domaine de plus en plus populaire en Intelligence Artificielle est le traitement de données audio.

Voici les tâches pouvant être réalisées dans ce domaine avec un pipeline de 🤗 Transformers:

  • audio-classification: attribution d’une catĂ©gorie ou d’une Ă©tiquette Ă  un fichier audio en fonction de son contenu
  • automatic-speech-recognition: conversion de la parole humaine en texte
  • text-to-audio: conversion de texte en fichiers audio, gĂ©nĂ©ralement en utilisant des synthĂ©tiseurs vocaux ou des techniques de narration automatisĂ©e
  • zero-shot-audio-classification: classification de fichiers audio en catĂ©gories prĂ©dĂ©finies sans avoir besoin de donnĂ©es d’entraĂ®nement spĂ©cifiques pour chaque catĂ©gorie, en utilisant des modèles prĂ©-entraĂ®nĂ©s pour prĂ©dire les Ă©tiquettes.

Ă€ partir de l’audio ci-dessous, nous allons effectuer une tâche de automatic-speech-recognition:

from transformers import pipeline

transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-small")
transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")

Sortie: {'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}

Notre modèle whisper-small de l’entreprise OpenAI transcrit parfaitement un audio en texte.

Multimodal

Le domaine multimodal en IA fait rĂ©fĂ©rence Ă  l’utilisation simultanĂ©e de multiples modes d’entrĂ©e comme le texte, l’image et l’audio.

Les tâches multimodal suivantes peuvent être résolues avec un pipeline:

  • document-question-answering: rĂ©ponse Ă  des questions formulĂ©es en langage naturel en utilisant des documents comme source d’information
  • feature-extraction: extraction de caractĂ©ristiques ou d’attributs Ă  partir de donnĂ©es brutes
  • image-to-text: conversion d’informations visuelles contenues dans une image en texte descriptif ou en mĂ©tadonnĂ©es
  • visual-question-answering: rĂ©ponse Ă  des questions en utilisant des informations visuelles, gĂ©nĂ©ralement en se basant sur des images, en combinant le traitement d’images et le traitement du langage naturel pour fournir des rĂ©ponses

Ici, nous allons demander au modèle ce que la personne sur la photo porte (en anglais, What is she wearing ?):

from transformers import pipeline

oracle = pipeline(model="dandelin/vilt-b32-finetuned-vqa")
image_url = "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/lena.png"
oracle(question="What is she wearing ?", image=image_url)

Sortie:
[{'score': 0.9480270743370056, 'answer': 'hat'},
{'score': 0.008636703714728355, 'answer': 'fedora'},
{'score': 0.003124275477603078, 'answer': 'clothes'},
{'score': 0.0029374377336353064, 'answer': 'sun hat'},
{'score': 0.0020962399430572987, 'answer': 'nothing'}]

Le modèle multimodal prend en entrée une image et du texte. Cela lui permet, à là fois de comprendre notre photo, mais également, de répondre à notre question.

OĂą trouver des modèles ? – Hugging Face 🤗 Transformers

Par dĂ©faut 🤗 Transformers charge un modèle lors de l’appel d’un pipeline.

NĂ©anmoins, il est Ă©galement possible d’utiliser un modèle hĂ©bergĂ© par Hugging Face.

Tu peux dĂ©couvrir la totalitĂ© des modèles disponibles sur le site de l’entreprise.

Une fois dessus, suis ces étapes pour trouver le modèle qui correspond à tes besoins :

  1. Clique sur « Models » en haut de l’Ă©cran
  2. Choisis une tâche dans le menu à gauche
  3. Copie le nom du modèle de ton choix dans l’encadrĂ© principale
  4. Appelle le modèle copié avec pipeline(model=nomDuModel)

Ces étapes sont résumées visuellement ci-dessous:

Hugging Face 🤗 Transformers – Étapes Ă  suivre pour utiliser un modèle

Grâce à son API, Hugging Face propose à ses utilisateurs des modèles à la pointe de la recherche.

Le but de Hugging Face est clair: démocratiser l’IA au sein des entreprises.

Et elle compte bien devenir un acteur majeur du domaine.

Aujourd’hui, c’est grâce au Deep Learning que les leaders de la tech peuvent crĂ©er les Intelligences Artificielles les plus puissantes.

Si tu veux approfondir tes connaissances dans le domaine, tu peux accĂ©der Ă  mon Plan d’action pour MaĂ®triser les RĂ©seaux de neurones.

Un programme de 7 cours gratuits que j’ai prĂ©parĂ© pour te guider dans ton parcours pour apprendre le Deep Learning.

Si ça t’intéresse, clique ici :

RECEVOIR MON PLAN D’ACTION

source: TechCrunch – Hugging Face raises $235M from investors, including Salesforce and Nvidia

Un dernier mot, si tu veux aller plus loin et apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • DĂ©veloppe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN

Tom Keldenich
Tom Keldenich

Ingénieur spécialisé en Intelligence Artificielle et passionné de données !

Fondateur du site Inside Machine Learning

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This page will not stay online forever

Enter your email to receive for free

The PANE method for Deep Learning

* indicates required

 

You will receive one email per day for 7 days – then you will receive my newsletter.
Your information will never be given to third parties.

You can unsubscribe in 1 click from any of my emails.



Entre ton email pour recevoir gratuitement
la méthode PARÉ pour faire du Deep Learning


Tu recevras un email par jour pendant 7 jours - puis tu recevras ma newsletter.
Tes informations ne seront jamais cédées à des tiers.

Tu peux te désinscrire en 1 clic depuis n'importe lequel de mes emails.