【问题标题】:h2o automl max_runtime_secs not stopping executionh2o automl max_runtime_secs 没有停止执行
【发布时间】:2019-02-24 04:00:42
【问题描述】:

它可能关注的对象,

以下代码在基于 jupyter 的数据科学笔记本的 Docker 容器中运行; 但是,我已经安装了 Java 8 和 h2o(版本 3.20.0.7),并公开了必要的端口。 docker 容器正在使用 Ubuntu 16.04 的系统上运行,具有 32 个线程和超过 300G 的 RAM。
h2o 正在使用所有线程和 26.67 Gb 内存。我尝试使用下面的代码将文本分类为 0 或 1。
然而,尽管将 max_runtime_secs 设置为 900 或 15 分钟,但代码尚未完成执行,大约 15 小时后仍占用大部分机器资源。附带说明一下,解析 df_train 大约需要 20 分钟。有什么想法吗?

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
    from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score

    df = pd.read_csv('Data.csv')[['Text', 'Classification']]

    vectorizer = CountVectorizer(analyzer='word',token_pattern=r'\w{1,}',
                                 ngram_range=(1, 3), stop_words = 'english')

    x_train_vec = vectorizer.fit_transform(df['Text'])
    y_train = df['Classification']

    import h2o
    from h2o.automl import H2OAutoML
    h2o.init()

    df_train = h2o.H2OFrame(x_train_vec.A, header=-1, column_names=vectorizer.get_feature_names())
    df_labels = h2o.H2OFrame(y_train.reset_index()[['Classification']])
    df_train = df_train.concat(df_labels)

    x_train_cn = df_train.columns
    y_train_cn = 'Classification'
    x_train_cn.remove(y_train_cn)

    df_train[y_train_cn] = df_train[y_train_cn].asfactor()

    h2o_aml = H2OAutoML(max_runtime_secs = 900, exclude_algos = ["DeepLearning"])

    h2o_aml.train(x = x_train_cn , y = y_train_cn, training_frame = df_train)

    lb = h2o_aml.leaderboard

    y_predict = h2o_aml.leader.predict(df_train.drop('Classification'))

    print('accuracy: {}'.format(accuracy_score(y_pred=y_predict, y_true=y_train)))
    print('precision: {}'.format(precision_score(y_pred=y_predict, y_true=y_train)))
    print('recall: {}'.format(recall_score(y_pred=y_predict, y_true=y_train)))
    print('f1: {}\n'.format(f1_score(y_pred=y_predict, y_true=y_train)))

【问题讨论】:

  • 嗨@cjmobley你能发布你正在使用的h2o版本吗?
  • 嗨@Lauren,我在上面的帖子中添加了它,但我使用的是3.20.0.7版本。
  • 感谢您提供详细信息,这是一个错误,应该在下一个主要版本 3.22 中修复。

标签: h2o text-classification automl


【解决方案1】:

这是一个 bug,在 master 上已经是 fixed。如果需要,您可以立即在 nightly 版本上尝试修复,否则,它将在 H2O 的下一个稳定版本 3.22 中修复。

【讨论】:

  • 嗨@Erin LeDell,我正在使用3.21.0.4438 版的h2o,但我仍然遇到同样的问题。我设置h2o_aml = H2OAutoML(max_runtime_secs = 300),然后执行h2o_aml.train(x = x_train_cn , y = y_train_cn, training_frame = df_train)。但是,半小时后,代码仍在运行。所以,我不确定这个错误是否真的被修复了。我看到了github.com/h2oai/h2o-3/commit/…,但我认为训练最终模型不会超过 25 分钟。
  • 我正在研究一个文本分类问题。我有大约 10,000 个示例。我最初使用 CountVectorizer 是因为在与其他 automl 库进行测试时,它的性能略好于 TfidfVectorizer。但是,CountVectorizer 产生 ~10,000x150,000 ndarray,而 TfidfVectorizer 产生 ~10,000x15,000。切换到 TfidfVectorizer H2O 后完成 automl 过程;但是,当训练 5 分钟时,它会导致一个空的排行榜,15 分钟会导致一个模型在 lb 上。我使用的是 h2o 版本 3.21.0.4446、80 个线程和 500 gb 的 RAM。
  • 我正在尝试3.22.0.1的python版本,似乎仍然存在不遵守max_runtime_secs的问题,有人更新python版本吗?
  • max_runtime_secs 目前不包括运行结束时的 Stacked Ensemble 建筑物,因此它有可能会过去(我们将来可能会更改此设置)。如果您发现有更大的问题,请在此处提交可重现的错误报告并包含您的日志:0xdata.atlassian.net/projects/PUBDEV
猜你喜欢
  • 1970-01-01
  • 2020-12-17
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 2015-07-15
  • 1970-01-01
相关资源
最近更新 更多