Big Data
Le big data désigne des données trop volumineuses, rapides ou variées pour les outils d’une seule machine. Présentation des trois V, de MapReduce et Spark, et des jeux de données à l’origine de l’IA moderne.
Les mégadonnées désignent des données dont la taille, le débit d’arrivée ou la diversité des formats dépassent les capacités de stockage et de traitement d’une seule machine et des outils conventionnels de base de données ; elles sont donc réparties entre des grappes de machines qui les traitent en parallèle. En 2001, l’analyste Doug Laney, du META Group, a décrit le défi au moyen de trois V : le volume, c’est-à-dire la quantité de données ; la vélocité, c’est-à-dire la vitesse à laquelle elles arrivent et doivent être traitées ; et la variété, c’est-à-dire l’éventail des tableaux structurés, journaux, textes, images, sons et vidéos. Des définitions ultérieures ajoutent la véracité, soit la fiabilité des données, et la valeur. Pour l’apprentissage automatique, les mégadonnées sont à la fois la matière première et un défi d’ingénierie : les modèles s’améliorent avec davantage de données d’entraînement, et les pipelines qui les collectent, les nettoient et les mettent à disposition exigent une grande partie du travail nécessaire à leur création.
Les mégadonnées en IA et en vision par ordinateur#
L’apprentissage profond s’est développé parallèlement à des jeux de données trop volumineux pour un seul disque. ImageNet, lancé en 2009, a atteint plus de 14 millions d’images étiquetées ; ses 1,28 million d’images d’entraînement pour le défi à 1 000 classes ont servi à entraîner le réseau de neurones convolutif AlexNet, vainqueur de la compétition de 2012. Le jeu de données SA-1B de Meta, publié en 2023 avec le Segment Anything Model, contient 11 millions d’images et 1,1 milliard de masques de segmentation ; Meta a préentraîné Llama 3 sur plus de 15 000 milliards de jetons de texte. Les lois d’échelle expliquent l’intérêt de telles collections : la perte diminue de façon prévisible lorsque les données, les paramètres et la puissance de calcul augmentent ensemble.
En vision par ordinateur, le volume provient de flottes de caméras et de capteurs. Un seul véhicule autonome enregistre des flux de caméra, de radar et de lidar à chaque heure de conduite, et les usines et les magasins ajoutent des milliers de flux vidéo continus. La vélocité compte lorsque les résultats sont nécessaires à mesure que les données arrivent, par exemple pour l’inférence en temps réel sur des vidéos de circulation ou de chaînes de production. La variété comprend les images et les vidéos, ainsi que les annotations, les métadonnées des capteurs et les journaux. Les données supplémentaires ne sont utiles que si leurs étiquettes sont exactes ; les grands jeux de données de vision dépendent donc du nettoyage des données, de la déduplication et de l’apprentissage actif pour choisir les nouvelles images qui méritent d’être étiquetées.
Stockage et traitement des mégadonnées#
Les systèmes de mégadonnées passent à l’échelle en répartissant les données et les calculs sur de nombreuses machines standard plutôt que sur un unique serveur plus puissant. L’article de Google sur MapReduce, publié en 2004, a décrit le modèle popularisé par le projet libre Apache Hadoop : diviser les données d’entrée en fragments, exécuter une fonction map en parallèle sur chaque fragment, sur la machine qui le stocke, puis réduire les résultats partiels pour obtenir une seule réponse. Lancé à UC Berkeley en 2009, Apache Spark conserve les résultats intermédiaires en mémoire, ce qui accélère considérablement les tâches itératives comme l’entraînement des modèles par rapport à MapReduce sur disque. Les fichiers bruts résident généralement dans un stockage objet en nuage organisé en lac de données, les formats en colonnes comme Apache Parquet permettent à une requête de ne lire que les colonnes nécessaires, et les plateformes de flux de données comme Apache Kafka acheminent les événements à haut débit.
Cet exemple exécute les étapes map et reduce sur trois fragments d’étiquettes d’images à l’aide de la bibliothèque standard de Python :
from collections import Counter
from multiprocessing import Pool
# Trois fragments d’étiquettes d’images ; une grappe stocke chaque fragment sur une machine différente
shards = [
["car", "person", "car", "bus"],
["person", "person", "bicycle"],
["car", "person", "dog", "car"],
]
def count_labels(shard):
"""Map step: count the labels in one shard."""
return Counter(shard)
if __name__ == "__main__":
with Pool(processes=3) as pool:
partial_counts = pool.map(count_labels, shards) # un processus de travail par fragment
# Étape reduce : fusionner les comptages partiels en un total
totals = sum(partial_counts, Counter())
print(totals.most_common())Chaque fragment est compté dans son propre processus, et l’étape reduce fusionne les comptages partiels dans [('car', 4), ('person', 4), ('bus', 1), ('bicycle', 1), ('dog', 1)]. Spark et Hadoop exécutent les mêmes deux étapes sur des milliers de machines, en envoyant le code map aux machines qui hébergent chaque fragment.
Entraîner des modèles sur des mégadonnées#
Un entraînement lit les mégadonnées par lots. Les chargeurs de données décodent quelques dizaines à quelques centaines d’images à la fois depuis un disque local ou un stockage objet, réparties entre plusieurs processus de travail ; le jeu de données complet n’a donc pas besoin de tenir en mémoire, et l’entraînement distribué répartit chaque lot sur plusieurs GPU. Pour la détection d’objets, le jeu de données de détection Open Images V7 de Google représente un téléchargement de 561 Go, avec 1,74 million d’images d’entraînement réparties entre 601 classes, bien au-delà de ce que la plupart des machines peuvent contenir dans leur mémoire vive. Lorsqu’on lui demande de mettre un jeu de données en cache en mémoire avec cache="ram", l’entraînement Ultralytics YOLO estime la taille après décodage à partir de 30 images aléatoires et ne met les données en cache que si le double de cette estimation tient dans la mémoire vive disponible ; les jeux de données plus volumineux sont lus et décodés depuis le disque à chaque époque.
Les mégadonnées et les termes associés#
- Exploration de données : recherche de motifs, d’anomalies et d’associations dans des données de toute taille, souvent réalisée sur des plateformes de mégadonnées.
- Analyse de données : interrogation, synthèse et visualisation des données pour éclairer les décisions ; l’analyse des mégadonnées est la partie qui nécessite des moteurs distribués.
- IA centrée sur les données : amélioration des modèles par l’amélioration de la qualité et de la couverture de leurs données, ce qui compte surtout lorsqu’un jeu de données est trop volumineux pour être examiné à la main.










