我对苏打水有一些问题或疑问,为什么需要它。
假设我有一个生成的 h2o 模型,其中包含二进制和 pojo。
现在,我想将模型部署到生产中,并可以选择同时使用 pojo 和二进制(苏打水)。
- 我应该使用哪一个?用pojo直接火花或用二进制苏打水。
- 当我们可以使用pojo和Spark本身轻松部署模型时,苏打水的确切用途是什么?
- 只有当您必须在大量数据上训练模型时才需要苏打水吗?或者,它也可以在模型的 PROD 部署中使用。
示例:https://github.com/h2oai/h2o-droplets/blob/master/h2o-pojo-on-spark-droplet/src/main/scala/examples/PojoExample.scala
使用火花运行 pojo 模型。
示例:https://github.com/h2oai/h2o-droplets/blob/master/sparkling-water-droplet/src/main/scala/water/droplets/SparklingWaterDroplet.scala
火车/在苏打水中运行模型。
苏打水 h2o 与普通火花相比有哪些优势?
-
我应该使用哪一个?用pojo直接火花或用二进制苏打水。
- 没有"正确"的答案,这取决于您的用例。听起来你想要的是Spark中的POJO/MOJO,所以你可以在没有增加H2O集群的依赖性的情况下进行评分。
-
当我们可以使用pojo和Spark本身轻松部署模型时,苏打水的确切用途是什么?
- 苏打水的确切用途是在Spark上下文中提供H2O。这对于训练特别有用:您可以利用Spark的许多数据连接器,修改功能等。 POJO/MOJO + Spark足以得分
-
只有当您必须在大量数据上训练模型时才需要苏打水吗?或者,它也可以在模型的 PROD 部署中使用。
- 当您想在与Spark生态系统很好地发挥作用的环境中利用H2O的算法时,需要苏打水。
如果将模型置于"生产"中意味着将"始终在线"评分公开为 REST 端点或类似内容:POJO/MOJO 是您想要的方式(H2O 集群的可用性不高)。不过,您需要确保自己正确处理传入的数据。
如果您正在执行批量评分,每晚或其他方式,那么使用带有苏打水的二进制模型可能是有意义的,因为解析传入的数据变得微不足道(asH2OFrame(..)),并且评分很容易,因为 predict()