La formación de LLM requiere puntos de control periódicos. Estas instantáneas completas de los pesos del modelo, los estados del optimizador y los gradientes sabe guardan en el almacenamiento para que el entrenamiento pueda reanudarse después de las interrupciones. A escala, estos puntos de control sabe vuelven masivos (782 GB para un modelo 70B) y frecuentes (cada 15 a 30 minutos), generando una de las partidas más grandes en un presupuesto de capacitación. La mayoría de los equipos de IA persiguen la utilización de la GPU, el rendimiento del entrenamiento y la calidad del modelo. Casi ninguno sabe fija en lo que les está costando el establecimiento de puntos de control.

Este es un descuido costoso. La sobrecarga del punto de control sincrónico de un modelo 405B con 128 GPU NVIDIA Blackwell puede costar 200.000 dólares al mes. Al introducir un paso de compresión sin pérdidas implementado con aproximadamente 30 líneas de Python, podemos reducir los costos de almacenamiento en $56 000 cada mes. Los modelos de combinación de expertos (MoE) ahorran aún más. En esta publicación de blog, desglosaremos cómo llegamos a ese cálculo y cómo NVIDIA nvComp puede mejorar la eficiencia de los puntos de control.

Dentro de un único punto de control

Las interrupciones de hardware a una escala de más de 1000 GPU no son raras. Meta informó 419 interrupciones inesperadas durante 54 días de entrenamiento de Llama 3 en 16,384 GPU NVIDIA H100 (~una cada 3 horas). Es por eso que la mayoría de los equipos realizan controles cada 15 a 30 minutos; es una infraestructura de carga, no gastos generales opcionales.

Este desglose sorprende a quienes lo ven por primera vez. El estado del optimizador (las estimaciones de momento primero y segundo de AdamW, ambas almacenadas en FP32) es 4 veces mayor que los pesos del modelo. Es la mayor parte de cada punto de control y la razón por la que son mucho más grandes que un modelo implementado.

Al realizar puntos de control cada 30 minutos, práctica estándar para la tolerancia a fallas, son 48 puntos de control por día. Más de un mes de formación continua:

782 GB × 48/día × 30 días = 1,13 PB escritos en almacenamiento por mes

Y aquí está la parte que la mayoría de los equipos pasan por alto. Durante cada escritura de punto de control sincrónico, las 8 GPU permanecen completamente inactivas. Nada sabe superpone con un punto de control guardado: el bucle de entrenamiento sabe bloquea hasta que el último byte llega al almacenamiento.

A $4,40/GPU/hora (representante del precio en la nube de GPU Blackwell bajo demanda) y un rendimiento de almacenamiento compartido de 5 GB/s (típico de Lustre o GPFS sobre InfiniBand), hacemos los cálculos para calcular el costo de las GPU inactivas durante estos períodos de espera:

  • Tiempo de escritura por punto de control: 782 GB/5 GB/s = 156,4 segundos (~2,6 minutos)
  • Tiempo total de espera por mes: 156,4 s × 48/día × 30 días = 225.216 segundos = 62,6 horas
  • Costo de las GPU inactivas durante estos períodos de espera: 62,6 horas × 8 GPU × $4,40/GPU/hora = $2203/mes

El tiempo de espera para los puntos de control sincrónicos suma más de $2200 al mes, sin contar las tarifas de almacenamiento.

Escale eso a un clúster de 64 GPU y el costo mensual aumentará a más de $17,500. Con 128 GPU y entrenando un modelo 405B, los costos de inactividad superan los 200 000 dólares al mes. El costo de la GPU inactiva domina las tarifas de almacenamiento en un orden de magnitud.

Los puntos de control asincrónicos alivian parte del problema. Sin embargo, el soporte del marco aún está madurando y no sabe ha adoptado ampliamente, además, la gestión de marcas de agua de memoria sigue siendo un desafío. Una técnica complementaria que sabe puede utilizar fácilmente es la compresión del punto de control, que tiene el beneficio adicional de reducir el tiempo de arranque en frío cuando sabe restablece el estado, ya que el arranque en frío es de naturaleza serial.

