El entrenamiento distribuido aprovecha las técnicas de aprendizaje automático (ML) distribuidas para difundir el entrenamiento de modelos en todos los dispositivos. Por ejemplo, esta técnica se utiliza a menudo con grandes neural networks. Cuando la red, el conjunto de datos de entrenamiento o ambos son demasiado grandes para un procesador, el entrenamiento distribuido distribuye la carga de trabajo entre varios servidores, GPU o máquinas.
El descenso del gradiente estocástico (SGD) es un algoritmo de aprendizaje que divide el conjunto de datos en mini lotes y calcula el gradiente de la función de pérdida después de cada lote. El uso de minilotes en lugar del conjunto de datos completo hace que el entrenamiento sea más eficiente.
La función de pérdida mide el error en las predicciones del modelo, y el objetivo de SGD es descender el gradiente para minimizar el valor de la función. Al igual que con el entrenamiento estándar del modelo, el proceso de entrenamiento se considera completo cuando el modelo alcanza la convergencia: cuando el algoritmo SGD minimiza con éxito el valor de la función.
Los nodos procesan minilotes en paralelo, lo cual es posible porque cada lote se procesa independientemente de los demás dentro de cada iteración. Cada nodo calcula su gradiente y luego envía el valor de gradiente actualizado a los otros nodos de la red. Los otros nodos de trabajo implementan las actualizaciones que reciben en sus propios modelos, lo que ayuda a garantizar que todas las copias del modelo permanezcan idénticas durante todo el proceso de entrenamiento.
La función AllReduce es una operación de comunicación colectiva que permite a cada nodo compartir sus resultados y propagar los resultados agregados a través de la red. AllReduce permite que todos los nodos sincronicen las actualizaciones de parámetros del modelo y mantengan la coherencia. AllReduce, utilizado durante mucho tiempo en la computación de alto rendimiento, se popularizó en infraestructuras de machine learning (ML) como Horovod.
SGD se puede ejecutar de forma sincrónica o asincrónica. Synchronous SGD actualiza todos los nodos al mismo tiempo, lo que mantiene la coherencia a costa de posibles retrasos si algunos nodos se retrasan. El SGD asíncrono actualiza los parámetros tan pronto como está lista una actualización, pero algunos nodos pueden recibir actualizaciones que no incluyen los valores más actuales.
Al reducir los recursos computacionales necesarios por dispositivo, el entrenamiento distribuido puede acelerar los tiempos de entrenamiento. Debido a que es tan intensivo en cómputo, el entrenamiento es uno de los principales casos de uso para el machine learning (ML) distribuido.