¿Es la computación paralela algo importante hoy en día en comparación con la computación distribuida?

En el espacio de Machine Learning y AI, ha habido desarrollos sustanciales tanto en la computación paralela (que estoy definiendo como código multiproceso que se ejecuta en un solo nodo / máquina con muchas CPU y / o GPU) como en la computación distribuida (ejecutando programas con múltiples procesos en muchos nodos / máquinas). Ambas siguen siendo áreas importantes de investigación.

Por un lado, los algoritmos de ML e IA pueden funcionar correctamente bajo sincronización inexacta (ejemplo de trabajo de investigación aquí), por lo tanto, podemos construir sistemas de software que exploten la consistencia relajada para mitigar en gran medida las desventajas de la computación distribuida, como la alta latencia entre máquinas, bajo ancho de banda , rendimiento desigual en un clúster o centro de datos. Los paradigmas de programación de ML como el paralelismo de datos también reducen la carga del desarrollador al permitir que los programas de ML distribuidos (y paralelos) se escriban de una manera que abstraiga la programación y la comunicación del trabajo, de forma análoga a MapReduce.

Por otro lado, las aplicaciones industriales de ML e IA continúan aumentando rápidamente tanto en complejidad como en escala de datos (piense en sistemas de recomendación para clientes 100M-1B o clasificación de imágenes en TB-PBs de imágenes), y estamos viendo una tendencia donde más y más CPU y GPU se están introduciendo en cada máquina solo para mantener el ritmo. Entonces, incluso los sistemas distribuidos para ML ahora vienen con cachés de múltiples niveles para explotar completamente la jerarquía de memoria en clústeres con múltiples CPU y GPU por máquina (ejemplo de trabajo de investigación aquí). Las máquinas de propósito especial con alta densidad de GPU, como la DGX-1 de nVidia, podrían convertirse en un lugar común para aplicaciones ML e IA, y podrían estar funcionando juntas como parte de un clúster distribuido.

Creo que continuaremos viendo una interacción entre la computación paralela y distribuida, al menos en ML e IA.

Si puedo hacer una analogía, la computación paralela es como mover una carga de artículos en un camión grande, y la computación distribuida mueve la misma carga de artículos en 100 camionetas. ¿Cual es mejor?

-El camión semi bien puede llevar todos los artículos al destino antes, y todo está allí y completo. Mientras que las camionetas obtienen la mayoría de los artículos allí, pero algunas son rezagadas y la entrega general lleva más tiempo (¡piense en un atasco de camionetas que intentan ingresar al patio de destino!). ¿Es este tiempo de entrega un problema?

-el camión semi es muy costoso de comprar y operar, pero si tiene que entregar una carga todos los días, es probable que sea rentable durante un año. Las camionetas son más baratas de poner en marcha con unas pocas y expandirse, pero el costo total podría ser mayor durante un año. Pero algunos jugadores como Amazon están haciendo que esta flota de camionetas esté disponible a un costo eficiente. -> debe ejecutar los números para su tipo y frecuencia de trabajos.
En el curso y la velocidad actuales, Amazon y similares pueden hacer que la solución de computación distribuida sea mucho más rentable, siempre y cuando no le importe el tiempo exacto que lleva entregar. Y probablemente la mayoría de la gente no. Pero algunos lo hacen.

-¿Puedes encontrar el controlador / programadores para las pastillas semi vs? Todos los conductores de las camionetas toman una ruta diferente, y las cosas son caóticas. ¿Importa? No hay dos de las pastillas que ejecuten exactamente el mismo software, ¿importa? Su modelo de negocio debe ser claro como el cristal en las entradas / salidas requeridas, y permitir que las pastillas (computadoras distribuidas) se enruten / programen de la manera que prefieran, para que sean más rentables. No te preocupes por los detalles. Desafortunadamente, el software actual es bastante más exigente con respecto a la consistencia del entorno, por lo que es posible que no encuentre código de trabajo para la solución distribuida. Hoy puede resultarle más fácil obtener un programador para el camión semi.

Se deben calcular otros factores como la eficiencia energética. El camión semi contiene la solución más eficiente para cada componente, a su capacidad. Las pastillas están en todo el mapa y la suma de 100 pastillas puede desperdiciar mucha más energía y componentes innecesarios. Recuerde que los conductores mantienen los motores en ralentí hasta que todos llegan al destino. Energía desperdiciada.

Bien, entonces la respuesta es: sí, el mercado de grandes sistemas paralelos, llamado HPC, es robusto y está creciendo. Es una pequeña fracción del tamaño del mercado de sistemas distribuidos.
Aquí hay algunos análisis de mercado: el gasto de HPC supera al mercado de TI y continuará

La computación paralela es una clase de computación distribuida. Siempre ha sido grande y ha crecido con los años a medida que aprendemos más y somos capaces de reorganizar las cosas en todo el espectro de hardware, software, middleware y conectividad. Tenga en cuenta que los algoritmos también se incluyen en esta evolución creciente.