【发布时间】:2020-06-22 01:56:46
【问题描述】:
我正在尝试创建一个 ML 应用程序,其中前端获取用户信息和数据,对其进行清理,并将其传递给 h2o AutoML 进行建模,然后恢复并可视化结果。由于后端将是一个独立/永远在线的服务,会被多次调用,我想确保在每个会话中创建的所有对象都被删除,这样 h2o 就不会变得混乱和耗尽资源。问题是正在创建许多对象,我不确定如何识别/跟踪它们,以便我可以在断开每个会话之前删除它们。
请注意,我希望能够同时运行多个分析,这意味着我不能只调用 remove_all(),因为这可能会删除另一个会话仍需要的对象。相反,我似乎需要一个会话对象列表,我可以将其传递给 remove() 方法。有谁知道如何生成这个列表?
这是一个简单的例子:
import h2o
import pandas as pd
df = pd.read_csv("C:\iris.csv")
my_frame = h2o.H2OFrame(df, "my_frame")
aml = H2OAutoML(max_runtime_secs=100)
aml.train(y='class', training_frame=my_frame)
查看 Flow UI 可以看出,这个简单的示例生成了 5 个新帧和 74 个模型。是否有会话 ID 标签或类似的东西可以用来将它们与在另一个会话中创建的任何对象分开识别,以便我可以删除它们?
【问题讨论】:
-
你试过
h2o.remove(aml)吗?这应该删除后端的 automl 实例并级联到所有子模型。但它不会删除训练帧。 -
@Seb,我以为我已经尝试过了,但可能还有旧数据。当我再次尝试时,它成功了!请张贴作为答案,以便我批准。非常感谢...
标签: python garbage-collection h2o automl