我真的很喜欢 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 构建模型(尤其是对于较小的数据集和/或“小型神经网络”可能足够好的简单场景?