Llegamos a ustedes gracias a:



Reportajes y análisis

Los nuevos marcos Google GPipe y Microsoft PipeDream

Cómo hacer crecer el entrenamiento de la inteligencia artificial en todas direcciones.

[12/06/2020] La ciencia de datos es trabajo duro, no es magia. Que un modelo de inteligencia artificial (IA) funcione como se dijo depende de qué tan bien haya sido entrenado, y no existe un enfoque de 'talla única' para entrenar los modelos de IA.

El entrenamiento distribuido de la IA, un mal necesario

El escalado es una de las consideraciones más difíciles al entrenar los modelos de IA. El entrenamiento puede ser especialmente desafiante cuando un modelo crece y requiere demasiados recursos como para ser procesado en su totalidad en una sola plataforma de computación. El modelo puede haber crecido tanto que excede el límite de memoria de una la plataforma de procesamiento, o el acelerador podría haber requerido el desarrollo de algoritmos o infraestructura especiales. Los datos de entrenamiento pueden crecer tanto que el propio entrenamiento demoraría un tiempo excesivamente largo y se vuelve prohibitivamente costoso.

El escalado puede ser 'pan comido' si no requerimos que el modelo sea particularmente bueno en la tarea asignada. Pero a medida que aumentamos el nivel de precisión de inferencia requerido, el proceso de entrenamiento puede extenderse por más tiempo y consumir cada vez más recursos. Abordar este problema no es simplemente una cuestión de lanzarle hardware más potente al problema. Al igual que con muchas cargas de trabajo de aplicaciones, no solo se puede confiar en tener procesadores más rápidos para mantener el crecimiento lineal cuando crece la complejidad del modelo de IA.

Puede que se requiera de un entrenamiento distribuido. Si los componentes de un modelo se dividen y distribuyen a nodos optimizados para su procesamiento en paralelo, el tiempo necesario para entrenar un modelo puede reducirse significativamente. Sin embargo, la paralelización puede ser un ejercicio tenso, considerando cuán frágil puede ser la construcción de un modelo estadístico.

El modelo puede fallar a lo grande si algún cambio aparentemente menor en el gráfico (sus capas, nodos, conexiones, pesos, hiperparámetros, etc.) interrumpe la capacidad del modelo de hacer inferencias precisas. Incluso si dejamos intacto el gráfico subyacente e intentamos dividir las capas del modelo en componentes distribuidos, entonces necesitaremos recombinar sus resultados en un todo coherente.

Si no tenemos cuidado, eso puede resultar en un modelo recombinado con algún sesgo en el desempeño de la tarea designada.

Nuevos marcos de la industria para el entrenamiento distribuido de la IA

En la profesión de la ciencia de datos, seguimos viendo innovación respecto al entrenamiento de los modelos de IA, y gran parte de esta se enfoca en cómo hacerlo de manera eficiente en las multinubes y otros entornos distribuidos.

En ese sentido, Google y Microsoft lanzaron recientemente nuevos marcos para el entrenamiento de modelos de aprendizaje profundo: GPipe de Google y PipeDream de Microsoft. Los marcos siguen principios de escalado similares.

Aunque diferentes en varios aspectos, GPipe y PipeDream comparten una visión común para el entrenamiento distribuido de los modelos de IA. Esta visión implica la necesidad de:

  • Liberar a los desarrolladores de IA de tener que determinar cómo dividir modelos específicos, dada una implementación de hardware.
  • Entrenar modelos de cualquier tamaño, tipo y estructura en conjuntos de datos de cualquier tamaño y formato, y de una manera que sea independiente de la tarea de inferencia prevista.
  • Dividir los modelos para que el entrenamiento paralelo no distorsione el conocimiento del campo (por ejemplo, cómo reconocer una cara) para el que fue diseñado.
  • Paralelizar la capacitación de una manera agnóstica de la topología de los entornos distribuidos objetivo.
  • Paralelizar tanto los modelos como los datos en una compleja pipeline de entrenamiento distribuido.
  • Mejorar las velocidades de cómputo de las GPU (unidades de procesamiento de gráficos) para varios tipos de cargas de trabajo de entrenamiento.
  • Permitir el uso eficiente de los recursos de hardware en el proceso de entrenamiento.
  • Reducir los costos de comunicación a escala al realizar entrenamientos en la infraestructura de nube.

Escalar el entrenamiento cuando los modelos y las redes se vuelven extremadamente complejos

Lo que distingue a estos dos marcos es la medida en que soportan la optimización del desempeño de las cargas de entrenamiento para modelos con capas secuenciales -que siempre es más difícil de paralelizar- y en entornos objetivo más complejos, como las multinubes, mesh y escenarios 'nube a borde'.

GPipe de Google es muy adecuado para el entrenamiento paralelo rápido de redes neuronales profundas que incorporan múltiples capas secuenciales. Hace lo siguiente automáticamente:

  • Particiona los modelos y mueve los modelos particionados a diferentes aceleradores, como GPUs o TPUs (unidades de procesamiento tensorial), que poseen hardware especial que ha sido optimizado para diferentes cargas de trabajo de entrenamiento.
  • Dividir un mini lote de ejemplos de entrenamiento en micro lotes más pequeños que pueden ser procesados por los aceleradores en paralelo.
  • Permitir el aprendizaje distribuido de los internodos utilizando el descenso de gradientes estocásticos sincrónicos y el paralelismo de pipelines sobre una biblioteca de aprendizaje automático distribuido.

