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
- Host: GitHub
- URL: https://github.com/vgg47/local-sgd
- Owner: vgg47
- Created: 2019-12-04T23:32:20.000Z (almost 6 years ago)
- Default Branch: dev
- Last Pushed: 2019-12-20T21:39:55.000Z (almost 6 years ago)
- Last Synced: 2025-04-03T22:11:19.927Z (6 months ago)
- Topics: computational-mathematics, gradient-descent, mipt, optimization, science
- Language: Python
- Homepage: https://www.overleaf.com/read/kkfbfbtngnyv
- Size: 21.4 MB
- Stars: 2
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.