Aller au contenu
    DATA
    Guide IA – Série Hugging Face 3/6

    Datasets : la matière première de votre IA

    Un modèle ne vaut que par les données avec lesquelles il est entraîné ou évalué. Le Hub Hugging Face héberge plus de 500 000 datasets publics dans des milliers de langues : textes, images, audio, code, dialogues, documents scientifiques. Cet article vous apprend à naviguer dans ce catalogue, à charger efficacement un dataset en Python (même s’il représente plusieurs dizaines de téraoctets), à préparer vos propres données pour du fine-tuning, et à les uploader sur le Hub dans le bon format. À la fin, vous savez travailler des données comme un ML engineer expérimenté.

    FineWeb, le dataset de texte web de Hugging Face, représente plusieurs dizaines de téraoctets et plus de 18 000 milliards de tokens dans sa version anglaise complète. De fait, aucun disque de laptop ne peut le stocker. Pourtant, en 2026, un chercheur peut commencer à l’explorer depuis son ordinateur, sans devoir tout télécharger. C’est cette bascule technique qui a transformé le rôle des datasets dans l’écosystème : ils ne sont plus des fichiers qu’on rapatrie, ce sont des flux qu’on consomme.

    La bibliothèque datasets est l’outil qui rend ce flux utilisable pour entraîner, fine-tuner ou évaluer un modèle. Ainsi, comme Transformers pour les modèles, elle transforme en quelques lignes de code ce qui nécessitait auparavant une pipeline complète d’ingénierie de données.

    Naviguer le catalogue : cinq filtres qui comptent

    La page huggingface.co/datasets fonctionne comme celle des modèles. La colonne de gauche propose des filtres qui transforment la recherche en exploration ciblée.

    • Task Categories — Text generation, question answering, translation, summarization, image classification, speech recognition, text-to-image, etc. Le point d’entrée principal. Un dataset « text-generation » sert à entraîner un LLM, un dataset « question-answering » sert à entraîner ou évaluer un modèle de Q&R.
    • Languages — Des milliers de langues référencées. Pour travailler en français, filtrez d’abord par fr. Plusieurs centaines de datasets francophones disponibles, des corpus littéraires aux transcriptions parlementaires.
    • Size — De « n<1K » à « 1T<n ». Indispensable : un dataset de 10 000 exemples suffit souvent pour du fine-tuning supervisé, un dataset de 100 millions de tokens convient pour de l’entraînement continu.
    • Licenses — Même logique que pour les modèles. Pour un usage commercial, privilégiez Apache 2.0, MIT, CC-BY-4.0. Évitez CC-BY-NC qui interdit l’usage commercial, et lisez attentivement les licences custom.
    • Modalities — Text, image, audio, video, tabular, 3D. Filtre qui monte en pertinence avec l’essor du multimodal.

    Deux catégories ont fortement progressé et méritent donc votre attention. D’une part, la robotique a connu une croissance spectaculaire sur le Hub, portée par les datasets d’actions, de trajectoires, de vidéos et de capteurs. Ensuite, les données scientifiques : protéines (AlphaFold, ESM), dynamique moléculaire, chimie, biologie computationnelle. Ces deux segments illustrent d’ailleurs le glissement de l’IA open source au-delà du texte et de l’image.

    Le Dataset Viewer : explorer sans rien télécharger

    Cliquez sur un dataset public compatible, vous tombez alors sur le Dataset Viewer, un tableau interactif qui affiche les premières lignes du dataset directement dans le navigateur. Vous voyez ensuite la structure des colonnes, les types de données, la répartition train/validation/test, et vous pouvez exécuter des requêtes SQL sur les données sans rien télécharger.

    Cette fonctionnalité repose souvent sur une conversion automatique en Parquet, le format colonne optimisé pour la lecture rapide. Le Dataset Viewer et la SQL Console permettent ainsi d’explorer de nombreux datasets directement dans le navigateur, sans rapatrier tous les fichiers en local.

    Charger un dataset en Python en une ligne

    La bibliothèque datasets est le compagnon de Transformers. Installation standard :

    # Installation
    pip install -U datasets
    
    # Chargement d'un dataset du Hub en une ligne
    from datasets import load_dataset
    
    dataset = load_dataset("imdb")
    print(dataset)
    # DatasetDict({
    #     train: Dataset({
    #         features: ['text', 'label'],
    #         num_rows: 25000
    #     })
    #     test: Dataset({
    #         features: ['text', 'label'],
    #         num_rows: 25000
    #     })
    # })
    
    # Accès aux données
    print(dataset["train"][0])
    # {'text': 'I rented I AM CURIOUS-YELLOW...', 'label': 0}

    Les données sont téléchargées au premier appel et mises en cache dans ~/.cache/huggingface/datasets/. Les appels suivants lisent directement depuis le cache. La variable d’environnement HF_DATASETS_CACHE permet de changer l’emplacement, utile sur un serveur où l’espace du home est limité.

    Le streaming : travailler des téraoctets sur un laptop

    Pour les datasets qui ne tiennent pas sur le disque, streaming=True change la nature de l’objet retourné. Au lieu de tout télécharger, la bibliothèque lit les données à la volée au fur et à mesure de l’itération.

    # Streaming d'un dataset massif
    from datasets import load_dataset
    
    dataset = load_dataset(
        "HuggingFaceFW/fineweb",
        split="train",
        streaming=True
    )
    
    # Itération sans rien télécharger
    for i, example in enumerate(dataset):
        if i >= 10:
            break
        print(example["text"][:100])
    
    # Filtrage et transformation à la volée
    filtered = dataset.filter(lambda x: x["language_score"] > 0.95)
    sampled = filtered.take(1000)  # prend les 1000 premiers

    Le streaming s’appuie de plus en plus sur des formats efficaces comme Parquet, avec une lecture par blocs et des mécanismes d’optimisation côté Hub. Résultat : l’exploration de très gros datasets devient beaucoup plus fluide qu’un téléchargement complet, même si la vitesse dépend toujours du réseau, du format et de la structure des fichiers.

    Les datasets de référence à connaître

    Quelques datasets reviennent partout, à la fois comme benchmarks et comme matière première d’entraînement. Les connaître, c’est comprendre le vocabulaire implicite des papers et des annonces de modèles.

    Dataset Contenu Usage principal
    FineWeb / FineWeb-Edu Web anglais filtré, plus de 18T tokens pour FineWeb, environ 1T pour FineWeb-Edu Pré-entraînement de LLM, référence open source pour 2025-2026
    The Stack v2 Code source de 600+ langages de programmation Entraînement de modèles de code (StarCoder, Codestral)
    MMLU / MMLU-Pro 14 000 questions multi-domaines avec 4 choix Benchmark d’évaluation de connaissances générales
    HumanEval / MBPP Problèmes de programmation Python avec tests Benchmark de génération de code
    SQuAD Questions-réponses sur articles Wikipedia Fine-tuning et évaluation de modèles Q&R
    Common Voice Enregistrements audio dans 100+ langues (projet Mozilla) Entraînement de modèles de reconnaissance vocale
    LAION-5B 5,8 milliards de paires image-texte Entraînement de modèles text-to-image
    OpenAssistant / UltraChat Dialogues humain-IA annotés Fine-tuning conversationnel (instruction tuning)

    Pour le fine-tuning conversationnel en français spécifiquement, regardez du côté de Croissant-LLM, BLOOMZ, OpenAssistant-fr. La production francophone de datasets a progressé, mais reste nettement inférieure à l’anglais en volume.

    Préparer son propre dataset pour du fine-tuning

    À partir d’un certain niveau de personnalisation, les datasets publics ne suffisent plus. Vous voulez un modèle qui répond avec le ton de votre marque, qui connaît votre produit, qui structure ses réponses dans votre format métier. Il faut alors créer son propre dataset. La structure dépend du type de fine-tuning.

    Format instruction simple

    Pour un modèle qui exécute une tâche précise à partir d’une consigne. Structure JSONL (un JSON par ligne), avec trois champs :

    # instruction_dataset.jsonl — une ligne par exemple
    {"instruction": "Résume ce texte en une phrase.", "input": "La réunion s'est tenue hier matin...", "output": "Réunion de lancement du projet X hier matin."}
    {"instruction": "Traduis en anglais.", "input": "Bonjour, comment allez-vous ?", "output": "Hello, how are you?"}
    {"instruction": "Identifie la catégorie.", "input": "Facture électricité janvier", "output": "Énergie"}

    Format conversationnel

    Pour fine-tuner un assistant qui gère des dialogues multi-tours. C’est le format le plus répandu depuis 2024. Une liste de messages avec rôles system, user et assistant.

    # chat_dataset.jsonl
    {"messages": [
      {"role": "system", "content": "Tu es un expert en droit du travail français."},
      {"role": "user", "content": "Combien de jours de RTT minimum par an ?"},
      {"role": "assistant", "content": "Il n'existe pas de minimum légal national. Les RTT dépendent de l'accord d'entreprise..."}
    ]}
    {"messages": [
      {"role": "user", "content": "Est-ce que mon employeur peut refuser mes congés ?"},
      {"role": "assistant", "content": "Oui, dans la limite du délai légal de prévenance et avec un motif..."}
    ]}

    Format préférence pour alignement

    Pour du DPO (Direct Preference Optimization) ou du RLHF. Chaque exemple contient une entrée, une réponse préférée et une réponse rejetée. Permet d’apprendre au modèle quelle sortie correspond mieux à vos attentes.

    # preference_dataset.jsonl
    {"prompt": "Explique la photosynthèse à un enfant de 8 ans.",
     "chosen": "Les plantes mangent la lumière du soleil. Elles prennent aussi de l'air et de l'eau. Elles fabriquent leur nourriture avec tout ça.",
     "rejected": "La photosynthèse est un processus biochimique complexe impliquant la conversion de l'énergie lumineuse..."}
    La qualité bat toujours la quantité

    Pour du fine-tuning supervisé d’un LLM moderne, 500 à 2 000 exemples très soignés produisent souvent de meilleurs résultats que 50 000 exemples bruts. Consacrez votre temps à la qualité des réponses de référence, à la diversité des cas couverts, à la cohérence du style — pas à gonfler le volume.

    Uploader votre dataset sur le Hub

    Une fois vos données prêtes, deux méthodes pour les déposer sur le Hub.

    Méthode 1 — push_to_hub depuis Python

    La voie naturelle quand vous avez déjà manipulé vos données dans datasets ou pandas.

    # Authentification une fois
    hf auth login
    
    # Script Python
    from datasets import Dataset
    import pandas as pd
    
    # Depuis un CSV local
    df = pd.read_csv("mon_dataset.csv")
    dataset = Dataset.from_pandas(df)
    
    # Depuis un JSONL
    from datasets import load_dataset
    dataset = load_dataset("json", data_files="chat_dataset.jsonl")
    
    # Upload privé (visible par vous seul)
    dataset.push_to_hub(
        "votre-username/mon-dataset-chat",
        private=True
    )
    
    # Upload public
    dataset.push_to_hub("votre-username/mon-dataset-public")

    La bibliothèque prépare les fichiers, crée le dépôt s’il n’existe pas, et peut rendre le dataset compatible avec le Dataset Viewer selon son format et sa structure. Votre dataset est utilisable depuis Python avec load_dataset() dans les minutes qui suivent.

    Méthode 2 — upload manuel via l’interface web

    Plus adapté aux fichiers volumineux déjà préparés en Parquet ou pour un simple drag-and-drop. Sur huggingface.co, icône profil → « New Dataset », choisissez un nom et la visibilité, puis onglet « Files and versions » → « Add file ». Formats acceptés nativement : CSV, JSON, JSONL, TXT, Parquet.

    Pour les datasets multimodaux (images + métadonnées, audio + transcriptions), suivez les conventions de nommage : fichier metadata.csv ou metadata.jsonl à côté du dossier de médias, colonne file_name pour le lien. La structure est détectée automatiquement par le Dataset Viewer.

    Les limites de taille à connaître

    Le Hub applique des plafonds techniques qui conditionnent la structure de vos dépôts :

    • 200 Go par fichier — Limite absolue imposée par LFS. Au-delà, shardez votre dataset.
    • 50 Go par fichier recommandé — Au-delà, les performances de téléchargement et de traitement se dégradent.
    • 10 000 fichiers par dossier — Au-delà, Git rame. Si vous avez 100 000 images, découpez en sous-dossiers images/part-00/, part-01/, etc.
    • 100 000 fichiers par dépôt — Limite globale par dataset.

    Le format Parquet règle une grande partie de ces problèmes. Convertissez vos CSV et JSONL en Parquet avec dataset.to_parquet() avant l’upload final. Compression meilleure, lecture plus rapide, et compatibilité native avec le Dataset Viewer et les bibliothèques de traitement (pandas, polars, Spark, DuckDB).

    Créer une model card de dataset qui sert à quelque chose

    Le fichier README.md à la racine de votre dépôt de dataset est sa carte d’identité. Sept éléments à renseigner systématiquement :

    Élément 01
    Description et objectif

    Ce que contient le dataset, pour quelle tâche il a été constitué, quelles questions il permet de répondre.

    Élément 02
    Structure des champs

    Nom de chaque colonne, type, contenu attendu. Un exemple concret en vaut dix définitions abstraites.

    Élément 03
    Source et collecte

    D’où viennent les données, comment elles ont été collectées, si elles ont été annotées, par qui.

    Élément 04
    Licence

    Déclarée en YAML front-matter du README. Détermine si le dataset est utilisable en production commerciale.

    Élément 05
    Biais connus

    Sur-représentation de certains groupes, couvertures linguistiques inégales, biais temporel. Ne masquez rien : transparence renforce l’adoption.

    Élément 06
    Splits et statistiques

    Taille train/validation/test, distributions des classes, longueurs moyennes. Le Dataset Viewer les affiche automatiquement si vos fichiers sont bien nommés.

    Élément 07
    Citation

    Si votre dataset est issu d’une publication académique ou d’un projet nommé, donnez la référence bibliographique à utiliser.

    Ce que vous saurez faire après cet article

    Vous trouvez un dataset existant pour votre tâche en utilisant les filtres Task, Language, Size et License, puis vous le chargez en streaming pour l’explorer sans saturer votre disque. Ensuite, vous savez quel format (JSONL instruction, JSONL chat, JSONL préférence) correspond à quel type de fine-tuning. Vous préparez également vos propres données en Python, vous les uploadez sur le Hub en une commande, et vous documentez votre dataset de manière à ce qu’un autre développeur puisse le réutiliser sans vous poser de questions.

    L’article suivant passe à la couche de démonstration : les Spaces. Comment construire en dix minutes une application web interactive qui expose votre modèle ou votre dataset, que ce soit pour un test interne, un portfolio ou un produit public.

    Continuer la série
    Poursuivre avec les guides Hugging Face

    Modèles, datasets, Spaces, Transformers, AutoTrain et déploiement : retrouvez la série complète pour passer de la découverte à un usage plus avancé de Hugging Face.

    Voir la série Hugging Face
    Mise à jour : 1er juin 2026
    Étiquettes: