Search code examples
xgboosth2oapple-m1

Error using H2O (from Python 3.9.10) and XGBoost backend on MacOS (Monterey, Apple M1)


I am currently trying to use H2O from Python, and I encounter some problems on my Mac OS with XGBoost. It seems like H2O does not find it anywhere.

More precisely, the next simple snippet

import pandas as pd
import h2o

data = [['2015-01-01', '2490.925806' , '-0.41'],
        ['2015-01-02', '2412.623113' , '-0.48'],
        ['2015-01-03', '2365.611276' , '-0.55']]
df = pd.DataFrame(data, columns=["time", "base", "target"]).set_index("time", drop=True)

h2o.init(nthreads=-1)
estimator = h2o.estimators.H2OXGBoostEstimator()
training_frame = h2o.H2OFrame(df) 
estimator.train(["base"], "target", training_frame)

gives me the error :

H2OResponseError: Server error water.exceptions.H2ONotFoundArgumentException:
  Error: POST /3/ModelBuilders/xgboost not found
  Request: POST /3/ModelBuilders/xgboost
    data: {'training_frame': 'Key_Frame__upload_893634781f588299bbd20d51c98d43a9.hex', 'nfolds': '0', 'keep_cross_validation_models': 'True', 'keep_cross_validation_predictions': 'False', 'keep_cross_validation_fold_assignment': 'False', 'score_each_iteration': 'False', 'fold_assignment': 'auto', 'response_column': 'target', 'ignore_const_cols': 'True', 'stopping_rounds': '0', 'stopping_metric': 'auto', 'stopping_tolerance': '0.001', 'max_runtime_secs': '0.0', 'seed': '-1', 'distribution': 'auto', 'tweedie_power': '1.5', 'categorical_encoding': 'auto', 'quiet_mode': 'True', 'ntrees': '50', 'max_depth': '6', 'min_rows': '1.0', 'min_child_weight': '1.0', 'learn_rate': '0.3', 'eta': '0.3', 'sample_rate': '1.0', 'subsample': '1.0', 'col_sample_rate': '1.0', 'colsample_bylevel': '1.0', 'col_sample_rate_per_tree': '1.0', 'colsample_bytree': '1.0', 'colsample_bynode': '1.0', 'max_abs_leafnode_pred': '0.0', 'max_delta_step': '0.0', 'score_tree_interval': '0', 'min_split_improvement': '0.0', 'gamma': '0.0', 'nthread': '-1', 'build_tree_one_node': 'False', 'calibrate_model': 'False', 'max_bins': '256', 'max_leaves': '0', 'sample_type': 'uniform', 'normalize_type': 'tree', 'rate_drop': '0.0', 'one_drop': 'False', 'skip_drop': '0.0', 'tree_method': 'auto', 'grow_policy': 'depthwise', 'booster': 'gbtree', 'reg_lambda': '1.0', 'reg_alpha': '0.0', 'dmatrix_type': 'auto', 'backend': 'auto', 'gainslift_bins': '-1', 'auc_type': 'auto', 'scale_pos_weight': '1.0'}

For more information about my distribution:

  • OS: Monterey 12.3
  • Processor: Apple M1
  • Python: 3.9.10
  • H2O: 3.36.0.3

I suspect Apple M1 to be the cause of the error, but is that really the case ?


Solution

  • I am sorry, the XGBoost is not supported on Apple M1 processor yet.

    https://h2oai.atlassian.net/browse/PUBDEV-8482