- OpenZL, publicado por Meta, es un nuevo framework de compresión de código abierto que ofrece compresión sin pérdida para datos estructurados, reconociendo el formato de los datos para realizar transformaciones eficientes
- Aplica etapas de transformación distintas para cada formato de archivo, pero está diseñado para que todos los archivos puedan descomprimirse con un único descompresor de propósito general
- Al pasar explícitamente la estructura de los datos al compresor, optimiza el proceso de transformación, y mediante una configuración (config) de compresión entrenada permite elegir distintos puntos de equilibrio entre velocidad y tasa de compresión
- Se integra con el sistema interno de Managed Compression de Meta, y se caracteriza por permitir reentrenamiento y actualización automáticos según cambian los datos
- Muestra alto rendimiento en conjuntos de datos con estructura clara, lo que mejora la eficiencia de procesamiento en centros de datos y sugiere la posibilidad de simplificar el ecosistema de compresión con un único decodificador
Resumen de OpenZL
- OpenZL es un framework de compresión de datos con reconocimiento de formato publicado por Meta, que ofrece eficiencia de compresión especializada para datos estructurados
- Si se indica explícitamente el formato de los datos, encuentra regularidades y repeticiones mediante un grafo interno de transformaciones para comprimir con mayor eficiencia
- Como concepto sucesor de Zstandard, combina el rendimiento de la compresión optimizada por formato con la facilidad de mantenimiento de un solo ejecutable
- Zstandard logró un gran avance en centros de datos al satisfacer simultáneamente velocidad y tasa de compresión, pero tiene límites de mejora gradual debido a la generalización del algoritmo
- En datos estructurados, la compresión personalizada según la forma de los datos supera a los métodos generales tanto en tasa como en velocidad
- Sin embargo, construir y operar compresores/descompresores dedicados para cada formato de archivo implica una gran carga
- OpenZL busca al mismo tiempo el rendimiento de compresores personalizados individuales y la simplicidad operativa de un solo binario
Método de compresión basado en estructura
- Mientras los compresores convencionales procesan los datos de forma inferida, OpenZL recibe la estructura de los datos como entrada explícita
- El usuario puede describir la forma de los datos (filas, columnas, enumeraciones, estructuras anidadas, etc.) mediante Simple Data Description Language (SDDL)
- Con esta información, OpenZL genera una secuencia óptima de transformaciones (Plan) mediante entrenamiento offline (trainer)
- Luego, al comprimir, crea el grafo de decodificación real (Resolved Graph) sobre la base de ese Plan y lo incrusta en el frame
Ejemplo: compresión de datos SAO
- Tomando como ejemplo el archivo SAO del Silesia Compression Corpus, OpenZL separa cada campo y lo transforma en flujos de datos homogéneos para luego optimizar cada uno por separado
- La coordenada del eje X (SRA0) tiene una tendencia de ordenamiento, por lo que se aplica una transformación delta
- La coordenada del eje Y (SDEC0) aprovecha la limitación de rango con una transformación transpose
- Los demás campos, debido a su bajo número de valores únicos, usan una transformación tokenize para compresión basada en diccionario
- Como resultado, registra una tasa de compresión más de 2 veces superior a zstd y mayor velocidad (340 MB/s)
Generación automática de compresores y proceso de entrenamiento
- El trainer de OpenZL explora y aprende automáticamente estrategias de compresión a partir de muestras de datos
- Proceso de entrenamiento: describe(SDDL) → train(generación del Plan) → compress(incrustación del grafo) → decode(recuperación con un solo binario)
- Utiliza control points para elegir en tiempo de ejecución la ruta óptima según información estadística
- Incluso al aplicar un nuevo Plan, los datos existentes siguen pudiendo descomprimirse, manteniendo compatibilidad hacia atrás
Ventajas de un único descompresor
- OpenZL permite restaurar cualquier formato comprimido con un único binario descompresor
- Basta con realizar una sola vez la verificación de seguridad y estabilidad para aplicarla a todo el sistema
- Al actualizar el descompresor, la mejora de rendimiento se aplica también a todos los datos antiguos
- Asegura simplicidad operativa y consistencia en toda la flota
- Permite gestionar varios formatos al mismo tiempo manteniendo compatibilidad hacia atrás
Resultados de comparación de rendimiento
- En diversos conjuntos de datos, logra mayor tasa de compresión y velocidad que compresores de propósito general como zstd y xz
- SAO: tasa de compresión de 2.06x, velocidad de descompresión de 1200 MB/s
- ERA5 (datos numéricos): mayor tasa de compresión en el mismo tiempo, o mayor velocidad con la misma tasa de compresión
- En conjuntos de datos Parquet y CSV también permite optimización personalizada basada en reconocimiento de formato
- Sin embargo, en datos sin estructura, como texto, su efecto es limitado y recurre a zstd como fallback para garantizar un rendimiento mínimo
- Se pueden elegir varias combinaciones en los tres ejes de tasa de compresión / velocidad de compresión / velocidad de descompresión, ofreciendo una flexibilidad distinta al ajuste de “niveles” de los compresores tradicionales
Evolución de datos y reentrenamiento automático
- Integrado con Managed Compression de Meta, reentrena automáticamente el plan de compresión cuando cambia el formato de los datos
- Realiza muestreo y evaluación periódicos, y si encuentra un mejor Plan, lo actualiza automáticamente
- El descompresor se mantiene igual, lo que minimiza el riesgo operativo
Participación del ecosistema open source y dirección futura
- OpenZL es adecuado para datos estructurados en forma de vectores, tablas y árboles, y muestra una eficiencia destacada en series temporales, tensores de ML y tablas de bases de datos
- Para texto no estructurado (por ejemplo, enwik, dickens, etc.) aplica zstd
- Planes a futuro:
- Ampliar la biblioteca de transformaciones para series temporales y datos en rejilla
- Reforzar la capacidad de SDDL para representar datos anidados
- Mejorar el rendimiento y la estabilidad del explorador automático de compresores
- Cómo participar en la comunidad:
- En el sitio oficial de OpenZL y el repositorio de GitHub se pueden consultar ejemplos y documentación
- Probar nuevos formatos de datos y proponer Planes
- Es posible contribuir con optimizaciones del motor en C/C++, nuevas transformaciones y benchmarks
Conclusión
- OpenZL es un nuevo enfoque que estandariza la compresión basada en reconocimiento de formato y, al mismo tiempo, puede integrar el ecosistema existente alrededor de un único decodificador
- Meta busca con ello mejorar al mismo tiempo la eficiencia de compresión, la velocidad y la mantenibilidad en todo el centro de datos
1 comentarios
Comentarios de Hacker News