Skip to content
Parquet Content-Defined Chunking facilita la deduplicación con Xet en Hugging Face
Source: huggingface.co

Parquet Content-Defined Chunking facilita la deduplicación con Xet en Hugging Face

Sources: https://huggingface.co/blog/parquet-cdc, Hugging Face Blog

TL;DR

  • Parquet Content-Defined Chunking (CDC) ya está disponible en PyArrow y Pandas y funciona con el almacenamiento Xet de Hugging Face para deduplicación eficiente.
  • CDC deduplica datos a nivel de páginas de datos antes de la serialización y compresión, reduciendo cargas y descargas entre repositorios y archivos.
  • Activa Parquet CDC pasando use_content_defined_chunking=True al escribir Parquet; las URIs de PyArrow se pueden usar con el esquema hf:// para lecturas/escrituras en el Hub.
  • La combinación CDC + Xet reduce significativamente la transferencia de datos y los costos de almacenamiento para grandes conjuntos de datos en Hugging Face.

Contexto y antecedentes

Parquet es un formato de almacenamiento en columnas ampliamente utilizado en ingeniería de datos, y Hugging Face alberga una gran cantidad de datos Parquet en el Hub. El nuevo almacenamiento Xet utiliza chunking definido por el contenido para deduplicar bloques de datos, reduciendo costos de almacenamiento y acelerando uploads y downloads. Dado que la disposición de Parquet, especialmente los bloques de columna y las páginas de datos, puede generar representaciones en bytes distintas ante cambios pequeños, la deduplicación puede ser subóptima sin un chunking que se adapte al contenido. Aquí entra CDC: alinea los límites de los chunks con los valores de datos lógicos, permitiendo una deduplicación más eficaz antes de serialización o compresión. La demostración utiliza un subconjunto manejable del conjunto de datos OpenOrca para ilustrar el flujo. A partir de PyArrow 21.0.0, las URIs de Hugging Face pueden utilizarse directamente en funciones de PyArrow para leer y escribir Parquet (y otros formatos) en el Hub mediante el esquema hf://. Esta integración permite operaciones de extremo a extremo de Parquet en el Hub sin salir del entorno y muestra cómo CDC interactúa con Xet para deduplicación entre repos y archivos. El objetivo es reducir la transferencia de datos manteniendo la accesibilidad y compatibilidad con lectores/escritores existentes. Hugging Face Blog. Los sistemas tradicionales no deduplican archivos entre repos, lo que lleva a recargas y redescargas completas. En cambio, un sistema que utiliza chunking definido por el contenido puede reconocer contenido idéntico y evitar transferir datos sin cambios. El artículo muestra que tablas idénticas enviadas al Hub pueden transferirse instantáneamente cuando se habilita CDC, y la deduplicación funciona entre repos. Esta capacidad entre repos es una característica clave de Xet para facilitar el intercambio de datos. Hugging Face Blog. Las demostraciones analizan cómo la deduplicación cambia cuando se agregan o eliminan columnas o cuando se cambian tipos, apoyándose en heatmaps y estimaciones para entender dónde se transfieren los datos. Hugging Face Blog. Para ilustrar el mecanismo, el artículo muestra que activar Parquet CDC da lugar a transferencias mucho menores al subir el conjunto original y el modificado, en comparación con el caso sin CDC. Los mismos beneficios también se observan para descargas a través de huggingface_hub.hf_hub_download() y datasets.load_dataset(). Hugging Face Blog.

Novedades

Los puntos centrales son: soporte de CDC Parquet en PyArrow y Pandas para optimizar la deduplicación con Xet; activar CDC con use_content_defined_chunking=True y usar URIs hf:// para operaciones en el Hub. Hugging Face Blog.

  • Los beneficios de deduplicación dependen de cómo se distribuyen los cambios; si la mayor parte de las páginas se ve afectada, el beneficio puede disminuir. CDC trabaja a nivel de páginas de datos Parquet, antes de serialización y compresión. Hugging Face Blog.
  • Los creadores de Parquet usan por defecto grupos de filas fijos; ajustar ese tamaño puede mejorar el rendimiento de acceso aleatorio o la memoria. Cambiar la frontera de los grupos puede mover valores entre páginas y afectar la deduplicación. Hugging Face Blog.
  • En datasets con múltiples archivos, CDC + Xet deduplican datos incluso cuando los archivos están particionados en límites diferentes, favoreciendo el paralelismo y el acceso. Hugging Face Blog.

