La acumulación de gradientes locales acelera el entrenamiento 1.7x

La velocidad de entrenamiento a menudo se estanca debido al tiempo de inactividad en los pipelines. Este tiempo de inactividad se denomina "bubble" (burbuja).

Un nuevo método llamado PACI resuelve este problema. Elimina estas burbujas y acelera el entrenamiento 1.69x.

La mayoría de los equipos utilizan una estrategia llamada 1F1B-flush. Este método mantiene la consistencia de los pesos, pero crea espacios vacíos donde el sistema espera los datos. Estos tiempos de espera ralentizan todo el proceso.

Otros métodos asíncronos intentan solucionar esto. Utilizan trucos complejos como el "weight stashing" (almacenamiento de pesos) o copias duplicadas. Estos trucos consumen demasiada memoria y, a menudo, hacen que el entrenamiento sea inestable.

PACI toma un camino diferente. Utiliza la acumulación de gradientes locales. Esto mantiene el pipeline ocupado sin necesidad de una sincronización global.

He aquí por qué PACI es importante:

  • Iguala la estabilidad de los métodos estándar.
  • Utiliza la misma cantidad de memoria.
  • Alcanza la velocidad de configuraciones más rápidas pero más pesadas.
  • Reduce el tiempo para alcanzar la precisión (time-to-accuracy) en 1.69x.

En pruebas con GPT-2 Medium, PACI alcanzó la precisión objetivo mucho más rápido. Esto demuestra que se puede intercambiar una pequeña cantidad de deriva de pesos (weight drift) por ganancias masivas de eficiencia.

Para los equipos de ingeniería, esto significa una reducción del 40% en los costes de hardware. Se obtienen resultados más rápidos sin necesidad de comprar más GPUs o añadir más memoria.

Los investigadores probaron esto en un pipeline de 8 etapas con modelos de estilo GPT. Es posible que necesites ajustar la ventana de acumulación si cambias la profundidad del pipeline o el tamaño del lote (batch size).

Puedes probarlo tú mismo. Los autores proporcionan un wrapper de acumulación local en su repositorio. Sustituye tu sincronizador de flush actual por este para ver la aceleración.

Fuente: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi