Frank McQuillan created MADLIB-1268:
---------------------------------------
Summary: Spike - CNN convergence, data parallel with merge
Key: MADLIB-1268
URL: https://issues.apache.org/jira/browse/MADLIB-1268
Project: Apache MADlib
Issue Type: New Feature
Reporter: Frank McQuillan
Fix For: v2.0
Story
`As a MADlib developer`
I want investigate convergence behaviour when running a single distributed CNN
model across the Greenplum cluster using Keras with a Tensorflow backend
`so that`
I can see if it converges in a predictable and expected way.
Details
* By "single distributed CNN model" I mean data parallel with merge (not model
parallel).
* Does not need to use an aggregate for this spike, if that is too
inconvenient, since performance is not the focus of this story. It's about
convergence.
* In defining the merge function, review [2] for single-server, multi-GPU merge
function. Perhaps we can do the exact same thing for multi-server?
* For dataset, consider using Pavan's CNN code and data set [3]. Another
option is MNIST and/or CIFAR-10.
* See page 11 of [8] re synchronous data parallel in TF
Acceptance
1) Plot characteristic curves of loss vs. iteration number. Compare with
MADlib merge (this story) vs. without merge.
2) Define what the merge function is for CNN. Is it the same as [3] or
something else? Does it operate on weights only or does it need gradients?
3) What does the architecture look like? Draw a diagram showing sync/merge
step for distributed model training.
4) What tests do we need to do to convince ourselves that the architecture is
valid?
5) Do we need to write different merge functions, or have a different approach,
for each different neural net type algorithm? Or is there a general approach
that we can use that will apply to this class of algorithms?
6) Anything to learn from pg-strom [2] ?
7) Anything to learn from H20 [3] ? I don’t think they are doing distributed
training, rather grid search and such.
References
[2] Check for “# Merge outputs under expected scope” section in the python
program
https://github.com/keras-team/keras/blob/bf1378f39d02b7d0b53ece5458f9275ac8208046/keras/utils/multi_gpu_utils.py
[3] Deep learning example for image segmentation
https://drive.google.com/drive/folders/1mgZPGuDP1JI1TUVaRndexDZTlSABLci9?usp=sharing
[4] Deep Learning & Greenplum Discussion (Pavan/Pivotal DE)
https://drive.google.com/file/d/1U808PAwMetNL38mrboPHdn8RKOrpQyBz/view?usp=sharing
[5] Single Machine Data Parallel multi GPU Training
https://www.pyimagesearch.com/2017/10/30/how-to-multi-gpu-training-with-keras-python-and-deep-learning/
[6] Why are GPUs necessary for training Deep Learning models?
https://www.analyticsvidhya.com/blog/2017/05/gpus-necessary-for-deep-learning/
[7] Deep Learning vs Classical Machine Learning
https://towardsdatascience.com/deep-learning-vs-classical-machine-learning-9a42c6d48aa
[8] TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed
Systems
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45166.pdf
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)