NVIDIA nvCOMP presenta la compresión acelerada por GPU

La idea central es simple. Comprima el punto de control antes de que abandone la memoria de la GPU. Sin ida y vuelta de CPU. Sin movimiento de datos adicional. Los datos ya están en la GPU, por lo que podemos comprimirlos allí.

NVIDIA nvCOMP es una biblioteca de compresión sin pérdidas acelerada por GPU que hace exactamente esto. Al proporcionar una única biblioteca compatible con algoritmos estándar, como Zstandard (ZSTD), y formatos específicos de GPU altamente optimizados, como gANS, aborda los cuellos de botella de datos de forma nativa en el dispositivo. Los desarrolladores pueden integrar fácilmente la compresión de alto rendimiento directamente en sus flujos de trabajo de Python (como PyTorch o TensorFlow).

Relaciones de compresión medidas en el punto de control

Ajustamos dos arquitecturas de modelo (transformador denso y mezcla de expertos) para 50 pasos, guardamos puntos de control de entrenamiento completos (pesos + estado del optimizador AdamW + gradientes) y comprimimos cada componente con nvCOMP en las GPU NVIDIA H200 y Blackwell. Las relaciones de compresión dependen de los datos, no del hardware; son idénticas en todas las GPU.

ZSTD es un algoritmo de compresión de propósito general ampliamente adoptado desarrollado por Meta que equilibra fuertes relaciones de compresión con una velocidad razonable. Es el mismo algoritmo detrás de ZSTD en la línea de comandos de Linux y sabe usa ampliamente en bases de datos, sistemas de archivos y canalizaciones de datos. Los sistemas numéricos asimétricos (ANS) son una técnica moderna de codificación de entropía que nvCOMP implementa como un códec nativo de GPU (gANS) optimizado para un rendimiento sin procesar. Ambos no tienen pérdidas y explotan patrones estadísticos en distribuciones de palabras de 1B/2B (codificación de entropía) en lugar de simplemente hacer coincidir secuencias de bytes repetidas.

La diferencia clave es la compensación. ZSTD aplica relaciones de compresión ligeramente más altas (entre un 1 % y un 2 % más que ANS en nuestras pruebas comparativas), pero comprime a ~16-19 GB/s en las GPU Blackwell. ANS logra casi las mismas proporciones con un rendimiento 10 veces mayor (181-190 GB/s). Como mostraremos a continuación, cuál elegir depende de qué tan rápido sea su almacenamiento.

Los rangos reflejan el hallazgo clave de que la compresión depende de la arquitectura del modelo, no del hardware. No todos los algoritmos de compresión funcionan con tensores de punto flotante. Los códecs a nivel de bytes como LZ4 y Bitcomp buscan secuencias de bytes repetidas, como encontrar palabras duplicadas en un documento. Pero los parámetros de la red neuronal entrenada parecen esencialmente aleatorios a nivel de bytes, por lo que estos códecs no encuentran casi nada que comprimir (~1,00× en puntos de control densos en nuestros puntos de referencia).

ZSTD y ANS utilizan codificación de entropía, que explota patrones estadísticos en la frecuencia con la que ocurren ciertos valores de bytes, incluso cuando no sabe repiten secuencias exactas. Es por eso que logran 1,25-1,40x con los mismos datos, mientras que los códecs a nivel de bytes no logran nada. Entre los dos, ZSTD ofrece relaciones ligeramente más fuertes (1-2% más altas en nuestros puntos de referencia), mientras que ANS lo iguala estrechamente con 10 veces el rendimiento de compresión. Esta compensación es importante cuando el almacenamiento sabe vuelve más rápido, como mostraremos.

  • Transformadores densos (Llama, GPT, Qwen): Todos los parámetros participan en cada paso hacia adelante. ~0% ceros exactos → ~1,25× ANS, ~1,27× ZSTD.
  • Modelos MoE (Mixtral, DeepSeek, OLMoE): solo sabe activa un subconjunto de expertos por token. 12-14% de ceros exactos → ~1,39× ANS, ~1,40× ZSTD.

