/Local-SGD

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

Primary LanguagePython

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

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

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.