如何在 H2O AutoML 之后删除所有会话对象?

How to Remove All Session Objects after H2O AutoML?

我正在尝试创建一个 ML 应用程序,其中前端获取用户信息和数据,对其进行清理,并将其传递给 h2o AutoML 进行建模,然后恢复并可视化结果。由于后端将是一个独立的/永远在线的服务,会被多次调用,我想确保在每个会话中创建的所有对象都被删除,这样 h2o 就不会变得混乱和 运行 出来的资源。问题是正在创建许多对象,我不确定如何 identify/track 它们,以便我可以在断开每个会话之前删除它们。

请注意,我希望能够同时 运行 多个分析,这意味着我不能只调用 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)

查看流程 UI 表明这个简单示例生成了 5 个新帧和 74 个模型。是否有会话 ID 标签或类似的东西可以用来将它们与在另一个会话中创建的任何对象分开来识别,以便我可以删除它们?

您可以使用h2o.ls()列出H2O对象。然后你可以使用 h2o.remove('YOUR_key') 删除你不想保留的。

例如:

#Create frame of objects
h_objects = h2o.ls()
#Filter for keys of one AutoML session
filtered_objects = h_objects[h_objects['key'].str.contains('AutoML_YYYYMMDD_xxxxxx')]
for key in filtered_objects['key']:
    h2o.remove(key)

或者,您可以改用下面的过滤器删除所有 AutoML 对象。

filtered_objects = h_objects[h_objects['key'].str.lower().str.contains('automl')]

仅清洁您的作品的推荐方法是使用 h2o.remove(aml)。 这将删除后端的 automl 实例并级联到所有子模型和附加对象,如指标。 它不会删除您提供的帧(例如 training_frame)。