Nuestros puntos de referencia utilizan pesos BF16 y estado optimizador FP32 (AdamW), que es el estándar para la mayoría de los entrenamientos a gran escala en la actualidad. Los equipos que utilizan el entrenamiento FP8 (por ejemplo, con NVIDIA Transformer Engine) verán índices de compresión más bajos, ya que los datos de precisión reducida conllevan una mayor entropía y menos redundancia estadística para aprovechar la compresión sin pérdidas. En FP4 (NVFP4), la cuantificación ya elimina la mayor parte de la redundancia: la compresión sin pérdidas proporciona un beneficio adicional insignificante (~5%). Sin embargo, el estado del optimizador permanece en FP32 independientemente de la precisión del peso, y de ahí proviene la mayor parte del tamaño del punto de control y los ahorros en compresión.

Las matemáticas: cómo nvCOMP ahorra dinero

Usando nuestro modelo denso 70B con una relación ZSTD medida de 1,27×:

  • Sin nvCOMP: escriba 782 GB en el disco a 5 GB/s → 156 segundos de espera de GPU
  • Con nvCOMP ZSTD (1.27x): comprime 782 GB a ~16 GB/s (~49 s), escribe 616 GB a 5 GB/s (123 s) → ~123 segundos de espera de GPU

¿Por qué desaparece el tiempo de compresión de 49 segundos? Porque las escrituras de compresión y almacenamiento sabe pueden canalizar: mientras un fragmento escribe en el disco, el siguiente fragmento sabe comprime en la GPU. Siempre que el códec sabe comprima más rápido de lo que el almacenamiento puede absorber la salida, el paso de compresión queda completamente oculto detrás de la escritura: la espera de la GPU equivale únicamente al tiempo de escritura. Con almacenamiento compartido de 5 GB/s, ZSTD a 16 GB/s es 3 veces más rápido que la escritura, por lo que la compresión sabe superpone por completo. La espera sabe reduce de 156 a 123 segundos: archivos un 21 % más pequeños, 33 segundos más rápidos por punto de control. Durante un mes: 48 × 30 = 47 520 segundos menos de tiempo de inactividad: más de 13 horas recuperadas. MoE a 1,40× lo hace aún mejor: 29% más pequeño, 44 ​​segundos más rápido, más de 17 horas recuperadas.

Cuando el almacenamiento sabe vuelve más rápido, el rendimiento del códec es importante

Su velocidad de almacenamiento depende de la infraestructura: 2-10 GB/s para sistemas de archivos de red compartidos (Lustre, GPFS, NFS) o 15-50+ GB/s para GPUDirect Storage (GDS) con NVMe local.

En un almacenamiento más rápido, el rendimiento del códec determina si la compresión ayuda o perjudica:

A modo de ilustración, comparamos los tiempos de escritura de los puntos de control para un modelo denso de 70 B (782 GB) en una GPU Blackwell en tres velocidades de almacenamiento. Debido a que la compresión y la escritura están canalizadas (un fragmento sabe comprime mientras el fragmento anterior escribe en el disco), el tiempo de espera total de la GPU es igual a la etapa que sea más lenta: espera canalizada = máx (tiempo de compresión, tiempo de escritura).

En la tabla 3 ~16 GB/s en una GPU Blackwell, el paso de compresión de ZSTD sabe convierte en el cuello de botella y el tiempo de espera aumenta. ANS a 181-190 GB/s nunca toca este muro. A 25 GB/s con 64 GPU Blackwell, ANS genera ~$2800/mes, mientras que ZSTD genera solo ~$240/mes. Para sistemas de archivos compartidos (5-10 GB/s), ZSTD sigue siendo el valor predeterminado correcto. Para GDS/almacenamiento de alto rendimiento a más de 15 GB/s, ANS es el claro ganador.

