¿Cuál es la diferencia entre el paralelismo del modelo y el paralelismo de datos?

El ‘paralelismo de datos’ y el ‘paralelismo modelo’ son diferentes formas de distribuir un algoritmo. A menudo se usan en el contexto de algoritmos de aprendizaje automático que utilizan el descenso de gradiente estocástico para aprender algunos parámetros del modelo, lo que básicamente significa que:

  • El algoritmo está tratando de estimar algunos parámetros a partir de los datos dados.
  • Los parámetros se estiman minimizando el gradiente contra alguna función de pérdida.
  • El algoritmo itera sobre los datos en pequeños lotes.

En el enfoque de datos paralelos:

  • El algoritmo distribuye los datos entre varios núcleos.
  • Cada núcleo intenta independientemente estimar los mismos parámetros
  • Luego, los núcleos intercambian su (s) estimación (es) entre sí para obtener la estimación correcta para el paso.

En el enfoque modelo-paralelo:

  • El algoritmo envía los mismos datos a todos los núcleos.
  • Cada núcleo es responsable de estimar diferentes parámetros
  • Luego, los núcleos intercambian su (s) estimación (es) entre sí para obtener la estimación correcta para todos los parámetros.

El enfoque de datos paralelos es útil cuando hay un número menor de nodos en el clúster y el número de parámetros a estimar es pequeño, mientras que el enfoque de modelos paralelos es útil en la condición opuesta.

Para obtener más detalles, lea estas dos excelentes publicaciones de Tim Dettmers.

El paralelismo de datos significa la aplicación de una sola instrucción a múltiples elementos de datos. Es la carga de trabajo ideal para una arquitectura de computadora SIMD (instrucción única, datos múltiples), la forma más antigua y simple de procesamiento paralelo en computadoras digitales electrónicas. (La computadora Atanasoff-Berry, inventada en 1937 y totalmente prototipada en 1940, utilizaba 30 unidades aritméticas de un solo bit trabajando en paralelo; el ILLIAC IV, construido en 1970, utilizaba 64 mainframes Burroughs controlados por el mismo flujo de instrucciones; el ICL DAP, Connection Machine y MasPar eran máquinas SIMD comerciales de las décadas de 1980 y 1990, y ahora muchas arquitecturas de GPU tienen un diseño mayormente SIMD, aunque están evolucionando hacia flujos de instrucciones cada vez más independientes).

A veces, la definición de “paralelismo de datos” se afloja del nivel de instrucción a la subrutina o incluso al nivel del programa, aunque eso se llama con mayor precisión SPMD (programa compartido, datos múltiples). Los clústeres que usan el paso de mensajes entre servidores pueden ejecutar el mismo programa en diferentes datos, pero la ramificación y otras diferencias de control significan que no necesariamente seguirán la misma secuencia de instrucciones y podrían tomar diferentes cantidades de tiempo para terminar, lo que provocaría un desequilibrio de carga. El trazado de rayos para gráficos de computadora es un buen ejemplo de esto, donde cada procesador tiene un programa para calcular la forma en que los rayos de luz rebotan en las superficies, pero cada servidor recibe un paquete diferente de rayos iniciales. Algunos se van al espacio, y otros golpean objetos y requieren más procesamiento. Algunos investigadores llaman a eso “paralelismo de datos”, pero como dije, está estirando un poco el significado.

El paralelismo del modelo es algo bastante diferente, porque le da a cada procesador los mismos datos pero le aplica un modelo diferente. Las personas que entrenan redes neuronales pueden haber sido los creadores del término “paralelismo modelo” hace casi 20 años, porque tienen diferentes modelos de redes neuronales para entrenar y probar, y múltiples capas dentro de una red que pueden entrenarse con los mismos datos.

El término también se aplica, por ejemplo, a algo así como un programa de cambio climático o climático, donde se están probando diferentes modelos de física para determinar la precisión y el poder predictivo, utilizando los mismos datos de prueba. Entonces, el paralelismo del modelo es Programa Múltiple, Mismos Datos, lo opuesto a SPMD.

el paralelismo de datos en un entorno de entrenamiento distribuido es cuando cada réplica se entrena en el mismo modelo pero sobre datos diferentes. Después de cada pocas iteraciones, todas las réplicas se sincronizan, ya sea entre sí (all-reduce) o mediante un servidor central (servidor de parámetros). Esto generalmente se escala muy bien y también se puede ver cierta aceleración algorítmica debido al promedio [1].

modelo-paralelismo es cuando cada réplica se entrena sobre los mismos datos pero usa una parte diferente del modelo. Esto es más complicado ya que (a) el modelo debe ser lo suficientemente grande (memoria) para justificar el paso por la red (b) la división debe ser lo suficientemente cuidadosa como para que la computación / comunicación sea razonable.

[1] BT Polyak y AB Juditsky. Aceleración de la aproximación estocástica por promedio. SIAM J. Control Optim., 30 (4): 838–855, julio de 1992.