Aller au contenu
Développement medium

Démarrez avec Hugging Face

17 min de lecture

Ce guide pratique vous apprend à utiliser l’écosystème Hugging Face pour faire tourner des modèles LLM open source en local sur CPU, sans nécessiter de carte graphique spécialisée. Vous découvrirez les outils, la configuration de l’environnement et des exemples concrets pour créer votre premier assistant IA local.

Pour faire tourner un LLM en local, il faut pouvoir accéder facilement à un modèle, à ses fichiers, et à un code prêt à l’emploi. C’est précisément ce que fournit Hugging Face, une plateforme et un ensemble d’outils qui facilitent l’usage des modèles d’intelligence artificielle open source, en particulier dans le domaine du traitement automatique du langage naturel (NLP).

Hugging Face est une entreprise française qui propose des outils pour partager, utiliser et entraîner des modèles de machine learning. Elle est surtout connue pour :

  • le Hugging Face Hub : un catalogue de milliers de modèles d’IA préentraînés et gratuits ;
  • la bibliothèque Transformers : un ensemble de fonctions Python prêtes à l’emploi pour charger et utiliser ces modèles ;

Exemple de modèle sur le Hub : distilbert-base-uncased

Hugging Face Transformers : la bibliothèque de base

Section intitulée « Hugging Face Transformers : la bibliothèque de base »

La bibliothèque Transformers permet de manipuler facilement des modèles de type Transformer, comme BERT, GPT, RoBERTa ou LLaMA. Elle fournit des fonctions pour :

  • Télécharger un modèle depuis le hub avec from_pretrained(...)
  • Créer un pipeline pour effectuer une tâche comme la génération de texte ou la classification
  • Convertir les textes en tokens (unités compréhensibles par les modèles)
  • Exécuter le modèle sur un texte et récupérer les résultats
Fenêtre de terminal
pip install transformers

Cette commande installe tout ce qu’il faut pour utiliser les modèles. C’est le point de départ de tous les projets LLM avec Hugging Face.

Le Hugging Face Hub : une bibliothèque de modèles

Section intitulée « Le Hugging Face Hub : une bibliothèque de modèles »

Le Hub est un site Web où l’on peut :

  • Rechercher des modèles selon leur tâche (résumé, traduction, génération de texte, etc.)
  • Lire leur documentation
  • Voir leur compatibilité (CPU, GPU, quantifié, ONNX, etc.)
  • Télécharger les fichiers nécessaires au fonctionnement

Certains modèles sont très volumineux (plusieurs dizaines de gigaoctets), mais il en existe aussi des versions compactes, quantifiées et spécialement conçues pour tourner sur CPU.

Pour accéder à certains modèles hébergés sur le Hugging Face Hub, vous devez vous authentifier auprès de la plateforme. Cela permet de :

  • Télécharger des modèles privés ou réservés aux utilisateurs enregistrés
  • Éviter les limites de téléchargement anonymes
  • Accéder à des modèles sous licence spéciale (ex : Mistral, LLaMA)

Si ce n’est pas déjà fait, créez un compte gratuit sur : https://huggingface.co/join

Une fois connecté :

  • Allez sur : https://huggingface.co/settings/tokens
  • Cliquez sur New token
  • Donnez un nom (ex: cpu-tuto) et sélectionnez le rôle Read
  • Cliquez sur Generate token
  • Copiez le token (chaîne commençant par hf_...)

Vous pouvez vous authentifier depuis un terminal :

Fenêtre de terminal
huggingface-cli login

Collez le token lorsqu’il est demandé.

Cette commande crée un fichier de configuration .huggingface/token dans votre dossier utilisateur.

Préparer son environnement pour l’inférence locale

Section intitulée « Préparer son environnement pour l’inférence locale »

Avant de pouvoir exécuter un LLM (Large Language Model) sur votre machine, vous devez préparer un environnement Python adapté. L’objectif ici est d’installer les bibliothèques nécessaires pour faire tourner un modèle en local, sur CPU, sans passer par des services cloud.

Vous n’avez pas besoin d’un ordinateur très puissant. Voici les recommandations de base :

  • Un PC sous Linux, macOS ou Windows
  • 8 à 16 Go de RAM minimum (plus si possible)
  • Un processeur moderne (Intel ou AMD, x86_64 ou ARM pour Apple Silicon)
  • Environ 5 à 10 Go d’espace disque libre pour stocker les modèles téléchargés

On vous recommande d’utiliser un environnement virtuel pour isoler vos dépendances Python.

Fenêtre de terminal
python -m venv llm_env
source llm_env/bin/activate # Sur Windows : llm_env\Scripts\activate

Vous pouvez ensuite installer les bibliothèques nécessaires avec pip.

Voici les bibliothèques de base à installer pour faire tourner un LLM :

Fenêtre de terminal
pip install transformers torch accelerate

