Skip to content
Learni
View all tutorials
Intelligence Artificielle

Comment maîtriser Hugging Face Hub en 2026

Introduction

En 2026, Hugging Face Hub est la plateforme incontournable pour les experts en IA, centralisant plus de 1 million de modèles, datasets et applications Spaces. Elle simplifie le partage, le versioning et l'inférence de modèles Transformer, avec une API unifiée et un support natif pour Docker, Git LFS et SDK Python. Pourquoi c'est crucial ? Les workflows ML distribués exigent une collaboration fluide : push d'un fine-tuned Llama 3 vers un repo privé, hébergement d'un Space Gradio pour démo interactive, ou pull de datasets massifs comme LAION-5B sans downtime. Ce tutoriel expert vous guide pas à pas, du login sécurisé à l'automatisation CI/CD, avec du code 100% fonctionnel. À la fin, vous bookmarkederez ce guide pour vos pipelines production. (128 mots)

Prérequis

  • Python 3.10+ installé
  • Compte Hugging Face (créez-en un sur huggingface.co)
  • Token d'accès HF (générez-le dans Settings > Access Tokens, rôle 'write')
  • Git et Git LFS configurés (git lfs install)
  • Bibliothèques : pip install huggingface_hub transformers datasets accelerate
  • Accès à GPU recommandé pour tests d'inférence

Installation et login CLI

terminal.sh
pip install -U huggingface_hub[cli]
huggingface-cli login --token hf_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
huggingface-cli whoami

Cette commande installe le CLI officiel et authentifie votre session locale avec un token read/write. Le flag --token évite l'interaction ; remplacez par votre token réel. whoami vérifie l'authentification : piège courant, un token expired bloque tous les uploads.

Premier upload de modèle

Avant d'uploader, préparez un modèle local. Nous utilisons un exemple concret : un classifieur de sentiments fine-tuné sur DistilBERT.

Préparer et push un modèle

upload_model.py
from huggingface_hub import HfApi, HfFolder

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Charger un modèle exemple local (simulé)
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# Sauvegarder localement
model.save_pretrained("./mon-modele-local")
tokenizer.save_pretrained("./mon-modele-local")

# HfApi pour upload
api = HfApi()
api.upload_folder(
    folder_path="./mon-modele-local",
    repo_id="votre-username/mon-premier-modele",
    repo_type="model",
    commit_message="Premier push DistilBERT fine-tuné"
)

print("Modèle uploadé avec succès !")

Ce script charge un modèle pré-entraîné, le sauvegarde localement puis l'upload via HfApi.upload_folder(). Il gère automatiquement Git LFS pour les poids >10MB. Piège : sans repo_type="model", ça crée un dataset par erreur ; toujours spécifier commit_message pour le versioning.

Gestion avancée des datasets

Les datasets HF supportent Parquet, streaming et métadonnées. Idéal pour des corpus comme Common Crawl.

Créer et push un dataset

upload_dataset.py
from datasets import Dataset
from huggingface_hub import HfApi

import pandas as pd

# Dataset exemple : sentiments
 data = {
    "text": ["J'adore ce film !", "C'est nul."],
    "label": [1, 0]
}
df = pd.DataFrame(data)
dataset = Dataset.from_pandas(df)

# Push
dataset.push_to_hub("votre-username/mon-dataset-sentiments", private=False)

# Ou via API pour contrôle fin
api = HfApi()
api.upload_dataset(
    dataset=dataset,
    repo_id="votre-username/mon-dataset-avance",
    commit_message="Dataset sentiments avec splits"
)
print("Dataset publié !")

Ici, on crée un Dataset Hugging Face à partir d'un Pandas DataFrame et le pushe directement. push_to_hub() est shortcut ; upload_dataset() permet splits train/test. Attention : datasets >1GB nécessitent Git LFS ; testez avec load_dataset() post-upload.

Pull et inférence locale

inference.py
from transformers import pipeline
from huggingface_hub import snapshot_download

