使用GPU训练XGBoost回归器时,内核会死亡

时间:2019-05-28 03:17:15

标签: python machine-learning xgboost

我正在尝试构建一个简单的XGBRegressor模型。它可以正常运行几秒钟,然后内核死亡,而没有任何错误消息。使用debug标志运行时,终端中也没有错误消息。

我已经尝试了以下操作:

  1. 问题发生在Jupyter笔记本中,以及当相同的代码作为简单的'.py'脚本运行时
  2. 这似乎不是我的环境所特有的,因为即使在Kaggle的GPU内核上,我也能够始终如一地解决问题
  3. 如果我使用'tree_type'标志关闭GPU,则相同的代码可以正常运行
  4. 我在Windows的事件查看器中查看了一些错误代码,发现并没有太多的见解:
  

故障存储桶1757117266428035048,类型5事件名称:BEX64响应:   没有可用的出租车ID:0

     

问题签名:P1:python.exe P2:3.7.3150.1013 P3:5c9bf5b3 P4:   ucrtbase.dll P5:10.0.17763.404 P6:490b0aeb P7:000000000006e91e P8:   c0000409 P9:0000000000000007 P10:

import os os.environ['KMP_DUPLICATE_LIB_OK']='True' from xgboost import XGBRegressor

best_params = {'learning_rate': 0.16, 'n_estimators': 100, 
               'max_depth': 6, 'min_child_weight': 7,
               'subsample': 0.9, 'colsample_bytree': 0.7, 'nthread': -1, 
               'scale_pos_weight': 1, 'random_state': 42, 

               #next parameters are used to enable gpu for fasting fitting
               'tree_method': 'gpu_hist', 'max_bin': 16, 
               'gpu_id': 0
              }

xgb_model = XGBRegressor(
        **best_params)

xgb_model.fit(
        cur_train_x, 
        cur_train_y, 
        eval_metric="rmse", 
        eval_set=[(cur_train_x, cur_train_y)], 
        verbose=True, 
        early_stopping_rounds = 10)

我的GPU是只有2GB专用内存的950 GTX。 Windows任务管理器显示了另一个8GB共享GPU内存。是否因为数据集无法完全放入专用GPU内存而崩溃?

对于我如何获得有用的错误消息或解决方案的任何见解或指导,将不胜感激。

0 个答案:

没有答案