Vous pouvez vérifier que tout fonctionne en important les modules :

Fenêtre de terminal
python3

Et entrez dans l’interpréteur Python :

import transformers

Si aucune erreur ne s’affiche, l’environnement est prêt.

Le choix du modèle LLM est une étape clé, surtout lorsque l’on travaille en local sur un processeur (CPU). Tous les modèles ne se valent pas : certains sont lourds, d’autres spécialisés pour une tâche précise, et tous ne comprennent pas forcément le français. L’objectif ici est de vous orienter vers des modèles légers, polyvalents, et compatibles avec la langue française, tout en présentant les types de tâches qu’un LLM peut accomplir.

Voici les tâches les plus courantes qu’on peut tester avec un LLM open source :

  • text-generation : continuer une phrase, rédiger un paragraphe, créer un résumé.
  • question-answering : extraire une réponse d’un texte fourni.
  • translation : passer d’une langue à une autre.
  • text-classification : identifier un sentiment, une catégorie, etc.
  • summarization : condenser un texte long en un texte court.
  • text-fill : prédire un mot ou une expression manquante.

Chaque tâche a des modèles spécifiques, entraînés sur des données adaptées.

Pour débuter sur CPU, privilégiez les modèles :

  • de petite taille (moins de 1 à 4 milliards de paramètres)
  • entraînés ou fine-tunés pour le français

Voici quelques suggestions testées et recommandées :

ModèleLangueTâcheTailleAvantages
camembert-baseFrançaisClassification, QA~110MLéger, basé sur RoBERTa
bloomz-560mMultilingue (fr inclus)Génération de texte~560MPolyvalent, multilingue
t5-small (fine-tuné fr)MultilingueTraduction, résumé~60MPolyvalent et léger

Sur chaque fiche modèle du Hugging Face Hub, vérifiez :

  • La langue prise en charge dans la section “Languages”
  • Le type de tâche mentionné (tags comme text-generation, summarization)

Tous les modèles Hugging Face ne sont pas égaux en termes de format. Voici un résumé :

FormatDescriptionAvantage pour CPU
PyTorch (par défaut)Format natif transformers, simple à utiliserUtilisable sans GPU, mais plus lent
ONNXModèle exporté au format optimisé ONNXExécution plus rapide via onnxruntime
GGUFFormat binaire pour moteurs comme llama.cppUltra-rapide, support CPU multithread
Quantifié (int8, bfloat16)Modèle dont les poids sont compressésMoins de RAM, plus rapide

Dans ce guide, nous allons principalement utiliser le format PyTorch pour la simplicité, mais vous pouvez explorer les autres formats pour des performances accrues.

Dans ce chapitre, vous allez créer un assistant textuel local capable de générer une réponse en français avec un modèle LLM open source, prêt à fonctionner efficacement sur un CPU. L’objectif est de montrer chaque étape, de manière claire et accessible, pour que vous puissiez reproduire ce mini assistant chez vous, même sans carte graphique.

Le modèle que nous allons utiliser est LiquidAI/LFM2-1.2B, un modèle pré-entraîné sur des données multilingues, y compris le français. Il est conçu pour être efficace sur des tâches de génération de texte, de complétion et de classification.

from transformers import AutoModelForCausalLM, AutoTokenizer
# Load model and tokenizer
model_id = "LiquidAI/LFM2-1.2B"
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype="bfloat16",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
# Generate answer
prompt = "C'est quoi un LLM?"
input_ids = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
add_generation_prompt=True,
return_tensors="pt",
tokenize=True,
).to(model.device)
output = model.generate(
input_ids,
do_sample=True,
temperature=0.3,
min_p=0.15,
repetition_penalty=1.05,
max_new_tokens=2048,
)
print(tokenizer.decode(output[0], skip_special_tokens=False))

Explication de chaque ligne :

  1. Import des bibliothèques : on importe les classes nécessaires de transformers.
  2. Chargement du modèle et du tokenizer : on utilise from_pretrained pour charger le modèle et le tokenizer depuis Hugging Face.
  3. Préparation du prompt : on crée un prompt simple pour poser une question.
  4. Génération de la réponse : on utilise model.generate pour obtenir une réponse basée sur le prompt.

Exemple de sortie :

