GUÍA Técnica

ZeRO y optimizadores fragmentados

ZeRO (Zero Redundancy Optimizer) elimina la duplicación de memoria innecesaria del paralelismo de datos al fragmentar el estado, los gradientes y los pesos del optimizador en las GPU.

  • 2 minutos de lectura
  • Última actualización
En esta pagina2 minutos de lectura
  1. Descripción general
  2. Buceo profundo
  3. Impacto Estratégico
  4. El futuro de ZeRO y los optimizadores fragmentados
  5. Implementación en el mundo real
  6. Riesgos y barandillas
  7. Hoja de ruta de implementación
  8. Sigue explorando
  9. Preguntas frecuentes

Descripción general

Le permite entrenar modelos enormes con la simplicidad del paralelismo de datos pero con una fracción de la memoria por GPU.

Buceo profundo

En el paralelismo de datos ordinario, cada GPU almacena una copia completa redundante del estado, los gradientes y los parámetros del optimizador, lo cual es un enorme desperdicio, especialmente para Adam, donde el estado del optimizador puede ser varias veces el tamaño del modelo en sí. ZeRO, presentado por Microsoft en DeepSpeed, elimina esta redundancia al dividir estos tensores entre GPU para que cada dispositivo posea solo una porción. ZeRO viene en tres etapas progresivas: la Etapa 1 fragmenta el estado del optimizador, la Etapa 2 agrega fragmentación de gradiente y la Etapa 3 fragmenta los parámetros mismos. Según sea necesario, las GPU reúnen los segmentos faltantes a través de la comunicación, los calculan y luego los liberan. El resultado es una memoria por GPU dramáticamente menor, lo que permite un entrenamiento de mil millones a billones de parámetros, manteniendo al mismo tiempo el modelo de programación sencilla de paralelismo de datos.

Impacto Estratégico

Costo y presupuesto

Las decisiones de arquitectura impulsan el rendimiento y los costos operativos durante años.

Decisiones más claras

La educación técnica ayuda a los equipos a elegir la pila adecuada, no sólo la más nueva.

control de calidad

Mejores opciones de ingeniería reducen los incidentes de confiabilidad en la producción.

El futuro de ZeRO y los optimizadores fragmentados

La fragmentación se está convirtiendo en la opción predeterminada para la capacitación a gran escala en lugar de una opción exótica. Espere una integración más profunda con la descarga (enviar cortes a la CPU o NVMe a través de ZeRO-Infinity), una mejor superposición de recopilación total y dispersión reducida con computación para ocultar su costo y combinaciones con paralelismo de tensor y canalización. A medida que los modelos siguen creciendo, los optimizadores fragmentados de memoria eficiente son fundamentales para ajustarlos a presupuestos de hardware realistas.

Implementación en el mundo real

Uso de DeepSpeed ​​ZeRO Stage 2 para ajustar un modelo de lenguaje de miles de millones de parámetros que, de otro modo, desbordaría la memoria de la GPU.

Entrenamiento con PyTorch FSDP, que fragmenta parámetros, gradientes y estado del optimizador en las GPU y los reúne por capa según demanda.

Aplicar ZeRO-Offload para enviar el estado del optimizador a la memoria de la CPU, permitiendo que una sola GPU entrene un modelo muchas veces más grande que su VRAM.

Escalar un modelo de un billón de parámetros con ZeRO-Infinity mediante la transmisión de fragmentos de parámetros desde el almacenamiento NVMe cuando se agota la memoria de la GPU y la CPU.

Riesgos y barandillas

  • La optimización de un punto de referencia puede ocultar debilidades más amplias del sistema.

  • Los costos de infraestructura y mantenimiento a menudo se subestiman.

  • Las brechas de seguridad y observabilidad pueden crecer a medida que los sistemas se vuelven más complejos.

Hoja de ruta de implementación

  1. Defina objetivos de latencia, calidad y costos antes de la implementación.

  2. Comparación en condiciones realistas de carga y datos.

  3. Monitoreo de instrumentos para detectar errores, deriva e impacto para el usuario.

  4. Prepare rutas de reversión y respuesta a incidentes antes de escalar.

Sigue explorando

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the ZeRO and Sharded Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Iniciar prueba

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Preguntas frecuentes

¿Qué es ZeRO y los optimizadores fragmentados?

ZeRO (Zero Redundancy Optimizer) elimina la duplicación de memoria innecesaria del paralelismo de datos al fragmentar el estado, los gradientes y los pesos del optimizador en las GPU. Le permite entrenar modelos enormes con la simplicidad del paralelismo de datos pero con una fracción de la memoria por GPU.

¿Qué redundancia elimina ZeRO en comparación con el paralelismo de datos simple?

El paralelismo de datos estándar almacena una copia completa del estado, los gradientes y los pesos del optimizador en cada GPU; ZeRO los fragmenta para que cada GPU contenga solo una porción.

¿Por qué el estado del optimizador suele ser el que más memoria consume en Adam?

Adam mantiene estimaciones actualizadas, como el primer y segundo momento por parámetro, que, combinadas con los pesos maestros de fp32, pueden eclipsar el propio tamaño del modelo.

¿Qué fragmenta ZeRO Stage 3 que no hacen las etapas 1 y 2?

La etapa 1 fragmenta el estado del optimizador, la etapa 2 agrega gradientes y la etapa 3 va más allá al fragmentar también los parámetros del modelo en las GPU.

En ZeRO Stage 3, ¿cómo obtiene una GPU todos los parámetros que necesita para el avance de una capa?

Antes de calcular una capa, un conjunto reúne sus parámetros completos en cada GPU; una vez hecho esto, los sectores que no son de propiedad se liberan para recuperar memoria.

¿Qué característica de PyTorch implementa de forma nativa la fragmentación estilo ZeRO?

El Full Sharded Data Parallel (FSDP) de PyTorch fragmenta los parámetros, los gradientes y el estado del optimizador, los reúne y los vuelve a fragmentar sobre la marcha, reflejando ZeRO.