Parquet Contenu Définit CDC avec Xet : téléchargements plus rapides et déduplication intelligente
Sources: https://huggingface.co/blog/parquet-cdc, Hugging Face Blog
TL;DR
- Le Parquet Content-Defined Chunking (CDC) est désormais disponible dans PyArrow et Pandas, permettant une déduplication efficace sur la couche de stockage Xet de Hugging Face.
- Le CDC déduplique les données entre les répertoires, réduisant à la fois les uploads et les téléchargements et les coûts de stockage.
- Activez la fonction en passant use_content_defined_chunking=True lors de l’écriture Parquet (PyArrow); le support est également disponible dans Pandas.
- Cette approche segmente les pages de données par le contenu avant la sérialisation et la compression, améliorant l’efficacité des charges Parquet sur le Hub.
- La démonstration OpenOrca illustre des réductions de transfert et des opérations plus rapides avec le CDC activé.
Contexte et arrière-plan
Parquet est un format de stockage en colonne largement utilisé. Hugging Face héberge près de 21 Po de jeux de données, les fichiers Parquet représentant plus de 4 Po de stockage. Pour faire face à cette échelle, Hugging Face a introduit une nouvelle couche de stockage nommée Xet, qui utilise le chunking défini par le contenu pour dédupliquer les morceaux de données. Cette approche réduit les coûts de stockage et accélère les uploads et les downloads, notamment lorsque plusieurs flux de travail partagent des données similaires ou évolutives. Le CDC de contenu se situe aux côtés des capacités de déduplication de Xet. La disposition de Parquet—organisée par colonnes et blocs de colonnes (pages de données) avec compression—peut produire des représentations en octets légèrement différentes pour de petits changements. Le CDC atténue ce problème en divisant les pages de données en fonction du contenu, alignant la déduplication sur les valeurs logiques des colonnes. Cela aide Xet à reconnaître plus efficacement quand le contenu est identique. Le texte indique aussi que depuis PyArrow 21.0.0, les URIs Hugging Face (hf://) peuvent être utilisées directement dans PyArrow pour lire et écrire Parquet (et d’autres formats) sur le Hub, rendant l’accès programmatique plus facile pour les ingénieurs et les scientifiques des données. L’association CDC Parquet et la couche Xet permet une déduplication entre fichiers et répertoires, essentielle pour les flux de travail collaboratifs et la gestion de grands jeux de données.
Quoi de neuf
Le CDC Parquet est désormais disponible dans PyArrow et Pandas, permettant d’écrire des fichiers Parquet avec le chunking défini par le contenu activé. Le changement clé est la possibilité d’écrire avec use_content_defined_chunking=True, garantissant que les colonnes sont découpées en pages de données selon le contenu, avant sérialisation et compression. Cela reflète la déduplication du Xet, mais appliquée aux valeurs logiques des colonnes. Des démonstrations sur un sous-ensemble OpenOrca gérable ont montré que les lectures et écritures peuvent être effectuées avec des URIs Hugging Face (hf://) dans PyArrow. Lorsqu’on télécharge le même fichier dans le même répertoire ou dans un autre, la déduplication peut reconnaître le contenu identique et ne transférer que les parties modifiées, ce qui donne des opérations quasi instantanées. Des points pratiques observés:
- Ajout de nouvelles colonnes: seules les nouvelles colonnes et les métadonnées du pied de page sont transférées.
- Suppression de colonnes: n’affecte que les métadonnées du pied de page; les données restent stockées.
- Changement de type de colonne (par ex. int64 → int32): seules les données de la nouvelle colonne et les métadonnées sont transférées.
- Ajout de nouvelles lignes: seules les nouvelles lignes sont transférées; des régions rouges apparaissent dans les heatmaps en raison de la disposition par pages, mais les données existantes ne sont pas réenvoyées.
- CDC et partitionnement sur plusieurs fichiers: la déduplication fonctionne entre fichiers, avec une taille totale d’upload presque égale à l’original. Ces observations sont illustrées dans l’article et les heatmaps montrent la progression de la déduplication et le volume transféré.
Pourquoi c’est important (impact pour les développeurs/entreprises)
Pour les équipes travaillant avec de grands ensembles Parquet sur Hugging Face, le CDC via Xet apporte des avantages significatifs:
- Transfert de données réduit: la déduplication au niveau du contenu signifie que seules les pages de données modifiées et les métadonnées du pied de page sont échangées.
- Coûts de stockage plus bas: la déduplication inter-répertoires évite de stocker des copies identiques de données, notamment lorsque les jeux de données évoluent ou sont réutilisés.
- Collaboration plus rapide: une déduplication efficace entre répertoires accélère les flux de travail qui impliquent le partage et la recomposition des données.
- Avantages de lecture/écriture: CDC Parquet avec Xet optimise les opérations Parquet sur le Hub, avec une évolutivité adaptée à la taille et à la complexité des jeux de données.
- Applicabilité large: Xet est agnostique au format; CDC applique un chunking basé sur le contenu pour optimiser la déduplication avant sérialisation et compression. Pour les praticiens, cela se traduit par des cycles d’itération plus courts, des coûts de stockage cloud réduits et des pipelines de données plus réactifs, alors que les jeux de données grandissent et évoluent. L’intégration est compatible avec les écosystèmes PyArrow et Pandas, rendant le CDC accessible à un large éventail d’ingénieurs en données et de scientifiques des données. Hugging Face Blog
Détails techniques ou Mise en œuvre
- Activation du CDC: utiliser use_content_defined_chunking=True lors de l’écriture Parquet (PyArrow). Le support est également présent dans Pandas.
- URIs et accès: depuis PyArrow 21.0.0, les URIs hf:// peuvent être utilisés pour lire/écrire Parquet sur le Hub, simplifiant l’intégration.
- Chunking au niveau des pages de données: CDC opère au niveau des pages de données (chunk de colonne), chunking par contenu avant la sérialisation et la compression, en alignement avec la déduplication Xet.
- Considérations sur les row-groups: les writers Parquet utilisent des tailles de row-group fixes par défaut (PyArrow: 1 Mi lignes). Les écrivains de jeux de données peuvent réduire la taille du row-group pour améliorer l’accès aléatoire ou réduire l’empreinte mémoire. Modifier la taille du row-group peut déplacer des lignes entre les pages et affecter la déduplication.
- Déduplication inter-fichiers: CDC Parquet + Xet peut dédupliquer des données à travers plusieurs fichiers, même si les données sont scindées sur différentes frontières.
- Scénarios pratiques: ajouter des colonnes transfert uniquement les nouvelles données; supprimer des colonnes affecte seulement le pied de page; modifier le type de colonne transfère les nouvelles données et les métadonnées; ajouter des lignes transfert les nouvelles lignes seulement. | Scénario | Comportement de déduplication avec Parquet CDC + Xet |--- |--- |Nouvelles colonnes ajoutées | Seules les nouvelles colonnes et les métadonnées du pied de page sont transférées; les données existantes restent stockées |Suppression de colonnes | Seules les métadonnées du pied de page changent; les autres colonnes restent et ne sont pas transférées à nouveau |Changement de type de colonne (ex.: int64 → int32) | Seuls les nouveaux données de colonne et les métadonnées sont transférés |Ajout de nouvelles lignes | Seules les nouvelles lignes sont transférées; plusieurs régions rouges peuvent apparaître en raison du layout par pages |Déduplication entre fichiers | La déduplication fonctionne entre fichiers, même avec du sharding, avec une taille d’upload globale proche de l’original |
- Considérations de téléchargement: les avantages CDC s’appliquent également lors des téléchargements via hf_hub_download() et datasets.load_dataset().
- Limitations: l’efficacité dépend de la distribution des changements; si la majorité des pages de données est affectée, le ratio de déduplication peut diminuer.
Points clés
- CDC Parquet est disponible pour PyArrow et Pandas et fonctionne avec la couche Xet pour dédupliquer au niveau des pages de données des colonnes.
- L’activation est simple (use_content_defined_chunking=True) et bénéficie à la collaboration entre répertoires.
- L’approche réduit les transferts et les coûts de stockage, tout en améliorant les performances des opérations Parquet sur le Hub.
- L’efficacité dépend du type de modification; les scénarios courants de colonnes et lignes montrent une déduplication efficace; les modifications lourdes peuvent réduire l’efficacité.
- Xet est agnostique au format; CDC applique un chunking orienté contenu pour optimiser la déduplication avant sérialisation et compression. Hugging Face Blog
FAQ
-
Qu’est-ce que Parquet CDC ?
CDC est une fonction de Parquet (disponible dans PyArrow et Pandas) qui segmente les pages de données par contenu, permettant une déduplication au niveau du contenu via la couche Xet.
-
Comment activer Parquet CDC ?
Dans PyArrow, passez use_content_defined_chunking=True à write_parquet; Pandas prend également en charge la fonctionnalité.
-
CDC affecte-t-il aussi les téléchargements ?
Oui. Les bénéfices de déduplication s’appliquent aussi aux téléchargements via hf_hub_download() et datasets.load_dataset().
-
Comment la taille des row-groups influe-t-elle sur le CDC ?
Les writers Parquet utilisent par défaut des row-groups fixes; ajuster la taille peut améliorer l’accès aléatoire ou réduire l’empreinte mémoire. Modifier le row-group peut déplacer des lignes entre les pages et influencer la déduplication de manière similaire à des insertions/suppressions.
-
CDC peut-il dédupliquer des données entre plusieurs fichiers ?
Oui. CDC Parquet + Xet peut dédupliquer des données à travers plusieurs fichiers, même si les données sont réparties sur différentes frontières, avec une taille d’upload globale proche de l’original. [Hugging Face Blog](https://huggingface.co/blog/parquet-cdc)
Références
More news
Scaleway rejoint les Fournisseurs d’Inference de Hugging Face pour une Inférence Serverless et Faible Latence
Scaleway est désormais un Fournisseur d’Inference pris en charge sur Hugging Face Hub, permettant l’inférence serverless directement sur les pages de modèles avec les SDK JS et Python. Accédez à des modèles open-weight populaires et bénéficiez d’une latence réduite.
Rendez vos ZeroGPU Spaces plus rapides avec la compilation AoT de PyTorch
Découvrez comment la compilation AoT de PyTorch améliore les performances des ZeroGPU Spaces, permettant la réutilisation instantanée des modèles compilés, la quantification FP8 et les formes dynamiques pour des démos plus réactives sur les GPUs H200.
Rendez vos ZeroGPU Spaces plus rapides avec la compilation AoT de PyTorch
Découvrez comment la compilation ahead-of-time (AoT) de PyTorch accélère les ZeroGPU Spaces sur les GPUs Nvidia H200, avec rechargement instantané, quantification FP8, formes dynamiques et gains de performance (1,3×–1,8×) pour Flux, Wan et LTX.
Générez des images avec Claude et Hugging Face : connexion via MCP et Spaces
Claude peut désormais générer des images de haute qualité en se connectant à Hugging Face Spaces via MCP, en utilisant FLUX.1-Krea-dev et Qwen-Image pour des visuels réalistes et un rendu de texte fiable.
Nemotron Nano 2: modèle ouvert de raisonnement en tête du classement, débit 6x supérieur
NVIDIA publie Nemotron Nano 2 9B, un modèle de raisonnement ouvert offrant une précision de premier plan dans sa catégorie et un débit jusqu'à 6x supérieur au prochain modèle ouvert. Il présente une architecture hybride Transformer–Mamba et un budget de réflexion configurable.
De Zéro au GPU : construire et déployer des noyaux CUDA production-ready avec Kernel Builder
Une vue d’ensemble détaillée, axée production, de l’outil kernel-builder de Hugging Face pour développer, compiler et partager des noyaux CUDA comme opérateurs PyTorch natifs, avec des flux complets du développement local au déploiement sur le hub.