Los ahorros medidos en la Figura 4 suponen una reducción de espera de GPU + almacenamiento a $0,14/GB/mes, 96 puntos de control retenidos y 5 GB/s de almacenamiento compartido:

Modelos densos (medidos en Qwen2.5-3B):

Modelos MoE (medidos en OLMoE-1B-7B):

El ahorro aumenta con el tamaño del modelo (puntos de control más grandes = más para comprimir) y el recuento de GPU (más GPU inactivas durante las esperas = mayor costo por segundo de tiempo de espera). El segundo factor es lo que hace que esto sea particularmente brutal a escala: 256 GPU Blackwell inactivas cuestan $1,126 por hora. Cada segundo que elimina una escritura en un punto de control ahorra dinero.

La industria sabe está moviendo hacia arquitecturas MoE (como DeepSeek-V3, Mixtral y Grok), que producen puntos de control más grandes y comprimibles. La compresión ya no es algo agradable y agregar algunas líneas de código Python puede ahorrar costos.

Integración: ~30 líneas de Python

El esfuerzo de integración es mínimo. Aquí hay un reemplazo directo para torch.save / torch.load:

Cambie torch.save por save_compressed_checkpoint y torch.load por load_compressed_checkpoint.

Eso es todo. No sabe realizan cambios en su bucle de entrenamiento, código de modelo ni configuración del optimizador.

Si estás utilizando un marco de entrenamiento con ganchos de puntos de control personalizados (DeepSpeed, Megatron), sabe aplica el mismo patrón. Recorra el dictado de estado, comprima los tensores de GPU y serialice.

Para los equipos que utilizan NVIDIA GPUDirect Storage (GDS), existe un camino aún más rápido. NvCOMP puede comprimir directamente en un búfer GDS, escribiendo datos comprimidos directamente desde la memoria de la GPU al almacenamiento NVMe. No hay participación de la CPU.

Motor de descompresión NVIDIA Blackwell

Las GPU NVIDIA Blackwell incluyen un motor de descompresión (DE) Blackwell dedicado que descomprime LZ4, Snappy y Deflate a hasta 280 GB/s sin sobrecarga de SM. Sin embargo, los códecs a nivel de bytes alcanzan ~1,00x en tensores de punto flotante. Para la compresión de puntos de control, los códecs basados ​​en entropía (ANS y ZSTD) en los SM ofrecen ahorros reales. Durante las restauraciones, las GPU están inactivas y esperan datos antes de reanudar el entrenamiento. La disponibilidad de SM no es una limitación y ANS en SM ofrece un rendimiento comparable (247-264 GB/s) y al mismo tiempo produce archivos significativamente más pequeños.

Empezar

La compresión de puntos de control es una de las optimizaciones con mayor retorno de la inversión que puede agregar a su proceso de capacitación y una de las más fáciles:

  • Instale nvCOMP: pip install nvidia-nvcomp-cu13 (Blackwell) o p ip install nvidia-nvcomp-cu12 (Hopper)
  • Pruébelo ahora: coloque las funciones save_compressed_checkpoint / load_compressed_checkpoint de esta publicación en su ciclo de entrenamiento. No sabe necesitan otros cambios.
  • Explore el código: muestras y evaluaciones comparativas en GitHub.
  • Lea los documentos: documentación de nvCOMP
  • Profundice: para los equipos que utilizan GPUDirect Storage, nvCOMP puede comprimir directamente en buffers de GPU que GDS escribe en NVMe sin participación de CPU. Para obtener más información, consulte: https://docs.nvidia.com/cuda/nvcomp/ https://docs.nvidia.com/gpudirect-storage/api-reference-guide/

Sus puntos de control son los archivos más grandes de su proceso de capacitación. Comprimirlos.