1

我真的很喜欢 H2O,尤其是因为您可以轻松地将构建的模型部署到任何 Java / JVM 应用程序中……这也是我对 TensorFlow 的目标:构建模型,然后在 Java 应用程序中运行它们。

通过在分布式 Spark 节点上运行 TensorFlow,H2O 在使用 TensorFlow 时“在中间”使用 Spark(Sparking Water)。我在H2O 演示视频中学到了这一点(希望是正确的)。

为什么不直接将 TensorFlow(以及其他类似 MXNet)与 H2O 集成,而是通过 Apache Spark?

像 TensorFlow 这样的框架本身就允许分布式训练,那么为什么要在“中间”使用 Spark?这不会增加很多复杂性(并且在许多情况下不需要它)吗?

例如,Google 构建了 Scikit Flow (Scikit-learn + TensorFlow) 以允许轻松使用 TensorFlow 来构建模型。

特别是对于较小的数据集和/或更简单的用例,这似乎是在中间使用 Spark 更容易的选择?如果我理解正确,您也可以在 Java 中使用此模型,然后通过TensorFlow4Java

我想在未来的项目和场景中更多地利用 H2O(就像过去一样,请参阅此处,我使用 Apache Kafka 及其 Streams API 将 H2O 模型应用于实时应用程序)。不过,我不确定为什么我需要 Spark 的“开销”来使用 H2O 和 TensorFlow 构建模型(尤其是对于较小的数据集和/或“小型神经网络”可能足够好的简单场景?

4

1 回答 1

1

那是一个旧教程,它是在分布式 Tensorflow 发布之前制作的。当时这是“集成”/“分发”它的最简单方法(只需在每个工作节点上运行 TF,然后在驱动节点上平均系数)。

从那时起,我们发布了DeepWater 项目,该项目将几个 DL 框架(TF、MXNet、Caffee)与 H2O 集成在一起。这个不需要 Spark,你需要做的(如果你运行的是一台 linux 机器)就是从这里( H2O with GPU-Enabled Machine Learning) 下载 H2O 并运行它。如果您运行的是 MacOS 或 Windows,您必须自己构建 DeepWater 和 H2O,因为我们还没有提供这些。

作为免责声明:deepwater 目前仅在单个节点上运行,因为上述框架都没有用于分发的 Java API(例如,TF 只有 Python API)。我正在开发一个分布式版本,但现在它并不是真正的第一优先事项。

于 2017-06-08T11:32:55.813 回答