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

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

    Un modèle vaut ce que valent les données qui ont servi à l’entraîner ou à l’évaluer. Le Hub Hugging Face héberge plus de 500 000 datasets publics : textes, images, sons, code, dialogues, documents scientifiques et enregistrements de robots. Ce guide vous apprend à explorer ce catalogue, à charger un dataset en Python même s’il pèse plusieurs dizaines de téraoctets, à préparer vos propres données pour ajuster un modèle et à les publier sur le Hub dans le bon format.

    FineWeb, le dataset de pages web anglaises publié par Hugging Face, contient 18 500 milliards de tokens et occupe environ 50 téraoctets. Aucun ordinateur portable ne peut le stocker. Un chercheur peut pourtant commencer à l’explorer depuis sa machine, sans rien télécharger, parce que les données se lisent désormais à la volée, comme un flux. Cette évolution technique a changé la façon de travailler avec les datasets.

    La bibliothèque Python datasets rend ce flux utilisable pour entraîner, ajuster ou évaluer un modèle. Elle joue pour les données le rôle que Transformers joue pour les modèles : quelques lignes de code remplacent une chaîne complète d’ingénierie des données. Cet article clôt la série Hugging Face, après Hugging Face décrypté et le guide du Hub de modèles.

    Explorer le catalogue : cinq filtres qui comptent

    La page huggingface.co/datasets fonctionne comme celle des modèles. Sa colonne de filtres vous aide à cibler la recherche.

    • Tasks — Ce filtre sert de point d’entrée : génération de texte, questions-réponses, traduction, résumé, classification d’images, reconnaissance vocale ou robotique. Un dataset « text-generation » sert à entraîner un LLM, tandis qu’un dataset « question-answering » sert à entraîner ou évaluer un modèle de questions-réponses.
    • Languages — Des milliers de langues sont référencées. Pour travailler en français, filtrez sur fr : vous trouverez des corpus littéraires, des débats parlementaires, des textes juridiques ou des pages web.
    • Size — La taille va de moins de mille lignes à plus d’un milliard. Quelques milliers d’exemples suffisent souvent pour un ajustement supervisé, alors qu’un entraînement continu demande plutôt des centaines de millions de tokens.
    • Licenses — La logique est la même que pour les modèles. Pour un usage commercial, privilégiez Apache 2.0, MIT, CC-BY-4.0 ou ODC-By. Évitez CC-BY-NC, qui interdit l’usage commercial, et lisez attentivement les licences maison.
    • Modalities — Ce filtre sépare le texte, l’image, l’audio, la vidéo, les tableaux et la 3D. Il devient de plus en plus utile avec l’essor des modèles qui mêlent plusieurs types de données.

    Deux catégories ont fortement progressé et méritent votre attention. La robotique a explosé : le Hub comptait 1 145 datasets de robotique en 2024 et près de 27 000 en 2025, ce qui en fait désormais la plus grande catégorie. Ces jeux de données enregistrent des gestes, des trajectoires, des vidéos et des mesures de capteurs, souvent au format de la bibliothèque LeRobot. Les données scientifiques progressent aussi, avec des protéines, de la dynamique moléculaire, de la chimie ou de la biologie. Ces deux segments montrent que l’IA ouverte dépasse désormais le texte et l’image.

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

    Sur la page d’un dataset public compatible, le Dataset Viewer affiche les premières lignes dans un tableau interactif. Vous voyez la structure des colonnes, les types de données et la répartition entre entraînement, validation et test. La console SQL intégrée permet aussi d’interroger les données sans rien rapatrier.

    Cette fonction repose sur une conversion automatique au format Parquet, un format en colonnes conçu pour la lecture rapide. Vous pouvez ainsi juger un dataset dans le navigateur avant de décider de l’utiliser.

    Charger un dataset en Python en une ligne

    La bibliothèque datasets accompagne Transformers et s’installe de la même façon.

    # Installation
    pip install -U datasets
    
    # Chargement d'un dataset du Hub en une ligne
    from datasets import load_dataset
    
    dataset = load_dataset("stanfordnlp/imdb")
    print(dataset)
    # DatasetDict({
    #     train: Dataset({
    #         features: ['text', 'label'],
    #         num_rows: 25000
    #     })
    #     test: Dataset({
    #         features: ['text', 'label'],
    #         num_rows: 25000
    #     })
    #     unsupervised: Dataset({
    #         features: ['text', 'label'],
    #         num_rows: 50000
    #     })
    # })
    
    # 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, puis rangées dans le cache ~/.cache/huggingface/datasets/. Les appels suivants lisent directement ce cache. La variable d’environnement HF_DATASETS_CACHE change cet emplacement, ce qui rend service sur un serveur où le dossier personnel manque de place.

    Depuis la version 4 de la bibliothèque, sortie en juillet 2025, les datasets qui reposaient sur un script Python de chargement ne fonctionnent plus. Si un ancien tutoriel renvoie l’erreur « Dataset scripts are no longer supported », cherchez une version du même dataset au format Parquet, CSV ou JSON, souvent publiée par l’organisation d’origine.

    Le streaming : parcourir des téraoctets depuis un portable

    Pour les datasets qui ne tiennent pas sur le disque, l’option streaming=True change la nature de l’objet renvoyé. La bibliothèque lit alors les données au fur et à mesure, au lieu de tout télécharger.

    # 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)  # garde les 1000 premiers

    Le streaming s’appuie sur le format Parquet et sur une lecture par blocs côté Hub. L’exploration d’un très gros dataset devient ainsi bien plus fluide qu’un téléchargement complet, même si la vitesse dépend toujours de votre connexion et de la structure des fichiers.

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

    Quelques datasets reviennent partout, comme tests de performance ou comme matière première d’entraînement. Les connaître aide à comprendre le vocabulaire des articles de recherche et des annonces de modèles.

    Dataset Contenu Usage principal
    FineWeb / FineWeb-Edu Pages web anglaises nettoyées : 18 500 milliards de tokens pour FineWeb, une sélection à visée éducative d’environ 1 300 milliards pour FineWeb-Edu Pré-entraînement de LLM, référence ouverte du domaine
    FineWeb-2 Pages web dans plus de 1 800 langues et écritures, dont environ 220 milliards de mots en français Pré-entraînement de modèles multilingues
    The Stack v2 Code source dans plus de 600 langages de programmation Entraînement de modèles de code comme StarCoder2
    MMLU / MMLU-Pro Environ 14 000 questions à 4 choix pour MMLU, 12 000 questions à 10 choix pour MMLU-Pro, sur des dizaines de disciplines Évaluation des connaissances générales d’un modèle
    HumanEval / MBPP Problèmes de programmation Python accompagnés de tests Évaluation de la génération de code
    SQuAD Questions-réponses sur des articles de Wikipédia Ajustement et évaluation de modèles de questions-réponses
    FLEURS Phrases lues à voix haute dans une centaine de langues, dont le français Évaluation de la reconnaissance vocale et de la traduction de la parole
    OpenAssistant / UltraChat Dialogues entre humains et IA, annotés Ajustement de modèles conversationnels

    Deux absences surprennent souvent. Common Voice, le grand corpus vocal de Mozilla, n’est plus distribué sur Hugging Face depuis octobre 2025 : il se télécharge désormais sur la plateforme Mozilla Data Collective, qui propose plus de 280 langues. LAION-5B, qui a servi à entraîner les premiers Stable Diffusion, a été retiré fin 2023 après la découverte d’images pédocriminelles, puis republié en août 2024 sous le nom Re-LAION-5B, dans une version nettoyée réservée à la recherche.

    Pour le français, le sous-ensemble fra_Latn de FineWeb-2 offre le plus gros volume de texte web, avec environ 500 Go de données. Le projet OpenLLM-France publie aussi le Lucie-Training-Dataset, le corpus documenté qui a servi à entraîner son modèle Lucie, et un dataset d’instructions de traduction. La production francophone progresse, mais elle reste loin de l’anglais en volume, surtout pour les dialogues annotés.

    Préparer son propre dataset pour ajuster un modèle

    À 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 ou qui présente ses réponses dans votre format métier. Il faut alors construire votre propre dataset, dont la structure dépend du type d’ajustement (fine-tuning).

    Format instruction simple

    Ce format convient à un modèle qui exécute une tâche précise à partir d’une consigne. On l’écrit en JSONL, avec un objet JSON par ligne et 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

    Ce format sert à ajuster un assistant qui mène des dialogues en plusieurs échanges, et c’est aujourd’hui le plus répandu. Chaque exemple contient une liste de messages avec les 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, il fixe l'ordre et les dates des départs, dans le respect des règles de prévenance..."}
    ]}

    Format de préférence pour l’alignement

    Ce format sert aux méthodes d’alignement comme le DPO (Direct Preference Optimization). Chaque exemple contient une consigne, une réponse préférée et une réponse rejetée, ce qui apprend au modèle quelle sortie correspond le mieux à vos attentes.

    # preference_dataset.jsonl
    {"prompt": "Explique la photosynthèse à un enfant de 8 ans.",
     "chosen": "Les plantes se nourrissent grâce à la lumière du soleil. Elles prennent aussi de l'air et de l'eau, et 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é compte plus que la quantité

    Pour l’ajustement supervisé d’un LLM récent, 500 à 2 000 exemples très soignés donnent 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 et à la cohérence du style, plutôt qu’au volume.

    Publier votre dataset sur le Hub

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

    Méthode 1 : push_to_hub depuis Python

    C’est la voie naturelle quand vous avez déjà manipulé vos données avec datasets ou pandas.

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

    La bibliothèque convertit les données en Parquet, crée le dépôt s’il n’existe pas et rend le dataset lisible par le Dataset Viewer. Vous pouvez le recharger avec load_dataset() quelques minutes plus tard. Un compte gratuit dispose de 100 Go de stockage privé, et l’abonnement PRO en offre 1 To.

    Méthode 2 : le dépôt manuel dans l’interface web

    Cette méthode convient aux fichiers déjà préparés, par exemple en Parquet, ou à un simple glisser-déposer. Sur huggingface.co, cliquez sur votre profil puis sur « New Dataset », choisissez un nom et la visibilité, puis ouvrez l’onglet « Files and versions » et cliquez sur « Add file ». Le Hub reconnaît directement les formats CSV, JSON, JSONL, TXT et Parquet.

    Pour les datasets qui mêlent médias et texte, comme des images avec leurs descriptions ou des sons avec leurs transcriptions, suivez les conventions de nommage. Placez un fichier metadata.csv ou metadata.jsonl à côté du dossier de médias, avec une colonne file_name qui fait le lien. Le Dataset Viewer détecte alors la structure tout seul.

    Les limites de taille à connaître

    Le Hub applique des plafonds techniques qui influencent l’organisation de vos dépôts :

    • 500 Go par fichier — C’est la limite absolue. Hugging Face recommande de découper vos fichiers en morceaux de moins de 200 Go.
    • 10 000 fichiers par dossier — Au-delà, le dépôt refuse les fichiers. Si vous avez 100 000 images, répartissez-les dans des sous-dossiers comme images/000/, images/001/ et ainsi de suite.
    • 100 000 fichiers par dépôt — Ce seuil est une recommandation plutôt qu’une limite stricte, mais les performances se dégradent nettement au-delà.
    • 50 à 100 fichiers par envoi — Chaque envoi (commit) doit aboutir en moins de 60 secondes. La commande hf upload découpe automatiquement les gros dossiers en plusieurs envois.

    Le format Parquet règle une grande partie de ces problèmes. Convertissez vos CSV et JSONL avec dataset.to_parquet() avant la publication finale. Vous obtenez une meilleure compression, une lecture plus rapide et une compatibilité directe avec le Dataset Viewer et les outils de traitement comme pandas, Polars, Spark ou DuckDB. Hugging Face stocke désormais les fichiers avec sa technologie Xet, qui ne renvoie que les parties modifiées d’un fichier quand vous publiez une nouvelle version.

    Rédiger une fiche de dataset qui sert à quelque chose

    Le fichier README.md placé à la racine du dépôt tient lieu de carte d’identité du dataset. Il doit renseigner sept éléments :

    Élément 01
    Description et objectif

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

    Élément 02
    Structure des champs

    Donnez le nom, le type et le contenu attendu de chaque colonne. Un exemple concret vaut mieux que dix définitions abstraites.

    Élément 03
    Source et collecte

    Indiquez d’où viennent les données, comment elles ont été collectées et qui les a annotées.

    Élément 04
    Licence

    Déclarez-la dans l’en-tête YAML du README. Elle détermine si le dataset peut servir dans un produit commercial.

    Élément 05
    Biais connus

    Signalez les groupes surreprésentés, les langues mal couvertes ou les périodes absentes. La transparence rassure et favorise la réutilisation.

    Élément 06
    Découpage et statistiques

    Précisez la taille des parties entraînement, validation et test, la répartition des classes et les longueurs moyennes. Le Dataset Viewer les affiche tout seul si vos fichiers sont bien nommés.

    Élément 07
    Citation

    Si le dataset vient d’une publication scientifique ou d’un projet nommé, donnez la référence à citer.

    Ce que vous saurez faire après cet article

    Vous trouvez un dataset adapté à votre tâche grâce aux filtres Tasks, Languages, Size et Licenses, puis vous le chargez en streaming pour l’explorer sans saturer votre disque. Vous savez quel format JSONL correspond à quel type d’ajustement : instruction, conversation ou préférence. Vous préparez vos propres données en Python, vous les publiez sur le Hub en une commande, et vous les documentez pour qu’un autre développeur puisse les réutiliser sans vous poser de questions.

    Vous avez fait le tour de la série. Pour revoir les bases ou orienter un collègue qui découvre la plateforme, le guide pour débuter sur Hugging Face rassemble les trois volets. Et si vous voulez faire tourner un modèle sur votre machine, Ollama reste le point de départ le plus simple.

    Série Hugging Face
    Revenir au guide Hugging Face

    Retrouvez la méthode pour débuter sans coder et les trois volets de la série : la plateforme, le Hub de modèles et les datasets.

    Voir le guide Hugging Face ↗
    Mise à jour : 23 septembre 2026
    Étiquettes: