【问题标题】:How to Remove All Session Objects after H2O AutoML?如何在 H2O AutoML 之后删除所有会话对象?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以使用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')]
    

    【讨论】:

    • 谢谢,尼玛。如前所述,我不想删除所有 AutoML 对象,因为可能仍然需要与不同会话相关的对象。如果我可以确定——或者甚至更好,如果我可以提前指定——你提到的“密钥”(“AutoML_YYYYMMDD_xxxxx”),那么我同意我可以使用这种方法。现在我只能想尝试解析排行榜中模型的名称来得到这个,然后按照你的方法。你知道更好的方法吗?我希望 h2o 有一个 remove_session_objects() 方法或其他东西,它会容易得多。
    • 对于那些搜索,这个问题的答案是 aml.project_name 属性。您仍然必须单独删除框架(这很容易做到,因为您还是明确创建了这些),但是您可以使用以下命令定位其余对象: h2o.remove([k for k in h2o.ls( )['key'] if aml.project_name in k])
    • 不错的发现!是的,aml.project_name 会给你钥匙
    猜你喜欢
    • 2019-02-17
    • 2013-01-22
    • 2017-03-25
    • 1970-01-01
    • 2018-12-27
    • 2012-09-10
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多