Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Collecte et Prétraitement des Données | Construction et Entraînement de Modèles Génératifs
IA Générative

bookCollecte et Prétraitement des Données

L'entraînement de modèles génératifs nécessite non seulement une bonne architecture et des fonctions de perte adaptées, mais aussi des données propres, bien structurées et diversifiées. Cette section présente des jeux de données de haute qualité couvrant les modalités visuelle, textuelle et audio, fournit des techniques de prétraitement détaillées adaptées aux pipelines génératifs modernes, et aborde des stratégies robustes de partitionnement des données avec des outils pratiques.

Collecte de données

La collecte de données pour la modélisation générative dépend du domaine, de la disponibilité des sources, de l'échelle et des licences. Pour les données textuelles et visuelles, les sources courantes incluent les jeux de données ouverts, le contenu extrait et les référentiels structurés (par exemple, archives académiques, réseaux sociaux ou plateformes de commerce électronique).

Techniques de web scraping

Lorsque les ensembles de données ne sont pas facilement disponibles, il est possible de collecter des données sur le web à l'aide d'outils de scraping. Le web scraping permet d'extraire de manière programmatique des informations à partir de pages HTML. Il s'agit d'une méthode puissante pour collecter des données réelles et non structurées lorsque les API ne sont pas accessibles. Cependant, le scraping implique des responsabilités techniques et éthiques.

Les méthodes de scraping comprennent généralement :

  • Envoi de requêtes HTTP pour récupérer des pages web. Cela permet d'accéder au contenu HTML brut d'une page ;
  • Analyse du contenu HTML pour extraire des données structurées. Des outils comme BeautifulSoup transforment le HTML non structuré en balises et éléments accessibles ;
  • Navigation sur des pages dynamiques à l'aide de l'automatisation de navigateur. Les sites web fortement basés sur JavaScript nécessitent des outils comme Selenium pour afficher entièrement le contenu ;
  • Stockage des données extraites dans des formats exploitables tels que CSV ou JSON. Cela garantit la compatibilité avec les étapes ultérieures de prétraitement et d'entraînement du modèle.

Voici deux stratégies courantes de scraping :

Extraction de texte avec BeautifulSoup

BeautifulSoup est une bibliothèque Python utilisée pour analyser des pages HTML statiques.

1234567891011
import requests from bs4 import BeautifulSoup url = "https://docs.python.org/3/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # Extract paragraphs paragraphs = [p.text for p in soup.find_all('p')] text = "\n".join(paragraphs) print(text)
copy

Extraction d’images avec Selenium

Selenium automatise un navigateur pour extraire du contenu à partir de pages générées avec JavaScript.

123456789101112131415161718
# INSTALL SELENIUM # THIS CODE DOWNLOAD IMAGES (I NEED JUST VIZUALIZATION) from selenium import webdriver import time import urllib.request url = "https://example.com/gallery" driver = webdriver.Chrome() driver.get(url) time.sleep(2) images = driver.find_elements("tag name", "img") for idx, img in enumerate(images): src = img.get_attribute('src') if src: urllib.request.urlretrieve(src, f"image_{idx}.jpg") driver.quit()
copy
Note
Remarque

Toujours consulter les conditions d’utilisation d’un site web avant d’effectuer une extraction. Utiliser des fréquences de requêtes modérées et respecter le fichier robots.txt. Une extraction inappropriée peut entraîner un bannissement d’adresse IP ou des conséquences juridiques.

Dans les contextes GenAI, le web scraping constitue souvent une étape préalable à la création de jeux de données de pré-entraînement, en particulier pour les langues spécifiques à un domaine ou à faibles ressources. Des outils tels que Scrapy, playwright ou des API sans navigateur sont également fréquemment utilisés pour des tâches à grande échelle.

Techniques de prétraitement

Le prétraitement des données doit être adapté à la modalité, au type de modèle et aux contraintes de qualité. Pour la modélisation générative de niveau production, les pipelines incluent souvent des transformations spécifiques au domaine, une adaptation de la résolution et un filtrage basé sur le contenu.

Prétraitement des images

  • Redimensionnement : adapter la résolution du jeu de données à l'entrée du modèle (par exemple, 64x64 pour les premiers GAN, 512x512 pour les modèles de diffusion);
  • Normalisation : mise à l'échelle des valeurs de pixels vers une plage standard, généralement [−1, 1] ou [0, 1];
  • Gestion de l'espace colorimétrique : garantir la cohérence des couleurs — conversion en RGB ou en niveaux de gris. Pour la génération conditionnelle, conserver les canaux alpha si présents;
  • Augmentation des données : introduction de variations pendant l'entraînement via des transformations.

