Deep Learning Academy · Lección

Batch Norm sincronizada y estado fragmentado

Mantenga coherentes las estadísticas y los pesos

Lección 3 de 413 pasos

Batch Norm sincronizada y estado fragmentado es una lección gratuita de Deep Learning Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Deep Learning Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Deep Learning Academy incluye 4 lecciones en total.

El problema de los lotes pequeños

La normalización por lotes calcula estadísticas a partir del lote local de cada GPU. Al repartirlo entre muchas GPU, el lote por dispositivo se reduce y esas estadísticas se vuelven imprecisas.

Llega SyncBatchNorm

SyncBatchNorm resuelve este problema calculando la media y la varianza conjuntamente entre todas las GPU, como si hubiera visto el lote global completo.

Convierta todo con una llamada

No necesita reescribir las capas manualmente. Un ayudante convierte cada BatchNorm del modelo a su versión sincronizada.

import torch.nn as nn
model = nn.SyncBatchNorm.convert_sync_batchnorm(model)

Convierta antes de envolver

El orden importa: llame a la conversión antes de envolver el modelo en DDP, para que DDP gestione las capas sincronizadas.

model = nn.SyncBatchNorm.convert_sync_batchnorm(model)
model = DDP(model, device_ids=[local_rank])

Tiene un coste de comunicación

Sincronizar las estadísticas implica una operación all-reduce adicional en cada capa de normalización por lotes. Úselo cuando los lotes pequeños por GPU perjudiquen la precisión, no de forma predeterminada.

El límite de memoria

El DDP normal copia el modelo completo, los gradientes y el estado del optimizador en cada GPU. En modelos enormes, esta redundancia desperdicia memoria rápidamente.

Particione el estado

El sharding divide esos tensores entre las GPU para que cada dispositivo almacene solo una parte. En conjunto, las GPU siguen conteniendo el modelo completo.

Conozca FSDP

El FullyShardedDataParallel de PyTorch particiona los parámetros, los gradientes y el estado del optimizador. Permite entrenar modelos mucho más grandes que la memoria de una sola GPU.

from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
model = FSDP(model)

Reúna los datos justo a tiempo

FSDP reúne los pesos completos de cada capa solo cuando se necesitan para el cómputo y luego vuelve a liberarlos. Así mantiene baja la memoria máxima.

Etapas de ZeRO

El sharding se presenta en niveles, llamados etapas de ZeRO: primero se particiona el estado del optimizador, después los gradientes y finalmente los parámetros. Cuanto mayor es el particionado, más memoria se ahorra.

Elija la herramienta adecuada

Si su modelo cabe en cada GPU, el DDP normal es la opción más sencilla. Si no cabe, recurra a FSDP para particionar el estado y continuar.

Comprobación rápida

Decida para qué sirve realmente cada técnica.

Resumen

Ha conocido dos herramientas de coherencia: SyncBatchNorm mantiene las estadísticas globales entre las GPU, y FSDP particiona el estado para que quepan los modelos gigantes. Use cada una solo cuando la necesite.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Batch Norm sincronizada y estado fragmentado» es gratis?

Sí — el texto completo de «Batch Norm sincronizada y estado fragmentado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Deep Learning Academy, actualiza a CoddyKit PRO. El curso de Deep Learning Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Batch Norm sincronizada y estado fragmentado»?

Mantenga coherentes las estadísticas y los pesos Practicas Deep Learning Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Deep Learning Academy?

No se requiere experiencia previa. Deep Learning Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Batch Norm sincronizada y estado fragmentado»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Deep Learning Academy?

Sí. Cada lección de Deep Learning Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Paralelismo de datos frente a paralelismo de modelos
  2. Fundamentos de DistributedDataParallel
  3. Batch Norm sincronizada y estado fragmentado
  4. Lance trabajos con torchrun
← Volver a Deep Learning Academy