【问题标题】:Why does H2O integrate TensorFlow via Spark instead of directly?为什么 H2O 通过 Spark 而不是直接集成 TensorFlow?
【发布时间】:2017-06-08 19:32:55
【问题描述】:

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

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

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

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

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

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

我想在未来的项目和场景中更多地利用 H2O(就像过去一样,请参见例如这里我 applied a H2O model to real time applications using Apache Kafka and its Streams API)。 不过,我不确定为什么我需要 Spark 的“开销”来使用 H2O 和 TensorFlow 构建模型(尤其是对于较小的数据集和/或“小型神经网络”可能很好的简单场景够了吗?

【问题讨论】:

    标签: java apache-spark tensorflow h2o sparkling-water


    【解决方案1】:

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

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

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

    【讨论】:

    • 这澄清了一些事情......我不知道 DeepWater 没有在 Spark 上运行!
    • @KaiWähner 澄清一下 - 上面的教程不使用 DeepWater。 deepwater 也可以通过 SparklingWater 在 Spark 上运行,但前提是只有 1 个工作人员,这是一个非常罕见的 Spark 用例。如果制作分布式版本的 DeepWater 是否有用,我们很乐意听取社区的意见(我们需要实际的用例,而不仅仅是“确定”:-))。
    猜你喜欢
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2016-06-23
    • 2020-04-24
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多