Prétraitement du texte

  • Nettoyage : suppression des caractères spéciaux, des espaces supplémentaires et du bruit ;
12345
import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
copy
  1. r"[^\w\s]" :

    • \w : correspond à tout caractère alphanumérique (lettres A-Z, a-z, chiffres 0-9) et au soulignement _ ;
    • \s : correspond à tout caractère d’espace blanc (espaces, tabulations, retours à la ligne) ;
    • [^...] : classe de caractères négative — correspond à tout ce qui n’est pas listé à l’intérieur ;
    • Signification : ce motif correspond à tous les caractères sauf les lettres, chiffres, soulignements et espaces blancs. Il permet donc de supprimer la ponctuation et les symboles (comme , !, etc.).
  2. r"\s+" :

    • \s : correspond à tout caractère d’espace blanc ;
    • + : correspond à une ou plusieurs occurrences du caractère précédent ;
    • Signification : ceci remplace plusieurs espaces blancs consécutifs par un seul espace.
  3. .strip() : supprime les espaces blancs en début et fin de chaîne nettoyée.

Pour plus d’informations sur la syntaxe RegEx, consulter la documentation.

  • Conversion en minuscules : standardisation du texte en minuscules pour garantir la cohérence. À appliquer de manière sélective, car certains modèles comme BERT sont sensibles à la casse ou non.
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisation : divise le texte en jetons ou sous-mots pour la modélisation ;
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
copy
  • Racinisation/Lemmatisation : rarement utilisée dans les pipelines d'apprentissage profond mais présente dans le traitement du langage naturel traditionnel ou les filtres de pré-entraînement ;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Remplissage/Troncature : voir l'exemple ci-dessus avec max_length.
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
copy
Note
Remarque

Construire des pipelines de prétraitement modulaires en gardant à l'esprit la reproductibilité. Utiliser DVC, wandb artifacts ou huggingface/datasets avec streaming + mise en cache.

Stratégies de découpage des données

Un découpage efficace des données est essentiel pour la généralisation, en particulier dans la modélisation générative où le surapprentissage des modes ou la mémorisation sont fréquents.

Découpage Entraînement/Validation/Test

  • Ratios conventionnels : 80/10/10 ou 70/15/15 selon la taille du jeu de données ;
  • Découpage sensible au contenu : stratifier les découpages par classe (vision), sujet (texte).
  • Cas d'utilisation :
    • Entraînement : optimisation du modèle ;
    • Validation : guidage du checkpointing, arrêt anticipé et ajustement des métriques (par exemple, FID) ;
    • Test : entièrement réservé jusqu'au benchmarking final du modèle.

Exemple utilisant train_test_split :

Pour les jeux de données Hugging Face :

Validation croisée et bootstrap

  • Pour les domaines à faibles ressources ou sans données annotées, utilisation de la validation croisée K-fold (par exemple, K=5 ou 10) ;
  • Dans les modèles de diffusion, utilisation du bootstrap FID/LPIPS pour évaluer la stabilité de la génération ;
  • Inspection visuelle ou perceptuelle à associer à la validation numérique.

Exemple de configuration K-fold :

Jeux de données couramment utilisés

Le choix du jeu de données approprié dépend de la modalité, de l'échelle des données, des licences et de l'objectif génératif spécifique (par exemple, génération inconditionnelle, synthèse conditionnelle ou transfert de style).

Jeux de données pour la vision par ordinateur

  • CIFAR-10 : 60 000 images RGB basse résolution 32×32 réparties en 10 classes. Léger, idéal pour le prototypage rapide, les tests unitaires et l'évaluation des boucles d'entraînement pour les GAN d'images ;
  • CelebA : plus de 200 000 visages de célébrités alignés, annotés avec 40 attributs binaires. Utilisé fréquemment pour la génération conditionnée par attributs, l'édition de visage préservant l'identité et les modèles encodeur-décodeur ;
  • LSUN : jeu de données de scènes à grande échelle contenant des millions d'images dans des catégories telles que chambres à coucher, églises et salles à manger. Essentiel pour la synthèse haute résolution et l'entraînement progressif des GAN ;
  • ImageNet : plus de 14 millions d'images de haute qualité annotées dans 20 000 classes. Utilisé principalement pour l'apprentissage par transfert, la pré-formation de modèles de diffusion et comme base pour la génération guidée par le style.

