Как запустить код на кластере?
Склонируйте репозиторий:
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.