¿Cómo funciona el entrenamiento multi-gpu?

Hay un par de formas de usar múltiples GPU para el entrenamiento: paralelismo de datos y paralelismo de modelos. Hay diferentes formas de implementarlos. Voy a tratar de explicar el paralelismo del modelo utilizando el patrón de software consumidor-productor. Espero que te dé una idea de cómo funciona.

En el enfoque de paralelismo modelo, tiene N procesos de consumo, donde N es el número total de GPU, M productores y un proceso de controlador. La comunicación entre consumidores y productores se produce a través de una cola FIFO.

Imaginemos que estamos entrenando un clasificador de imágenes. El controlador inicia los productores, consumidores y colas. Por un lado, los productores leen las imágenes en bruto, las procesan previamente y las ponen en cola por lotes. Por otro lado, los consumidores están esperando que los productores llenen la cola con un lote. Los consumidores solo esperan en la primera iteración. Ya habrá datos esperando en la cola en las iteraciones posteriores porque el procesamiento previo de un lote requiere menos que entrenar un lote. Si ese no es el caso, bifurca a más productores.

Los consumidores toman lotes y ejecutan una iteración de entrenamiento en paralelo. Paralelo a eso, los productores ya están haciendo los próximos lotes utilizando la CPU. Por lo tanto, la lectura y el preprocesamiento se realizan sobre la marcha y computacionalmente gratis porque los productores usan las CPU y los consumidores usan las GPU.

Una vez que los consumidores terminan de entrenar sus respectivos lotes, obtenemos todos los parámetros de cada modelo y los promediamos. Luego actualice cada modelo (consumidor) con los parámetros promediados. Podemos usar otra cola para asegurarnos de que los parámetros se actualicen al mismo tiempo al final de cada iteración para todos los consumidores.

Este enfoque le dará una velocidad de 3.75x usando 4 GPU. ¡No está mal! Supongo que no es exactamente 4x porque a veces los consumidores necesitan esperar a que los otros terminen al final de cada iteración.

Jeff Dean habla sobre “Aprendizaje automático a gran escala para tareas predictivas”, donde explica un enfoque para el paralelismo de datos y otro enfoque para el paralelismo modelo. Hay una buena explicación del paralelismo de datos en el siguiente video.

También hay un documento al respecto.

More Interesting

¿Qué son los asombrosos papeles gráficos de conocimiento?

¿Cuál es la diferencia entre optimización submodular y convexa?

¿Hay algún resumen de las mejores modelos para el premio de Netflix? ¿Cuáles son las ideas de alto nivel e intuitivas detrás de los modelos ganadores que finalmente fueron utilizados en el aprendizaje conjunto por los mejores equipos?

¿Cuáles son las formas en que el científico de datos indio que actualmente trabaja en una empresa de aprendizaje automático con sede en India inmigra a los Estados Unidos?

¿Cómo funciona el algoritmo de recomendación de filtrado basado en contenido?

¿Cómo se usa el aprendizaje automático en FinTech (P2P, pagos), particularmente fuera de algo trading? ¿Alguien tiene ejemplos específicos en punto a punto, verificación de crédito, pagos, etc.?

¿Cuáles son los prerrequisitos matemáticos para estudiar el aprendizaje automático?

¿Cómo implemento un análisis de sentimiento a nivel de documento?

En weka, ¿qué significan las cuatro opciones de prueba y cuándo las usa?

¿El aprendizaje automático es algo que no llegará demasiado lejos si no tiene la formación académica adecuada? Dado que hay tanto en Internet, ¿se puede entender?

¿Se recomienda que un desarrollador Java experimentado aprenda y pase al aprendizaje automático? ¿Qué tan difícil / fácil es?

¿Cuáles fueron los 10 problemas principales en Machine Learning para 2013?

¿La IA tradicional se está volviendo obsoleta a la luz del progreso en el aprendizaje profundo?

¿Qué métodos / códigos están disponibles para estudiar un corpus que consiste en correos electrónicos?

¿Cuáles son las desventajas de usar el algoritmo clásico de árbol de decisión para grandes conjuntos de datos?