El descenso de gradiente estocástico (SGD) es una de las técnicas más exitosas jamás desarrolladas tanto para el aprendizaje automático como para la optimización matemática. Lokad ha estado explotando ampliamente el SGD durante años para fines de la cadena de suministro, principalmente 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 canalizació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 cadena de suministro de calidad de producción. En resumen, ejecutar el SGD dos veces debería dar exactamente el mismo resultado.

Descenso de Gradiente Estocástico Paralelo Reproducible para Datos de Dimensión Muy Alta

Este verano tuvimos el placer de dar la bienvenida a Ziyad Benomar para una pasantía dedicada a la aceleración reproducible de nuestra implementación de SGD. Ziyad Benomar entregó un trabajo notable que compartimos a continuación.

La versión resumida es que logramos una aceleración de 5 veces con un costo computacional 6 veces mayor en comparación con un SGD de referencia. Más allá de eso, el cuello de botella, en la arquitectura de Lokad, se convierte en la carga de datos. La optimización del rendimiento es un Whac-A-Mole interminable: tan pronto como se aborda un cuello de botella, surge uno nuevo. Resolver este problema de E/S es el siguiente paso obvio para nosotros. ¡Estén atentos!


Título: Descenso de Gradiente Estocástico Paralelo Reproducible para Datos de Dimensión Muy Alta

Autor: Ziyad Benomar, École polytechnique

Resumen: Estamos interesados en el estudio de algoritmos distribuidos de descenso de gradiente estocástico y su implementación en una máquina con varios procesadores. Abordamos el problema desde un punto de vista de rendimiento y velocidad computacional, y también imponemos que nuestras soluciones sean reproducibles, es decir, que den los mismos resultados si se ejecutan en 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 de la computadora 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 ε-rendimiento que definimos.

Descargar el PDF