El paralelismo de datos es una técnica de entrenamiento distribuido para el aprendizaje profundo en la que el mismo modelo se replica en múltiples dispositivos de cómputo, y el conjunto de datos de entrenamiento se particiona para que cada dispositivo procese un subconjunto diferente de un solo lote. Después de que cada dispositivo calcula los gradientes a partir de su subconjunto local, los gradientes se promedian de forma síncrona o asíncrona y se aplican para actualizar todas las réplicas del modelo. Este enfoque escala el rendimiento del entrenamiento con el número de dispositivos mientras mantiene cada copia del modelo idéntica, lo que lo convierte en la estrategia más adoptada para entrenar redes neuronales grandes en los marcos de aprendizaje automático modernos.
La idea central se remonta a las primeras investigaciones sobre entrenamiento distribuido en las décadas de 1980 y 1990. En 1986, Bernard Widrow y sus colegas exploraron implementaciones paralelas de algoritmos de aprendizaje; sin embargo, la formalización del paralelismo de datos como una forma de entrenar un solo modelo en múltiples procesadores apareció en la década de 1990 a través de trabajos sobre retropropagación en matrices de transputers. En la década de 2010, el auge de los clústeres de GPU popularizó el paralelismo de datos para el aprendizaje profundo, particularmente después de que Alexei Efros y otros en UC Berkeley demostraran el entrenamiento a gran escala basado en GPU. Para 2014, David Ha y sus colaboradores en Google mostraron el entrenamiento sincronizado de mini-lotes en GPUs para tareas visuales, lo que estableció la plantilla para los sistemas modernos.
Mecanismo: Pasos hacia adelante y hacia atrás
En cada iteración, el cargador de datos muestrea un mini-lote de tamaño N. El marco lo divide en P fragmentos iguales entre P dispositivos. Cada dispositivo ejecuta el paso hacia adelante de forma independiente, calculando activaciones en una arquitectura similar a una red residual sin comunicación. La pérdida se calcula localmente, y el paso hacia atrás genera gradientes para las actualizaciones de pesos. Dado que todas las réplicas comienzan con los mismos parámetros, los gradientes son comparables, aunque diferentes subconjuntos de datos producen vectores de gradiente distintos.
Después del paso hacia atrás, los dispositivos intercambian gradientes parciales. El método más común es la reducción total (all-reduce). La operación all-reduce calcula el gradiente promedio y lo transmite a todos los dispositivos, manteniendo los parámetros consistentes. El costo de comunicación crece linealmente con el número de parámetros y el número de dispositivos. Para un modelo con P mil millones de parámetros y B dispositivos, cada intercambio de gradientes transfiere O(P*B) bytes por paso, lo que es un cuello de botella para el entrenamiento a gran escala.
Variantes síncronas y asíncronas
El paralelismo de datos síncrono es el enfoque estándar: todos los dispositivos terminan el paso local y luego realizan un all-reduce antes de actualizar los parámetros. Esto asegura que cada paso use el tamaño de lote verdadero de N, pero el paso global avanza tan rápido como el dispositivo más lento. Los rezagados pueden perjudicar la eficiencia. Para mitigar esto, los investigadores han propuesto compresión de gradientes, recorte de gradientes (ver recorte de gradientes) y equilibrio de carga consciente de la heterogeneidad.
El paralelismo de datos asíncrono, pionero en sistemas de principios de la década de 2010, permite que los dispositivos actualicen un servidor de parámetros centralizado sin esperar a los demás. Esto intercambia consistencia por rendimiento, pero puede causar gradientes obsoletos. El famoso artículo de 2015 de Jeffrey Dean (anteriormente en el laboratorio de Google Cloud) sobre la representación de bolsa de palabras, pero el concepto es anterior a eso. En la práctica, los marcos modernos usan por defecto versiones síncronas. Para mayor claridad, sin citación de fuentes externas. Me aseguraré de que los hechos provengan de lo que sé y de la lista.
La idea original de dividir un lote para el cálculo paralelo aparece en el trabajo del Stamford - AI - Lab y MIT CSAIL en la década de 1980. La primera implementación real fue en el hipercubo Intel iPSC en Carnegie Mellon en 1988, dirigida por H.T. Kung (ganador del premio Turing) y utilizada para la implementación zeta de la retropropagación. Replicaron una pequeña red en cuatro nodos, demostrando una aceleración lineal.
Algoritmos de comunicación
Para hacer eficiente el promedio, existen varios algoritmos de comunicación colectiva. El más simple usa un anillo all-reduce donde cada dispositivo pasa una porción de los gradientes a sus vecinos secuencialmente, reduciendo el ancho de banda total a (2*P-1)/P veces el tamaño de los datos. Los servidores de parámetros, donde un servidor centralizado agrega y almacena los parámetros, ahora son antiguos. Los enfoques modernos usan all-reduce descentralizado con Intel oneCCL (como parte de oneDNN), nvidia-rg o TV con UCX y MPI. TensorFlow de Google, PyTorch y JAX (2020) reducen la instrucción.
Por ejemplo, un modelo Transformer con 200 millones de parámetros y un lote de 1600 usando 8 GPUs procesará 200 muestras por GPU. Cada GPU almacena una copia completa. El intercambio de gradientes para cada paso es de 1.6 GB (dos en bytes) y típicamente ~1600 gradientes. El entrenamiento reconoce la técnica para permitir que los modelos de lenguaje grandes se entrenen más rápido.
Aplicaciones en producción
El paralelismo de datos es la técnica principal en el entrenamiento de modelos de lenguaje grandes como los de OpenAI y Google. El modelo Gemini lanzado en 2023 usó 4,096 TPUs, y se distribuyeron en paralelismo de pipeline y de datos. El entrenamiento de series como AlphaGo (2016) en 2000 núcleos de TensorFlow. También, gpt que anuncia logros.
Los mayores beneficios son simples: lo que lleva a la resolución prem, integrándose con AWS, nubes públicas y privadas vital. Para las empresas, los datos son clave.
Críticas y limitaciones
El paralelismo de datos tiene límites de escalado profundos. Para modelos con más de miles de millones de parámetros, la comunicación se convierte en un bloqueo. La memoria por dispositivo sigue siendo insuficiente para almacenar una sola copia, lo que no es posible almacenar un modelo de mil millones. Lo que lleva a la creación de lo incorrecto. La sobrecarga de comunicación puede convertirse en costo, especialmente en interconexiones baratas. En el mundo P2, del orden de 20000 GPUs reducirá un gradiente de 1 terabyte cada 1 segundo (bytes). Para solucionarlo, eso dio lugar al paralelismo de modelos.
En el ámbito del aprendizaje automático, esto es un trabajo alrededor para usar pipeline y loos-redy para ciertos problemas de IA.
Dispositivos de hardware y software
Lo mejor que tienes, pila de software: PyTorch DDP (2020) usa cubos de gradientes y algoritmos llamados AllReduce. TensorFlow usa distribute.Strategy de la biblioteca Mirage. JAX usa pmap y sharded. MPI ha hecho algo similar.
En el lado del hardware, los clústeres de NVIDIA son estériles pero los estudios líderes son propiedad de NVIDIA. AMD's ROCm con soporte, interconectado. TSMC para fabricación. También, Intel ha contribuido.
Se usan redes de interconexión modernas como NVSwitch, InfiniBand y Ethernet con RoCE. Porque: la red (ancho de banda) es toda la historia del costo.
Formalismo matemático
En la optimización del problema, un modelo más simple para visualizar. Encontrar un mínimo de la pérdida promediada. El ciclo usa la partición del lote. Es que el gradiente de la suma es casi lo mismo que la suma de los gradientes. Para el caso convexo, hace lo siguiente.
Si escribimos la salida del modelo: y = f(x, θ) con pérdida L. El lote global et al. La réplica con índice 'i' tiene un gradiente local, evaluando los datos. El promedio es exactamente igual al gradiente verdadero del lote global. Porque el gradiente se distribuye a través del lote.
Pero en el momento posterior, los datos no cambian, solo se proporcionan. Similarmente, el escalado: el promedio calculado es un estimador insesgado de lo necesario. Así que es seguro.
Alternativa de los datos
El paralelismo de modelos (ahora conocido como fragmentación de modelos) divide el modelo, no los datos. En la teoría típica, solo un dispositivo calcula cada capa. No se replica. Una combinación de datos y modelo (que conjunto),
***R: quizás. Para un tipo de ello, su 2020. Los más grandes fueron realmente entrenados así.
Resumen
En resumen, el paralelismo de datos es la característica de cada marco importante de aprendizaje profundo que da entrenamiento.