# Télécharger un repo complet
model_path = snapshot_download(repo_id="votre-username/mon-premier-modele", local_dir="./local_model")

# Pipeline inférence
classifier = pipeline("sentiment-analysis", model=model_path, tokenizer=model_path)
result = classifier("Ce tutoriel est excellent !")
print(result)  # [{'label': 'POSITIVE', 'score': 0.9998}]

# Streaming pour grands modèles
dataset = load_dataset("votre-username/mon-dataset-sentiments", streaming=True)
for example in dataset["train"]:
    print(example["text"])

snapshot_download() clone un repo entier localement, évitant les redownloads. Le pipeline() charge tokenizer+model automatiquement. Pour datasets streaming, utilisez streaming=True afin d'éviter OOM sur 100GB+ corpora ; piège : oublier local_dir recharge tout.

Déployer un Space Gradio

Les Spaces HF hébergent apps ML avec zero-config (Gradio/Streamlit/Docker).

app.py pour Space Gradio

app.py
import gradio as gr
from transformers import pipeline

classifier = pipeline("sentiment-analysis", "distilbert-base-uncased-finetuned-sst-2-english")

def analyze(text):
    result = classifier(text)
    return f"Label: {result[0]['label']}, Score: {result[0]['score']:.4f}"

iface = gr.Interface(
    fn=analyze,
    inputs=gr.Textbox(label="Votre texte"),
    outputs=gr.Textbox(label="Analyse"),
    title="Analyseur de Sentiments HF Hub"
)

if __name__ == "__main__":
    iface.launch(share=True)

Ce app.py crée une UI Gradio pour inférence. Push dans un repo Space HF (type 'Space', SDK 'Gradio') déploie auto sur GPU T4. share=True génère un lien public ; en prod, utilisez secrets HF pour tokens privés.

Dockerfile pour Space custom

Dockerfile
FROM python:3.11-slim

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app.py /code/app.py

CMD ["python", "app.py"]

Pour Spaces Docker avancés, ce Dockerfile minimise l'image (slim Python). Ajoutez HF_TOKEN comme secret HF. Build auto sur push ; piège : oubliez COPY requirements.txt et pip échoue en runtime.

Versioning et merge PR

versioning.py
from huggingface_hub import HfApi

api = HfApi()

# Créer branche et PR
api.create_repo(repo_id="votre-username/mon-modele-v2", repo_type="model", exist_ok=True)
api.create_branch(repo_id="votre-username/mon-modele-v2", branch="feature/v2")

# Merger PR programmatiquement (après push manuel sur branche)
# api.merge_pull_request(repo_id="votre-username/mon-modele-v2", pull_request_id=1)

# Tag release
api.create_tag(repo_id="votre-username/mon-modele-v2", tag="v1.0.0")
print("Versioning appliqué !")

create_branch() et create_tag() gèrent le Git natif de HF. Les PRs déclenchent CI/CD ; merge auto via webhook GitHub Actions. Expert tip : gated repos nécessitent allow_patterns pour accès conditionnel.

Bonnes pratiques

  • Toujours versionner : utilisez tags semver (v1.0.0) et branches pour A/B testing modèles.
  • Sécurisez les tokens : stockez en HF Secrets ou env vars, jamais en dur dans code.
  • Optimisez LFS : track seulement *.bin et tokenizer.json ; ignorez checkpoints temporaires.
  • Testez offline : huggingface-cli download pour CI/CD sans réseau HF.
  • Monitorez usage : Spaces gratuits limités à 30min idle ; passez Pro pour scaling.

Erreurs courantes à éviter

  • Token invalide : '401 Unauthorized' → régénérez token avec scopes 'write' et reloguez.
  • LFS non tracké : fichiers tronqués à 10MB → git lfs track "*.safetensors" et repush.
  • OOM sur pull : grands modèles crashent → utilisez local_dir_use_symlinks=False ou streaming.
  • Space down : logs HF indiquent deps manquantes → pip freeze > requirements.txt complet.

Pour aller plus loin