Zeno

May 10, 2019 · View on GitHub

This is the python implementation of the paper "Zeno: Distributed Stochastic Gradient Descent with Suspicion-based Fault-tolerance"

Requirements

The following python packages needs to be installed by pip:

  1. MXNET (we use GPU, thus mxnet-cu80 is preferred)
  2. Gluon-CV
  3. Numpy

The users can simply run the following commond in their own virtualenv:

pip install --no-cache-dir numpy mxnet-cu80 gluoncv

Run the demo

Options:

OptionDesctiption
--batch_size 100batch size of the workers
--lr 0.1learning rate
--nworkers 20number of workers
--nepochs 200total number of epochs
--gpuindex of GPU to be used
--nbyznumber of faulty workers
--byz_typetype of failures, bitflip or labelflip
--aggregationaggregation method, mean, median, krum, or zeno
--zeno_size 4batch size of Zeno, nrn_r in the paper
--rho_ratioin the paper, ρ=γ/rho_ratio\rho = \gamma / rho\_ratio
--bnumber of trimmed values, bb in the paper
--iid 1-iid 1 means the wokers are training on IID data
--interval 10log interval
--seed 337random seed
  • Train with 20 workers, 8 of them are faulty with bit-flipping failures, Zeno as aggregation:
python mxnet_cnn_cifar10_impl.py --gpu 0 --nepochs 200 --lr 0.05 --batch_size 100 --nworkers 20 --nbyz 8 --byz_type bitflip --rho 200 --b 12 --zeno_size 4 --aggregation zeno

More detailed commands/instructions can be found in the demo script test_zeno_1.sh