3 ms·
Sure! So my stack currently uses iterative reduce[1]. The algorithm can then be swapped out which can either be gradient descent or conjugate gradient. The defa
by agibsonccc 13y ago
Sure! So my stack currently uses iterative reduce[1]. The algorithm can then be swapped out which can either be gradient descent or conjugate gradient. The default is conjugate gradient. I also have all of the knobs like adagrad, drop out,....
In general, the idea is that you split up the training in to mini batches and then average the parameters after all of them have been computed.
I will be working on downpour SGD as well.
In my case, I use akka underneath for all of the distributed computing. Everything is inherently parallelizable using an optimal batch size algorithm (very similar to hadoops). From there, it's usually just a case of figuring out what you want your matrix computations made of.
I also built it from the ground up to speak pretty much any data format.
The idea is using a DataSetIterator that speaks hdfs, local file systems,.... This allows you to handle data locality independent of the algorithms.
If you want more on the architecture, here's a pretty broad overview[2]
Admittedly, not optimal, this is a very early release of the lib. After RNTN have been impled, I will be focusing on optimizations and improvements.
[1]:
https://github.com/jpatanooga/KnittingBoar/wiki/Iterative-Reduce https://github.com/jpatanooga/KnittingBoar/wiki/Iterative-Re...
[2]: http://deeplearning4j.org/architecture.html http://deeplearning4j.org/architecture.html