Descenso del Gradiente Estocástico Paralelo Reproducible
La stochastic gradient descent (SGD) es una de las técnicas más exitosas jamás ideadas tanto para el aprendizaje automático como para la optimización matemática. Lokad ha estado explotando extensamente el SGD durante años con fines de supply chain, mayormente a través de la programación diferenciable. La mayoría de nuestros clientes tienen al menos un SGD en algún lugar de su tubería de extracción de datos.
En el software, la velocidad es una característica. Queríamos hacer que nuestra implementación de SGD fuera más rápida - pero sin sacrificar su comportamiento determinista. De hecho, el determinismo es esencial para ofrecer configuraciones de supply chain de grado productivo. En resumen, ejecutar el SGD dos veces debería dar exactamente el mismo resultado.

Este verano tuvimos el placer de recibir a Ziyad Benomar para una pasantía dedicada a la aceleración reproducible de nuestra implementación de SGD. Ziyad Benomar entregó una obra notable que compartimos a continuación.
La versión corta es que logramos una aceleración de 5x con un costo computacional 6x mayor en comparación con un SGD base. Más allá de eso, el cuello de botella - en la arquitectura de Lokad - se convierte en la carga de los datos. La optimización del rendimiento es un interminable Whac-A-Mole: tan pronto se aborda un cuello de botella, surge uno nuevo. Resolver este problema de I/O es el siguiente paso obvio para nosotros. ¡Estén atentos!
Title: Descenso del Gradiente Estocástico Paralelo Reproducible para Datos de Muy Alta Dimensión
Autor: Ziyad Benomar, École polytechnique
Abstract: Estamos interesados en el estudio de algoritmos distribuidos de descenso estocástico del gradiente y su implementación en una máquina con varios procesadores. Abordamos el problema desde el punto de vista del rendimiento y la velocidad computacional, y además exigiremos que nuestras soluciones sean reproducibles, es decir, que den los mismos resultados si se ejecutan sobre el mismo conjunto de datos. Nos centraremos principalmente en el algoritmo PR-SGD, y daremos algunas adaptaciones que mejoran la velocidad de ejecución cuando el tiempo necesario para cargar los datos en la RAM del ordenador es muy largo. Para cada algoritmo propuesto, proporcionamos una prueba de convergencia y una estimación de su tiempo de ejecución. Finalmente, comparamos nuestros algoritmos utilizando una noción de ε-performance que definimos.