Skip to content

Qu'est-ce que les pipelines cloud sur Hugging Face ?

Hugging Face est devenu une plateforme incontournable dans le domaine du machine learning, notamment pour les modèles de NLP (Natural Language Processing). En combinaison avec des pipelines MLOps, il est possible de composer des solutions robustes et évolutives en intégrant des modèles pré-entraînés de Hugging Face, soit pour les fine-tuner, les évaluer, ou les déployer dans des environnements de production.

Dans cet objectif d’apprentissage, nous allons découvrir comment composer des solutions en utilisant les modèles et les pipelines fournis par Hugging Face, tout en intégrant ces modèles dans un environnement MLOps complet basé sur des technologies cloud. Nous aborderons des exemples d’intégration avec des services cloud comme AWS, Azure, et GCP, ainsi que des workflows DevOps.

1. Services clés pour composer des solutions avec Hugging Face

Hugging Face propose plusieurs services et outils pour intégrer les modèles de machine learning dans des pipelines cloud. Les principaux sont :

  • Hugging Face Hub : Un dépôt centralisé pour héberger et partager des modèles de machine learning. Vous pouvez l’utiliser pour trouver des modèles pré-entraînés ou partager les vôtres.
  • Transformers : Une bibliothèque Python qui permet de télécharger, entraîner, et déployer des modèles pré-entraînés sur de grandes quantités de données textuelles.
  • Hugging Face Inference API : Un service d’API pour interagir avec les modèles hébergés sans avoir besoin de gérer l’infrastructure.
  • Optimum : Une extension pour maximiser les performances des modèles sur le hardware (GPU/TPU).
  • Accelerate : Une bibliothèque pour l’entraînement distribué et l’optimisation des modèles.

2. Étapes pour composer des solutions en utilisant Hugging Face dans des pipelines MLOps

a) Utiliser des modèles pré-entraînés Hugging Face avec Transformers

L’un des premiers cas d’utilisation avec Hugging Face dans un pipeline cloud consiste à intégrer un modèle Transformers pré-entraîné dans une solution MLOps. Hugging Face facilite cette tâche avec son Hub et ses modèles prêts à être utilisés.

  1. Téléchargement et utilisation d’un modèle Hugging Face :

Vous pouvez facilement charger un modèle pré-entraîné et le fine-tuner pour une tâche spécifique (classification, traduction, génération de texte, etc.). Voici un exemple pour charger un modèle de classification de texte depuis Hugging Face :

from transformers import pipeline
# Charger un pipeline de classification de texte
classifier = pipeline("sentiment-analysis")
# Tester le modèle sur du texte
result = classifier("Hugging Face est incroyable !")
print(result)

Ce modèle peut ensuite être intégré dans un pipeline MLOps pour l’inférence ou être fine-tuné avec des données spécifiques avant déploiement.

b) Entraîner des modèles avec Hugging Face sur des clusters cloud

L’entraînement des modèles de machine learning sur des ressources cloud comme AWS, Azure, ou GCP est essentiel pour les projets à grande échelle. Hugging Face propose des solutions pour entraîner des modèles sur des clusters distribués via des bibliothèques comme Transformers, Accelerate, et Optimum.

  1. Exemple d’entraînement distribué avec Accelerate sur AWS :
Terminal window
# Installer Hugging Face Accelerate
pip install accelerate
# Configurer Accelerate pour l'entraînement distribué
accelerate config
# Entraîner le modèle avec Accelerate
accelerate launch train_model.py

Ce pipeline d’entraînement peut être intégré à des workflows plus larges pour automatiser l’entraînement, l’évaluation, et le déploiement des modèles.

c) Intégration avec des services Cloud pour le déploiement

Les solutions MLOps nécessitent souvent de déployer les modèles dans un environnement cloud, et Hugging Face propose des intégrations pour cela.

  1. Déploiement de modèles sur Amazon SageMaker avec Hugging Face :

AWS SageMaker est une plateforme d’entraînement et de déploiement de modèles ML dans le cloud. Hugging Face propose une intégration native avec SageMaker pour simplifier le déploiement.

