2017-10-17 63 views
1

这里有个理论问题。我知道,在处理单个机器上无法放入内存的数据集时,spark + EMR是一个很好的选择。深入了解海量数据集

不过,我还想用tensorflow代替spark的ml lib算法来对这些大型数据集进行深度学习。

从我的研究中,我发现我可以使用pyspark,elephas和EMR的组合来实现这一点。另外还有BigDL和sparkdl。

我该怎么做呢?深入学习不适合内存的数据的最佳做法是什么?我应该使用在线学习还是批量培训? This post似乎是说“最高性能的深度学习实现只有单节点”

任何帮助指向我在正确的方向将不胜感激。

+0

是[亚马逊MXNet](https://aws.amazon.com/mxnet/)对于您想实现的目标可能感兴趣的东西? –

回答

0

当您提到“将大量数据集合到内存中”时,我明白您正尝试将所有数据一次加载到内存并开始训练。因此,我根据这个假设给出了答复。

一般的想法是,如果你不能将数据适合你的资源,将数据分成更小的块并以迭代的方式进行训练。

1-逐个加载数据,而不是一次加载所有数据。如果您创建的执行工作流为“加载数据 - >培训 - >发布数据(这可以由垃圾收集器自动完成) - >重新启动”,您可以了解需要多少资源来训练单个数据。

2-使用小批量。只要从#1获得资源信息,就可以轻松计算出最小批量的大小。例如,如果训练单个数据消耗1.5 GB的RAM,并且GPU有8 GB的RAM,理论上可以一次训练5号小批量。

3-如果资源不足以训练1个单一批次,在这种情况下,您可能会考虑增加PC容量或降低型号容量/层数/功能。或者,您可以选择云计算解决方案。