Jeux de données textuels

  • WikiText : articles Wikipédia nettoyés (WikiText-2 : 2M de tokens, WikiText-103 : plus de 100M). Utile pour l'évaluation de la modélisation du langage et l'ajustement fin de modèles décodeur-seuls comme GPT ;
  • BookCorpus : plus de 11 000 romans gratuits. Essentiel pour la génération de style narratif, les transformeurs à long contexte et la pré-formation de modèles fondamentaux (par exemple, BERT, GPT-2) ;
  • Common Crawl / C4 : données web multilingues à l'échelle du pétaoctet. C4 est une variante dédupliquée et filtrée, sélectionnée pour l'entraînement de modèles de langage de haute qualité (par exemple, T5) ;
  • The Pile : 825 Go de données diversifiées (livres, ArXiv, StackExchange, GitHub, etc.). Conçu pour entraîner des modèles de type GPT compétitifs avec les LLM d'OpenAI.

Résumé

  • Sélection de jeux de données selon la qualité, la licence, l’échelle et l’adéquation avec les objectifs génératifs ;
  • Application de pipelines de prétraitement adaptés à chaque modalité à l’aide d’outils robustes et de niveau industriel ;
  • Mise en place de stratégies de séparation rigoureuses pour garantir la reproductibilité, éviter les fuites et permettre une évaluation équitable.

1. Pourquoi la qualité des données est-elle plus importante que la quantité lors de l’entraînement de modèles d’IA générative ?

2. Quel est un défi courant lors de la collecte de données diversifiées pour l’entraînement de modèles génératifs ?

3. Quel est l'objectif principal de l'augmentation de données dans le contexte de l'entraînement d'une IA générative ?

question mark

Pourquoi la qualité des données est-elle plus importante que la quantité lors de l’entraînement de modèles d’IA générative ?

Select the correct answer

question mark

Quel est un défi courant lors de la collecte de données diversifiées pour l’entraînement de modèles génératifs ?

Select the correct answer

question mark

Quel est l'objectif principal de l'augmentation de données dans le contexte de l'entraînement d'une IA générative ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 4.76

bookCollecte et Prétraitement des Données

Glissez pour afficher le menu

L'entraînement de modèles génératifs nécessite non seulement une bonne architecture et des fonctions de perte adaptées, mais aussi des données propres, bien structurées et diversifiées. Cette section présente des jeux de données de haute qualité couvrant les modalités visuelle, textuelle et audio, fournit des techniques de prétraitement détaillées adaptées aux pipelines génératifs modernes, et aborde des stratégies robustes de partitionnement des données avec des outils pratiques.

Collecte de données

La collecte de données pour la modélisation générative dépend du domaine, de la disponibilité des sources, de l'échelle et des licences. Pour les données textuelles et visuelles, les sources courantes incluent les jeux de données ouverts, le contenu extrait et les référentiels structurés (par exemple, archives académiques, réseaux sociaux ou plateformes de commerce électronique).

Techniques de web scraping

Lorsque les ensembles de données ne sont pas facilement disponibles, il est possible de collecter des données sur le web à l'aide d'outils de scraping. Le web scraping permet d'extraire de manière programmatique des informations à partir de pages HTML. Il s'agit d'une méthode puissante pour collecter des données réelles et non structurées lorsque les API ne sont pas accessibles. Cependant, le scraping implique des responsabilités techniques et éthiques.

Les méthodes de scraping comprennent généralement :

  • Envoi de requêtes HTTP pour récupérer des pages web. Cela permet d'accéder au contenu HTML brut d'une page ;
  • Analyse du contenu HTML pour extraire des données structurées. Des outils comme BeautifulSoup transforment le HTML non structuré en balises et éléments accessibles ;
  • Navigation sur des pages dynamiques à l'aide de l'automatisation de navigateur. Les sites web fortement basés sur JavaScript nécessitent des outils comme Selenium pour afficher entièrement le contenu ;
  • Stockage des données extraites dans des formats exploitables tels que CSV ou JSON. Cela garantit la compatibilité avec les étapes ultérieures de prétraitement et d'entraînement du modèle.

Voici deux stratégies courantes de scraping :

Extraction de texte avec BeautifulSoup

BeautifulSoup est une bibliothèque Python utilisée pour analyser des pages HTML statiques.