Exemple de code pour déployer un modèle Hugging Face sur AWS SageMaker :

from sagemaker.huggingface.model import HuggingFaceModel
# Définir la configuration du modèle Hugging Face
huggingface_model = HuggingFaceModel(
model_data='s3://my-bucket/model.tar.gz', # Chemin du modèle dans S3
role='SageMakerRole', # Rôle IAM
transformers_version='4.6',
pytorch_version='1.7',
py_version='py36'
)
# Déployer le modèle sur un endpoint SageMaker
predictor = huggingface_model.deploy(
initial_instance_count=1,
instance_type='ml.g4dn.xlarge'
)
# Faire une prédiction
result = predictor.predict({
"inputs": "Hugging Face transforme l'intelligence artificielle."
})
print(result)

Ce modèle est maintenant disponible via un endpoint dans AWS SageMaker, accessible via une API HTTP.

  1. Déploiement de modèles sur GCP avec Vertex AI :

Hugging Face peut également être intégré à Google Vertex AI pour le déploiement de modèles à grande échelle. Vous pouvez exporter votre modèle Hugging Face dans un format compatible (comme un artefact de modèle) et le déployer sur Vertex AI.

from google.cloud import aiplatform
# Initialiser le client Vertex AI
client = aiplatform.Model(
project="my-project",
location="us-central1",
display_name="hugging-face-model",
artifact_uri="gs://my-bucket/model/",
)
# Déployer le modèle sur un endpoint Vertex AI
endpoint = client.deploy(
machine_type="n1-standard-4"
)
# Inférence avec le modèle déployé
response = endpoint.predict(instances=["Hugging Face est génial."])
print(response)

d) Automatisation avec Hugging Face Inference API

La Hugging Face Inference API permet d’utiliser des modèles pré-entraînés directement via une API HTTP, sans avoir besoin de gérer l’infrastructure. Cela peut être utile pour composer des pipelines qui utilisent des modèles sans avoir à se soucier du déploiement.

  1. Utilisation de l’Inference API pour des prédictions :
import requests
# API Hugging Face pour la classification de texte
API_URL = "<https://api-inference.huggingface.co/models/distilbert-base-uncased-finetuned-sst-2-english>"
headers = {"Authorization": "Bearer YOUR_HF_TOKEN"}
# Envoyer une requête POST avec le texte à analyser
response = requests.post(API_URL, headers=headers, json={"inputs": "Hugging Face est fantastique!"})
# Afficher la réponse de l'API
print(response.json())

Cette approche est très simple et rapide à intégrer dans un pipeline MLOps, surtout pour des phases d’inférence.

e) Orchestration avec des workflows MLOps

Vous pouvez orchestrer les workflows MLOps qui incluent des modèles Hugging Face en utilisant des outils comme Airflow (via Cloud Composer sur GCP ou en local) pour gérer l’ensemble du pipeline, du prétraitement des données à l’inférence.

  1. Exemple de DAG Airflow avec Hugging Face :
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
from transformers import pipeline
default_args = {
'start_date': datetime(2024, 1, 1),
}
def run_huggingface_inference():
classifier = pipeline("sentiment-analysis")
result = classifier("Hugging Face et Airflow fonctionnent bien ensemble!")
print(result)
with DAG('huggingface_ml_pipeline', default_args=default_args, schedule_interval=None) as dag:
run_inference = PythonOperator(
task_id='run_huggingface_inference',
python_callable=run_huggingface_inference
)
run_inference

Ce DAG exécute une tâche Airflow qui appelle un pipeline de sentiment analysis de Hugging Face.

Conclusion

L’intégration de Hugging Face dans des solutions MLOps cloud permet de bénéficier de l’énorme potentiel des modèles pré-entraînés et des outils NLP de pointe. Grâce aux pipelines cloud et aux intégrations avec des plateformes comme AWS SageMaker, GCP Vertex AI, ou l’Inference API de Hugging Face, vous pouvez composer des solutions ML robustes, automatisées et scalables. Ces technologies permettent d’automatiser chaque étape du pipeline, de l’entraînement à la production en passant par le déploiement et l’inférence.