La descente de gradient stochastique (SGD) est l’une des techniques les plus réussies jamais conçues pour l’apprentissage automatique et l’optimisation mathématique. Lokad exploite intensivement le SGD depuis des années à des fins de supply chain, principalement grâce à la programmation différentiable. La plupart de nos clients ont au moins un SGD quelque part dans leur pipeline de données.

En informatique, la vitesse est une fonctionnalité. Nous voulions rendre notre implémentation du SGD plus rapide, mais sans sacrifier son comportement déterministe. En effet, le déterminisme est essentiel pour fournir des configurations de supply chain de qualité de production. En résumé, exécuter le SGD deux fois devrait donner exactement le même résultat.

Reproductible Parallel Stochastic Gradient Descent pour des données très dimensionnelles

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 réalisé 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 par rapport à un SGD de référence. Au-delà de cela, le goulot d’étranglement - dans l’architecture Lokad - devient le chargement des données. L’optimisation des performances est un jeu de Whac-A-Mole sans fin : dès qu’un goulot d’étranglement est résolu, un nouveau apparaît. Résoudre ce problème d’E/S est la prochaine étape évidente pour nous. Restez à l’écoute !


Titre : Reproductible Parallel Stochastic Gradient Descent pour des données très dimensionnelles

Auteur : Ziyad Benomar, École polytechnique

Résumé : Nous nous intéressons à l’étude des algorithmes de descente de gradient stochastique distribués et à leur implémentation sur une machine avec plusieurs processeurs. Nous abordons le problème d’un point de vue de performance et de vitesse de calcul, et nous imposons également à nos solutions d’être reproductibles, c’est-à-dire de donner les mêmes résultats si elles sont exécutées sur le même ensemble de données. Nous nous concentrons principalement sur l’algorithme PR-SGD, et nous proposons des 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 donnons une preuve de convergence et une estimation de son temps d’exécution. Enfin, nous comparons nos algorithmes en utilisant une notion de ε-performance que nous définissons.

Télécharger le PDF