¿Qué es el entrenamiento distribuido?
Una sola GPU tiene cómputo y memoria limitados. En cuanto tu modelo es demasiado grande para caber — o demasiado lento para esperar — hay que repartir el trabajo. El entrenamiento distribuido divide la tarea en muchas piezas, las reparte entre varias máquinas y GPUs que trabajan en paralelo, y luego fusiona los resultados.¿Por qué ya no basta una sola máquina?
Los modelos no dejan de crecerDe cientos de millones a cientos de miles de millones de parámetros: los modelos superaron hace tiempo la memoria de una sola tarjeta.
No puedes esperar para siempre
Aunque quepa, entrenarlo en una GPU podría llevar meses o años — inviable en el mundo real.
Los datos también se acumulan
Con océanos de texto de entrenamiento, una sola máquina apenas puede leerlo todo, y mucho menos aprender.
¿Cómo se vuelve más rápido?
Reparte los datos (paralelismo de datos)Cada dispositivo tiene una copia completa del modelo y procesa un lote distinto; luego se sincronizan los gradientes.
Reparte el modelo (paralelismo de modelo)
Si el modelo no cabe en una tarjeta, sus capas se reparten entre varias.
Mezcla ambos
El entrenamiento real de modelos grandes suele apilar paralelismo de datos, de modelo y de pipeline a la vez.
¿Qué es lo difícil?
El coste de comunicaciónLos dispositivos sincronizan gradientes y parámetros constantemente: una red lenta se convierte en el cuello de botella.
Mantener la coherencia
Los resultados entre máquinas tienen que ir a la par, y depurar y tolerar fallos se vuelve bastante más complicado.
Qué desbloquea
El entrenamiento distribuido convierte «entrenar un modelo enorme» de algo imposible en un problema de ingeniería. Detrás de todo modelo grande conocido hay, en el fondo, miles de GPUs trabajando juntas.En resumen: el entrenamiento distribuido es repartir un trabajo demasiado grande para uno entre un equipo — y asegurarse de que todas las respuestas sigan cuadrando.
Comentarios