1234567891011
import requests from bs4 import BeautifulSoup url = "https://docs.python.org/3/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # Extract paragraphs paragraphs = [p.text for p in soup.find_all('p')] text = "\n".join(paragraphs) print(text)
copy

Extraction d’images avec Selenium

Selenium automatise un navigateur pour extraire du contenu à partir de pages générées avec JavaScript.

123456789101112131415161718
# INSTALL SELENIUM # THIS CODE DOWNLOAD IMAGES (I NEED JUST VIZUALIZATION) from selenium import webdriver import time import urllib.request url = "https://example.com/gallery" driver = webdriver.Chrome() driver.get(url) time.sleep(2) images = driver.find_elements("tag name", "img") for idx, img in enumerate(images): src = img.get_attribute('src') if src: urllib.request.urlretrieve(src, f"image_{idx}.jpg") driver.quit()
copy
Note
Remarque

Toujours consulter les conditions d’utilisation d’un site web avant d’effectuer une extraction. Utiliser des fréquences de requêtes modérées et respecter le fichier robots.txt. Une extraction inappropriée peut entraîner un bannissement d’adresse IP ou des conséquences juridiques.

Dans les contextes GenAI, le web scraping constitue souvent une étape préalable à la création de jeux de données de pré-entraînement, en particulier pour les langues spécifiques à un domaine ou à faibles ressources. Des outils tels que Scrapy, playwright ou des API sans navigateur sont également fréquemment utilisés pour des tâches à grande échelle.

Techniques de prétraitement

Le prétraitement des données doit être adapté à la modalité, au type de modèle et aux contraintes de qualité. Pour la modélisation générative de niveau production, les pipelines incluent souvent des transformations spécifiques au domaine, une adaptation de la résolution et un filtrage basé sur le contenu.

Prétraitement des images

  • Redimensionnement : adapter la résolution du jeu de données à l'entrée du modèle (par exemple, 64x64 pour les premiers GAN, 512x512 pour les modèles de diffusion);
  • Normalisation : mise à l'échelle des valeurs de pixels vers une plage standard, généralement [−1, 1] ou [0, 1];
  • Gestion de l'espace colorimétrique : garantir la cohérence des couleurs — conversion en RGB ou en niveaux de gris. Pour la génération conditionnelle, conserver les canaux alpha si présents;
  • Augmentation des données : introduction de variations pendant l'entraînement via des transformations.

Prétraitement du texte

  • Nettoyage : suppression des caractères spéciaux, des espaces supplémentaires et du bruit ;
12345
import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
copy
  1. r"[^\w\s]" :

    • \w : correspond à tout caractère alphanumérique (lettres A-Z, a-z, chiffres 0-9) et au soulignement _ ;
    • \s : correspond à tout caractère d’espace blanc (espaces, tabulations, retours à la ligne) ;
    • [^...] : classe de caractères négative — correspond à tout ce qui n’est pas listé à l’intérieur ;
    • Signification : ce motif correspond à tous les caractères sauf les lettres, chiffres, soulignements et espaces blancs. Il permet donc de supprimer la ponctuation et les symboles (comme , !, etc.).
  2. r"\s+" :

    • \s : correspond à tout caractère d’espace blanc ;
    • + : correspond à une ou plusieurs occurrences du caractère précédent ;
    • Signification : ceci remplace plusieurs espaces blancs consécutifs par un seul espace.
  3. .strip() : supprime les espaces blancs en début et fin de chaîne nettoyée.

Pour plus d’informations sur la syntaxe RegEx, consulter la documentation.

  • Conversion en minuscules : standardisation du texte en minuscules pour garantir la cohérence. À appliquer de manière sélective, car certains modèles comme BERT sont sensibles à la casse ou non.
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisation : divise le texte en jetons ou sous-mots pour la modélisation ;
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
copy
  • Racinisation/Lemmatisation : rarement utilisée dans les pipelines d'apprentissage profond mais présente dans le traitement du langage naturel traditionnel ou les filtres de pré-entraînement ;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Remplissage/Troncature : voir l'exemple ci-dessus avec max_length.
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
copy
Note
Remarque

Construire des pipelines de prétraitement modulaires en gardant à l'esprit la reproductibilité. Utiliser DVC, wandb artifacts ou huggingface/datasets avec streaming + mise en cache.

Stratégies de découpage des données

Un découpage efficace des données est essentiel pour la généralisation, en particulier dans la modélisation générative où le surapprentissage des modes ou la mémorisation sont fréquents.

Découpage Entraînement/Validation/Test

  • Ratios conventionnels : 80/10/10 ou 70/15/15 selon la taille du jeu de données ;
  • Découpage sensible au contenu : stratifier les découpages par classe (vision), sujet (texte).
  • Cas d'utilisation :
    • Entraînement : optimisation du modèle ;
    • Validation : guidage du checkpointing, arrêt anticipé et ajustement des métriques (par exemple, FID) ;
    • Test : entièrement réservé jusqu'au benchmarking final du modèle.

Exemple utilisant train_test_split :

Pour les jeux de données Hugging Face :

Validation croisée et bootstrap

  • Pour les domaines à faibles ressources ou sans données annotées, utilisation de la validation croisée K-fold (par exemple, K=5 ou 10) ;
  • Dans les modèles de diffusion, utilisation du bootstrap FID/LPIPS pour évaluer la stabilité de la génération ;
  • Inspection visuelle ou perceptuelle à associer à la validation numérique.

Exemple de configuration K-fold :

Jeux de données couramment utilisés

Le choix du jeu de données approprié dépend de la modalité, de l'échelle des données, des licences et de l'objectif génératif spécifique (par exemple, génération inconditionnelle, synthèse conditionnelle ou transfert de style).

Jeux de données pour la vision par ordinateur

  • CIFAR-10 : 60 000 images RGB basse résolution 32×32 réparties en 10 classes. Léger, idéal pour le prototypage rapide, les tests unitaires et l'évaluation des boucles d'entraînement pour les GAN d'images ;
  • CelebA : plus de 200 000 visages de célébrités alignés, annotés avec 40 attributs binaires. Utilisé fréquemment pour la génération conditionnée par attributs, l'édition de visage préservant l'identité et les modèles encodeur-décodeur ;
  • LSUN : jeu de données de scènes à grande échelle contenant des millions d'images dans des catégories telles que chambres à coucher, églises et salles à manger. Essentiel pour la synthèse haute résolution et l'entraînement progressif des GAN ;
  • ImageNet : plus de 14 millions d'images de haute qualité annotées dans 20 000 classes. Utilisé principalement pour l'apprentissage par transfert, la pré-formation de modèles de diffusion et comme base pour la génération guidée par le style.

Jeux de données textuels

  • WikiText : articles Wikipédia nettoyés (WikiText-2 : 2M de tokens, WikiText-103 : plus de 100M). Utile pour l'évaluation de la modélisation du langage et l'ajustement fin de modèles décodeur-seuls comme GPT ;
  • BookCorpus : plus de 11 000 romans gratuits. Essentiel pour la génération de style narratif, les transformeurs à long contexte et la pré-formation de modèles fondamentaux (par exemple, BERT, GPT-2) ;
  • Common Crawl / C4 : données web multilingues à l'échelle du pétaoctet. C4 est une variante dédupliquée et filtrée, sélectionnée pour l'entraînement de modèles de langage de haute qualité (par exemple, T5) ;
  • The Pile : 825 Go de données diversifiées (livres, ArXiv, StackExchange, GitHub, etc.). Conçu pour entraîner des modèles de type GPT compétitifs avec les LLM d'OpenAI.

Résumé

  • Sélection de jeux de données selon la qualité, la licence, l’échelle et l’adéquation avec les objectifs génératifs ;
  • Application de pipelines de prétraitement adaptés à chaque modalité à l’aide d’outils robustes et de niveau industriel ;
  • Mise en place de stratégies de séparation rigoureuses pour garantir la reproductibilité, éviter les fuites et permettre une évaluation équitable.

1. Pourquoi la qualité des données est-elle plus importante que la quantité lors de l’entraînement de modèles d’IA générative ?

2. Quel est un défi courant lors de la collecte de données diversifiées pour l’entraînement de modèles génératifs ?

3. Quel est l'objectif principal de l'augmentation de données dans le contexte de l'entraînement d'une IA générative ?

question mark

Pourquoi la qualité des données est-elle plus importante que la quantité lors de l’entraînement de modèles d’IA générative ?

Select the correct answer

question mark

Quel est un défi courant lors de la collecte de données diversifiées pour l’entraînement de modèles génératifs ?

Select the correct answer

question mark

Quel est l'objectif principal de l'augmentation de données dans le contexte de l'entraînement d'une IA générative ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1
some-alt