Воспроизводимый параллельный стохастический градиентный спуск
Стохастический градиентный спуск (SGD) – одна из самых успешных техник, когда-либо придуманных как для машинного обучения так и для математической оптимизации. Lokad на протяжении многих лет активно использует SGD в задачах оптимизации цепочек поставок, преимущественно через дифференцируемое программирование. У большинства наших клиентов где-то в конвейере извлечения данных имеется хотя бы один SGD.
В программном обеспечении скорость – это функция. Мы хотели сделать нашу реализацию SGD быстрее – но без ущерба для её детерминированного поведения. Действительно, детерминизм необходим для создания систем цепочек поставок производственного уровня. Проще говоря, повторный запуск SGD должен давать абсолютно тот же результат.

Этим летом нам выпала честь приветствовать Зияда Беномара, который прошёл стажировку, посвящённую воспроизводимому ускорению нашей реализации SGD. Зияд Беномар выполнил выдающуюся работу, которой мы делимся ниже.
Кратко говоря, мы достигли ускорения в 5 раз при 6-кратных вычислительных затратах по сравнению с базовой версией SGD. Кроме того, узким местом – в архитектуре Lokad – становится загрузка данных. Оптимизация производительности напоминает бесконечную игру Whac-A-Mole: как только одно узкое место устраняется, появляется новое. Решение этой проблемы ввода/вывода является для нас очевидным следующим шагом. Следите за обновлениями!
Title: Воспроизводимый параллельный стохастический градиентный спуск для данных очень высокой размерности
Author: Ziyad Benomar, École polytechnique
Abstract: Нас интересует изучение распределённых алгоритмов стохастического градиентного спуска и их реализация на машине с несколькими процессорами. Мы рассматриваем проблему с точки зрения производительности и вычислительной скорости, и также требуем, чтобы наши решения были воспроизводимыми, то есть давали один и тот же результат при запуске на одном и том же наборе данных. Мы сосредоточимся главным образом на алгоритме PR-SGD и предложим некоторые адаптации, которые улучшают скорость выполнения, когда время, необходимое для загрузки данных в оперативную память компьютера, очень велико. Для каждого предлагаемого алгоритма мы приводим доказательство сходимости и оценку его времени работы. Наконец, мы сравниваем наши алгоритмы, используя понятие ε-производительности, которое мы определим.