<|startoftext|><|im_start|>user
C'est quoi un LLM?<|im_end|>
<|im_start|>assistant
Un LLM, ou Large Language Model en anglais (Modèle de Langage Large), est un type d'intelligence artificielle spécialement conçu pour comprendre et générer du langage humain. Ces modèles sont entraînés sur de vastes quantités de données textuelles provenant de diverses sources, ce qui leur permet d'acquérir une compréhension approfondie des structures linguistiques, des contextes et des nuances du langage naturel.
Voici quelques caractéristiques clés des LLM :
1. **Taille** : Ils sont généralement très grands, avec des milliards voire des trillions de paramètres (les poids ajustables du modèle). Cette taille leur permet de capturer des motifs complexes dans les données.²
2. **Capacités de génération** : Les LLM peuvent produire du texte cohérent et contextuellement pertinent, ce qui les rend utiles pour la rédaction automatique, la traduction, la réponse aux questions, la création de contenu créatif, etc.
3. **Compréhension contextuelle** : Ils peuvent comprendre le contexte d'une conversation ou d'un texte, ce qui améliore leur capacité à répondre de manière appropriée et pertinente.
4. **Apprentissage continu** : Certains LLM peuvent être affinés ou "fine-tuned" pour des tâches spécifiques, ce qui signifie qu'ils peuvent être adaptés à des domaines particuliers comme le médical, juridique ou technique.
5. **Utilisation dans divers domaines** : Les LLM sont utilisés dans des applications telles que les assistants virtuels (comme ChatGPT), les chatbots, les systèmes de recommandation, l'analyse de sentiments, et bien d'autres.
Les LLM représentent une avancée significative dans le domaine de l'IA et ont transformé la façon dont nous interagissons avec le langage numérique. Cependant, ils soulèvent également des questions éthiques et techniques, notamment en termes de biais, de confidentialité et de sécurité.<|im_end|>

En fonction du modèle et de son nombre de paramètres, la réponse peut varier. Le modèle peut générer des réponses plus ou moins longues, et la diversité des réponses peut être ajustée avec les paramètres temperature, top_k et top_p. Par exemple, une température plus basse rendra les réponses plus prévisibles, tandis qu’une température plus élevée les rendra plus créatives et variées.

Vous avez remarqué que le traitement est plutôt lent, mais c’est normal : les modèles LLM sont complexes et nécessitent du temps pour générer des réponses.

Par défaut, les modèles sont téléchargés automatiquement. Vous pouvez aussi le faire manuellement pour l’utiliser sans réseau ou hors-ligne.

from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("chemin/vers/model", cache_dir="./models/")
tokenizer = AutoTokenizer.from_pretrained("chemin/vers/model", cache_dir="./models/")

Le dossier ./models/ contiendra tous les fichiers (config, tokenizer, poids…). Cela vous permet de charger le modèle sans connexion internet.

Résolution des erreurs fréquentes et bonnes pratiques CPU

Section intitulée « Résolution des erreurs fréquentes et bonnes pratiques CPU »

L’usage local de LLM peut parfois provoquer des erreurs ou ralentissements. Voici une compilation des problèmes les plus rencontrés, leurs causes, et comment les corriger.

Symptôme :

Fenêtre de terminal
You are trying to access a gated model. Please authenticate.

Cause : certains modèles comme Mistral, LLaMA ou LLMWare sont restreints et nécessitent un compte Hugging Face connecté.

Solution :

Fenêtre de terminal
huggingface-cli login

Puis collez votre token d’accès depuis https://huggingface.co/settings/tokens.

Symptôme : votre script s’arrête sans erreur ou avec Killed, Segmentation fault, OOM.

Cause : modèle trop gros pour votre RAM.

Solutions :

  • Utiliser une version quantifiée
  • Limiter les max_new_tokens à 64 ou 128
  • Tester un modèle plus petit (ex : TinyLlama au lieu de Mistral)
  • Fermer tous les processus gourmands avant exécution
  • Hugging Face : Plateforme qui héberge des milliers de modèles d’IA gratuits et open source
  • Hub : Site web de Hugging Face où sont stockés tous les modèles
  • Transformers : Bibliothèque Python principale pour utiliser les modèles de Hugging Face
  • Datasets : Bibliothèque pour gérer et télécharger des jeux de données
  • Accelerate : Outil pour optimiser l’entraînement et l’inférence sur différents types de hardware
  • GGUF : Format de fichier optimisé pour faire tourner des LLM rapidement sur CPU
  • ONNX : Format de fichier qui permet d’optimiser les modèles pour différents types de processeurs
  • Quantification : Compression du modèle pour qu’il prenne moins de place et soit plus rapide
  • Pipeline : Interface simplifiée pour utiliser un modèle sans se soucier des détails techniques
  • Token : Clé d’authentification pour accéder aux modèles restreints sur Hugging Face
  • Gated model : Modèle dont l’accès est restreint et nécessite une authentification
  • Repository : Dossier contenant un modèle et ses fichiers sur le Hub

Vous avez maintenant les bases pour faire tourner un LLM open source en local, sur CPU, avec des outils simples comme Hugging Face. Vous pouvez :

  • Expérimenter avec différents modèles et tâches
  • Adapter le code pour créer des assistants personnalisés
  • Explorer les possibilités offertes par les LLM dans vos projets
  • Envisager des cas d’usage plus avancés, comme l’intégration dans une application web ou mobile

L’écosystème Hugging Face offre une porte d’entrée accessible pour découvrir l’intelligence artificielle générative et développer vos propres applications.