An open API service indexing awesome lists of open source software.

https://github.com/vgg47/local-sgd

Local SGD implementation based on https://arxiv.org/abs/1805.09767
https://github.com/vgg47/local-sgd

computational-mathematics gradient-descent mipt optimization science

Last synced: 5 months ago
JSON representation

Local SGD implementation based on https://arxiv.org/abs/1805.09767

Awesome Lists containing this project

README

          

## Как запустить код на кластере?

Склонируйте репозиторий:

git clone https://github.com/vgg47/local_sgd/ local_sgd

Перейдите в папку с проектом:

сd local_sgd

Добавьте все необходимые пакеты:

module add python/3.7 tensorflow/1.14 mpi/openmpi4-x86_64
pip install scipy mpi4py --user

Для запуска алгоритма выполните команду

sbatch -n 20 ./run.sh

-n - количество воркеров

В run.sh зашита конфигурация запуска алгоритма, приведу описание флагов:

--steps, -s количество шагов градиентного спуска, дефолтно 10^3
--sync количество синхронизации между воркерами, дефолтно 1
--dataset, -d путь к файлу с датасетом, дефолтно ./data/default_data.csv
--labels, -l путь к файлу со значениями таргета, дефолтно ./data/default_labels.csv
--batch-size, -b размер батча, дефолтно 16
--precision минимальное евклидово расстояние, на которое должны изменяться веса на каждом шаге
градиентного спуска, дефолтно 10^-8

Все их нужно добавлять к строке:

mpiexec python3 script.py

#### Внимание
Если у вас нет датасета, то его можно сгенерить. Запустите data_generator.py.
При запуске скрипт сначала считывает количество строк в датасете, а затем количество фичей.
Названия файлов можно не указывать, тогда и при запуске алгоритма флажки с директориями
можно будет опустить, потому что будут использоваться дефолтные значения.
Для демонстрации отлично подходит датасет размером 10000 * 100.

Для запуска тестов и скриптов отрисовки графиков необходимо предварительно нарезать данные на партиции.
Чтобы сделать это запустите скрипт partitioner.py, указав ему в аргументы директории данных и размер шага для
размера партиции (10% от размера датасета подойдет). После этого запускайте файл test.py.