Por qué importa (impacto para desarrolladores/empresas)

Para equipos que manejan grandes volúmenes de datos, CDC Parquet en Xet se traduce en costos y tiempos de transferencia reducidos. Beneficios prácticos:

  • Transferencias de datos mucho menores durante cargas y descargas gracias a la deduplicación entre archivos y repos.
  • Costos de almacenamiento reducidos al evitar reescribir datos ya conocidos por el storage.
  • Mejor colaboración entre equipos, con actualizaciones de datos sin necesidad de re-subir todo.
  • Compatibilidad con flujos Parquet existentes, con beneficios de CDC y Xet. En la práctica, las organizaciones con grandes conjuntos Parquet en el Hub pueden esperar ciclos de iteración más rápidos y menor uso de banda ancha para distribución. Este enfoque se alinea con objetivos amplios de gestión de almacenamiento, reduciendo movimientos innecesarios de datos sin sacrificar la accesibilidad. Hugging Face Blog.

Detalles técnicos o Implementación

Resumen práctico para incorporar CDC Parquet en flujos de trabajo:

  • CDC Parquet es compatible con PyArrow 21.0.0+ y Pandas, permitiendo chunking basado en contenido antes de la serialización y compresión. La integración con Xet facilita la deduplicación entre archivos y repos.
  • Para habilitar CDC, use write_parquet con use_content_defined_chunking=True. Las URIs hf:// pueden usarse para acceder al Hub. Hugging Face Blog.
  • Los beneficios de deduplicación dependen de la distribución de cambios; si la mayor parte de las páginas se ve afectada, el beneficio puede disminuir. CDC funciona a nivel de páginas de datos Parquet, antes de la serialización y compresión. Hugging Face Blog.
  • El tamaño de row-group por defecto y la distribución de archivos pueden influir en la deduplicación; ajustar estos parámetros puede mejorar rendimiento o uso de memoria. Hugging Face Blog.
  • En datasets con múltiples archivos, CDC + Xet deduplican datos incluso cuando los archivos están en fronteras distintas, favoreciendo paralelismo y acceso eficiente. Hugging Face Blog.
  • Lectores y herramientas de descarga se benefician de CDC, con soporte para hf_hub_download() y datasets.load_dataset(). Hugging Face Blog. Consideraciones: elegir el tamaño adecuado de row-group según la carga de trabajo y entender que la distribución de cambios influye en el rendimiento. CDC se aplica a nivel de páginas de datos Parquet, lo que facilita un chunking coherente y una deduplicación más efectiva durante actualizaciones. Hugging Face Blog.

Principales conclusiones (Key takeaways)

  • CDC Parquet aporta chunking definido por el contenido para mejorar la deduplicación en Xet.
  • Activarlo con use_content_defined_chunking=True funciona con URIs hf:// para operaciones en el Hub.
  • Esta combinación reduce transferencia de datos y costos de almacenamiento, y facilita deduplicación entre archivos y repos.
  • El tamaño de row-group y la distribución de cambios influyen en el rendimiento; CDC mitiga muchos retos asociados.
  • Lectores, escritores y herramientas de descarga se benefician de flujos CDC-enabled manteniendo la compatibilidad con pipelines Parquet existentes. Hugging Face Blog.

Preguntas frecuentes (FAQ)

  • Q: ¿Qué es Parquet Content-Defined Chunking (CDC)? A: CDC chunking las páginas de datos Parquet según el contenido para mejorar la deduplicación durante la escritura, especialmente en almacenamiento orientado a contenido como Xet. Hugging Face Blog.
  • Q: ¿Cómo interactúa CDC con el almacenamiento Xet de Hugging Face? A: CDC alinea los límites de los bloques con los valores de datos, permitiendo una deduplicación más eficiente entre archivos y repos en Xet. Hugging Face Blog.
  • Q: ¿Cómo activo CDC Parquet en mi flujo de trabajo? A: Usa write_parquet con use_content_defined_chunking=True. El acceso al Hub vía hf:// es compatible para lecturas/escrituras. Hugging Face Blog.
  • Q: ¿Existen trade-offs o limitaciones? A: La ganancia de deduplicación depende de la distribución de cambios: si la mayoría de las páginas se ve afectada, el beneficio puede disminuir. La configuración del row-group y la división en archivos también influyen. Hugging Face Blog.

Referencias

More news