深入学习海量数据集

时间:2017-10-17 16:29:19

标签: apache-spark deep-learning

这里的理论问题。我知道在处理单个机器上无法容纳内存的数据集时,spark + EMR是一个很好的方法。

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

根据我的研究,我发现我可能会使用pyspark,elephas和EMR的组合来实现这一目标。另外还有BigDL和sparkdl。

我是以错误的方式来做这件事的吗?深入学习无法融入内存的数据的最佳实践是什么?我应该使用在线学习还是批量培训? This post似乎说“大多数高性能深度学习实现只是单节点”

非常感谢任何指导我正确方向的帮助。

1 个答案:

答案 0 :(得分:0)

当你提到“将大量数据集装入内存”时,我知道你正在尝试立即将所有数据加载到内存并开始训练。因此,我基于这个假设给出答复。

一般的心态是,如果您无法将数据与资源相匹配,请将数据划分为较小的块并以迭代方式进行训练。

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

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

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