H2o Packge错误:无法执行增强操作:更新程序在节点/127.0.0.1:54321上处于非活动状态

问题描述 投票:1回答:2

我在python中使用H2o包运行xgboost。我设置使用我的机器的所有32个核心。分类器位于for循环内,以运行不同参数的分类。我正在启动h2o并在循环中关闭它。它在循环中运行2-3轮并返回错误“无法执行增压器操作:某些运行时,更新程序在节点/127.0.0.1:54321上处于非活动状态”。任何人都知道为什么我会收到这样的错误?

谢谢,Elnaz

`for dates in start_end_dates:
     for window_size in window_sizes:
          print dates[0], dates[1], dates[2], window_size
          model_string = str(dates[0])+ '_'+ str(dates[1]) + ':'+ str(dates[2])+ ':'+ str(window_size)
    ## load daily transaction types 
         ## this function runs in parallel on all cpus 
         daily_transactions_type_df = transform_transactions_types.transform(dates[0], dates[1], window_size)
         ##load daily transactions
         ## this function runs in parallel on all cpus 
         daily_transactions_df = transfrom_daily_transactions.transform(dates[0], dates[1], window_size, max_number_of_instrument)

         snapshot_date = dates[1]
         ## user status list
         user_status_list = Classification_helpers.load_user_status_data_from_gbq(snapshot_date)
    user_status_list

         ## Normalize the data
         numeric_columns = daily_transactions_type_df.iloc[:,1:].columns.tolist()  
        other_columns = []
        daily_transactions_type_df_norm = Classification_helpers.normalize_data_without_outliers(daily_transactions_type_df, numeric_columns, other_columns)

        ## Normalize the data
        numeric_columns = daily_transactions_df.iloc[:,1:-6].columns.tolist()  
        other_columns = daily_transactions_df.iloc[:,-5:].columns.tolist()
        daily_transactions_df_norm =   Classification_helpers.normalize_data_without_outliers(daily_transactions_df,numeric_columns,other_columns)

        data_frames = [daily_transactions_type_df_norm,   daily_transactions_df_norm, user_status_list[['USER_ID', 'label']]]

        df = Classification_helpers.create_labelled_data(data_frames)
        numeric_columns = df.iloc[:,1:-6].columns.tolist()  
        other_columns = df.iloc[:,-6:-1].columns.tolist()  

        nthreads = -1
        Classification_helpers.init_h2o(nthreads)

         model, performance, predictions = Classification_helpers.train_XGboost(df, numeric_columns, other_columns, model_string)
    print performance.auc()`
python h2o xgboost
2个回答
0
投票

使用Flow界面观察动作:http://127.0.0.1:54321,并注意内存使用。

有关您应该观看的屏幕,请参阅http://docs.h2o.ai/h2o/latest-stable/h2o-docs/flow.html#viewing-cluster-status。您将看到每个节点上的可用内存量实时更新。


没有任何更多的信息,一个猜测是你的内存不足,因为你在for循环的每次迭代中使用更多的内存。

如果是这样的话,很难在没有看到你在for循环中做什么的情况下给出建议;但如果训练数据相同,请确保在for循环外部加载。在最坏的情况下,您应该在for循环中执行H2O初始化和关闭(并在每次迭代结束时保存模型,以供以后使用)。

哦,还有一种可能性,因为你没有提到它:在你的h2o.init()调用中明确指定给H2O多少内存。您可能会发现,除了默认值之外,您可以获得更多。 (但是不要给H2O所有机器的内存,否则一切都会变得不稳定!)


0
投票

我遇到过同样的问题。但是当你指定(例子)max_runtime_secs = 6000时,就没有错误。那个指标解决了我的问题。

顺便说一下,尝试在h2o.xgboost内更改参数,问题可能就在那里。

© www.soinside.com 2019 - 2024. All rights reserved.