PipeDream de Microsoft también explota el paralelismo de modelos y datos, pero está más orientado a impulsar el rendimiento de los complejos flujos de trabajo de entrenamiento de IA en entornos distribuidos. Siendo uno de los proyectos de entrenamiento de IA de la iniciativa Project Fiddle de Microsoft Research, PipeDream puede:

  • Separar la computación y la comunicación de los internodos dando como resultado un paralelismo más fácil de los datos y modelos en el entrenamiento distribuido de IA.
  • Dividir los modelos de IA en etapas que consisten en un conjunto consecutivo de capas.
  • Asignar cada etapa a una GPU separada que realiza las funciones de red neuronal backward pass y forward pass para todas las capas en esa etapa.
  • Determinar cómo dividir los modelos en función de una ejecución de perfilado (profiling) realizada en una sola GPU.
  • Equilibrar las cargas computacionales entre diferentes particiones y nodos del modelo, incluso cuando la topología distribuida de un entorno de entrenamiento es muy compleja.
  • Minimizar las comunicaciones entre los nodos distribuidos de los trabajadores que manejan las diversas particiones, dado que cada trabajador tiene que comunicarse con un solo trabajador y comunicarle únicamente los subconjuntos de los gradientes y las activaciones de salida del modelo general.

Se pueden encontrar más detalles sobre ambos marcos en sus respectivos documentos de investigación: GPipe y PipeDream.

La necesidad de consenso y escalabilidad

El entrenamiento es una característica fundamental del éxito de la IA, y cada vez más profesionales de IA están distribuyendo estos flujos de trabajo a través de multinubes, mesh y bordes distribuidos.

En el futuro, Google y Microsoft deberían alinear sus respectivos marcos en un enfoque de consenso de la industria para el entrenamiento distribuido de la IA. Podrían considerar involucrar a Uber en este sentido. La compañía de viajes compartidos ya tiene un mayor derecho a la distinción de ser el primero en el mercado con marcos de entrenamiento distribuido. Abrió su proyecto Horovod hace tres años. El proyecto, alojado por la AI Foundation de la Fundación Linux se ha integrado con los principales entornos de modelado de inteligencia artificial como TensorFlow, PyTorch, Keras y Apache MXNet.

La escalabilidad debe ser una consideración central de cualquiera de estos marcos. En este momento, Horovod tiene algunas funciones útiles en ese sentido, pero carece del enfoque de escala que Google y Microsoft han incorporado en sus respectivos proyectos. En términos de escalabilidad, Horovod puede ejecutarse en GPU simples o múltiples, e incluso en múltiples hosts distribuidos, sin cambios de código. Es capaz de agrupar pequeñas operaciones, automatizar el afinamiento distribuido y entrelazar canales de comunicación y computación.

Los problemas de escalabilidad variarán según el escenario de capacitación que se tome en consideración. Independientemente de qué marco se vuelva el dominante (GPipe, PipeDream, Horovod u otra cosa), sería bueno ver el desarrollo de la industria de los flujos de trabajo de referencia para la implementación distribuida de los siguientes escenarios de capacitación especializada:

  • Aprendizaje semisupervisado, que utiliza pequeñas cantidades de datos etiquetados --tal vez obtenidos de forma masiva de usuarios humanos en aplicaciones móviles-- para acelerar la identificación de patrones en grandes conjuntos de datos no etiquetados, como los ingestados a través de cámaras, micrófonos y sensores ambientales de dispositivos IoT.
  • Aprendizaje de refuerzo, que implica la creación de módulos de inteligencia artificial, como los implementados en robots industriales, que pueden aprender de forma autónoma con pocos o ningún dato de entrenamiento, aunque posiblemente con orientación humana.
  • Aprendizaje colaborativo, que cuenta con módulos de IA distribuidos, tal vez desplegados en enjambres de drones, que colectivamente exploran, intercambian y explotan hiperparámetros óptimos, permitiendo que todos los módulos converjan dinámicamente en el equilibrio óptimo entre la velocidad de aprendizaje y la precisión.
  • Aprendizaje evolutivo, que entrena a un grupo de entidades basadas en IA -quizás terminales móviles y de IoT- a través de un procedimiento que aprende de un conjunto de decisiones de interés propio basadas en un conocimiento a nivel de entidad y en diversos grados de intercambio de parámetros de modelos entre entidades.
  • Aprendizaje de transferencia, que reutiliza los datos de entrenamiento relevantes, representaciones de características, arquitecturas de nodos neuronales, hiperparámetros y otras propiedades de los modelos existentes, como los ejecutados en nodos pares.
  • Entrenamiento en el dispositivo, que permite a las aplicaciones ingestar datos locales recién detectados y actualizar rápidamente los modelos específicos de IA que persisten en esos dispositivos.
  • Aprendizaje de navegación de robots, que funciona con entradas sensoriales en bruto, explota las regularidades en los layouts del entorno y requiere pocos datos de entrenamiento.

Esta lista ni siquiera se acerca a la diversidad de los flujos de trabajo de entrenamiento distribuido de IA que prevalecerán en el futuro. En la medida en que dispongamos de marcos de referencia estándar en el 2020, los científicos de datos tendrán una base sólida para impulsar la revolución de la IA en todas las direcciones.

James Kobielus es director de investigación y analista principal de Futurum Research.