【问题标题】:Deep learning on massive datasets海量数据集的深度学习
【发布时间】:2018-03-29 10:16:42
【问题描述】:

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

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

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

我是不是走错了路?对无法放入内存的数据进行深度学习的最佳实践是什么?我应该使用在线学习还是批量培训? This post 似乎在说“大多数高性能深度学习实现都是单节点的”

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

【问题讨论】:

  • Amazon MXNet 是否对您想要实现的目标感兴趣?

标签: apache-spark deep-learning


【解决方案1】:

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

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

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

2- 使用小批量。一旦你从 #1 中获得资源信息,你就可以通过简单的计算来估计 mini-batch 的大小。例如,如果训练单个数据消耗 1.5 GB 的 RAM,而您的 GPU 有 8 GB 的 RAM,理论上您可以一次训练大小为 5 的 mini-batch。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 2018-09-17
    • 2020-05-01
    • 2017-11-19
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多