XGBoostがモデルを開放せずGPUメモリを専有してしまう

joblibでXGBを複数走らせる、forループでXGBを呼ぶ、hyperoptでパラメータ探索を行う….など、何回もXGBを呼んでしまうとGPUメモリを開放してくれずにエラーになることがあった。

predictが終わった段階で明示的にデストラクタを呼ぶことで、GPUメモリを開放することが出来た。

predict前にモデルを破棄してしまうとpredict出来なくなるので注意。

model = xgb.train(...)
pred = model.predict(...)
model.__del__()

参考

Xgboost GPU models do not release memory after training · Issue #3045 · dmlc/xgboost
Xgboost doesn't release gpu memory after training/predicting the model on large data. Every further rerun of .fit causes more memory allocation until eventu...

コメント

タイトルとURLをコピーしました