Apache Spark 2.4: hacia la analítica de datos unificada
Para poder hacer esto posible se ha tenido que diseñar este nuevo modo de planificación ya que el modelo de ejecución en Spark está basado en un grafo acíclico (DAG) y cualquier tarea en una de las etapas de ejecución no depende de ninguna otra, es decir, las tereas son independientes y no hay un modelo síncrono de coordinación entre todas; además, si una tarea dentro de una etapa falla la tarea se vuelve a re-arrancar, pero no se reinician todas. Pero en los frameworks de IA de tipo DDL (Distributed Deep Learning) con entrenamiento multi-nodo (como Horovod o Distributed TensorFlow), los workers empiezan al mismo tiempo y hay unos mecanismos específicos de comunicación o paso de mensajes y datos entre los antecesores y los predecesores que son generalmente síncronos y además existe una fuerte coordinación entre las distintas tareas. Con el Barrier Execution Mode, Spark lanza todas las tareas correspondientes a la fase de entrenamiento multimodo del modelo al mismo tiempo e implementa funciones de tipo AllReduce o AllAggregate sobre RDDs que permiten para cada iteración sumar, agregar todos los gradientes en las n capas del modelo de DL utilizando n GPUs en paralelo y hacer el broadcast de éstos de las capas superiores mientras se siguen computando los gradientes de las capas inferiores. Además, Spark también soporta tolerancia a fallos en este nuevo modo de planificación de manera que, si una tarea falla en plena ejecución, Spark aborta todas las tareas pertenecientes a la etapa donde se produce el fallo y volvería a arrancar la etapa (arrancando todas las tareas al mismo tiempo de nuevo).
Se podría decir que esta funcionalidad de Apache Spark podría marcar un antes y un después, especialmente en lo relativo al diseño de soluciones de infraestructura ya que permitirá la implantación y utilización de clústeres híbridos de Big Data + AI con nodos basados en computación heterogénea; y es que, hasta ahora era muy común tener dos clústers distintos: uno para la parte de datos (Big Data) donde se ejecutan las fases de ingesta, extracción de diversas fuentes, transformación, adaptación de datos al modelo, y carga de los datos (al modelo) y otro clúster, de GPUs distribuidas, donde se realiza el entrenamiento y validación de los modelos con la mayor rapidez posible. No obstante, este ha sido el primer paso importante para unificar el estado del arte en IA y Big Data bajo Apache Spark y ofrecer una solución de Unifyed Analytics,y para ello ha nacido el proyecto Hydrogen. Mas información en la sesión del SPARK+AI Summit de este año.
Aún queda camino por recorrer para, por ejemplo, implementar un interface optimizado para el intercambio de datos entre Spark y los frameworks de AI (Spark Project Improvement Proposal - SPIP: JIRA SPARK-24579), o implementar los cambios necesarios para que Spark pueda utilizar aceleradores hardware (CPUs, GPUs, FPGAs o TPUs) con nodos de computación heterogénea (un clúster heterogéneo) y sepa cómo planificar tareas en aquellos nodos ejecutores que tienen este tipo de aceleradores hardware de una manera inteligente, incluso cómo planificar varias tareas sobre el mismo nodo utilizando varias de sus GPUs en paralelo (JIRAs SPARK-24615 y SPARK-26104). Se espera que la versión 3.0 de Apache Spark ya incluya todo esto.
Largest Euro Hadoop Cluster Uses Huawei Servers
Comentarios
Publicar un comentario