将H2OFrame作为对象,而不是获取对H2O群集中某个位置的引用

时间:2019-04-10 21:17:47

标签: openshift h2o

我们已经使用H2O库创建并训练了模型。在OpenShift容器中配置H2O,并部署经过训练的模型以获取实时推断。当我们只有一个容器时,效果很好。我们必须扩大规模以应对交易量的增加。 H2OFrame的全状态性遇到问题。请查看我的示例代码。

步骤1:将JSON字典转换为Pandas框架。
步骤2:将Pandas框架转换为H2O框架。
步骤3:以H2O框架作为输入来运行模型。

在这里,步骤2将句柄返回到存储在容器中的数据。 “ H2OFrame与pandas的DataFrame或R的data.frame相似。关键的区别之一是数据通常不保存在内存中,而是位于(可能是远程的)H2O群集上,因此H2OFrame仅代表处理这些数据。”因此,步骤3的请求必须转到同一容器。如果不是,它将找不到H2O框架并引发错误。

步骤1:使用Pandas dataFrame

将JSON字典转换为数据框
 ToBeScored = pd.DataFrame([jsonDictionary])

步骤2:将熊猫数据帧转换为H2o帧

 ToBeScored_hex = h2o.H2OFrame(ToBeScored)

第3步:运行模型

 outPredections = rf_model.predict(ToBeScored_hex)

如果在步骤2中可以将H2OFrame作为内存中对象返回,则可以避免全状态。有什么办法吗? 或者,是否可以将H2O群集配置为存储H2OFrame,以便可以从群集中的任何OpenShift容器对其进行访问?

有用的链接
H2O的Predict函数仅接受H2OFrame格式的数据。 预测功能-http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/model_categories.html#h2o.model.model_base.ModelBase.predict
H2O帧数据类型-http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/frame.html

1 个答案:

答案 0 :(得分:1)

一种替代方法是使用H2O MOJO模型(而不是binary model模型,该模型需要存在于H2O群集存储器中才能进行预测)。 MOJO模型可以放在磁盘上,不需要运行中的H2O集群。然后,您可以跳过第2步,并在第3步中使用h2o.mojo_predict_pandas()功能。