La descente de gradient stochastique (SGD) est l’une des techniques les plus performantes jamais conçues, tant pour l’apprentissage automatique que pour l’optimisation mathématique. Lokad exploite le SGD depuis des années pour des applications supply chain, principalement via la programmation différentiable. La plupart de nos clients possèdent au moins un SGD quelque part dans leur pipeline de données.

En logiciel, la rapidité est une caractéristique. Nous voulions accélérer notre implémentation du SGD - mais sans sacrifier son comportement déterministe. En effet, le déterminisme est essentiel pour fournir des configurations supply chain de niveau production. En bref, exécuter le SGD deux fois doit donner exactement le même résultat.

Reproducible Parallel Stochastic Gradient Descent for Very High Dimensional Data

Cet été, nous avons eu le plaisir d’accueillir Ziyad Benomar pour un stage dédié à l’accélération reproductible de notre implémentation du SGD. Ziyad Benomar a livré un travail remarquable que nous partageons ci-dessous.

En résumé, nous obtenons une accélération de 5x avec un coût de calcul 6x supérieur par rapport à un SGD de référence. Par ailleurs, le goulot d’étranglement - dans l’architecture de Lokad - devient le chargement des données. L’optimisation des performances est un véritable jeu du Whac-A-Mole : dès qu’un goulot d’étranglement est résolu, un nouveau apparaît. La résolution de ce problème d’E/S est pour nous l’étape suivante évidente. Restez à l’écoute !


Title: Gradient descendant stochastique parallèle reproductible pour des données de très haute dimension

Author: Ziyad Benomar, École polytechnique

Abstract: Nous nous intéressons à l’étude des algorithmes de descente de gradient stochastique distribuée et à leur implémentation sur une machine dotée de plusieurs processeurs. Nous abordons le problème du point de vue des performances et de la vitesse de calcul, et nous imposerons à nos solutions d’être reproductibles, c’est-à-dire de donner les mêmes résultats lorsqu’elles sont exécutées sur le même ensemble de données. Nous nous concentrerons principalement sur l’algorithme PR-SGD, et nous proposerons quelques adaptations qui améliorent la vitesse d’exécution lorsque le temps nécessaire pour charger les données dans la RAM de l’ordinateur est très long. Pour chaque algorithme proposé, nous fournissons une preuve de convergence et une estimation de son temps d’exécution. Enfin, nous comparons nos algorithmes à l’aide d’une notion de performance en ε que nous définissons.

Télécharger le PDF