我正在研究python AutoML 包,我的一位用户报告说在使用 xgboost 时内存使用率非常高。
我进行了一项调查以显示 xgboost 的内存消耗。 你可以在这里找到笔记本。 从代码中,您可以看到模型分配了超过 7GB 的 RAM 内存。 当我将模型保存到硬盘(5 kB!)然后将其加载回来时,我可以节省大量的 RAM。
对我来说,看起来 xgboost 将数据副本存储在其结构中? 我对吗?
有没有办法通过 xgboost 减少内存使用量? 您认为将模型保存到硬盘然后将其加载回是处理此问题的方法吗?
@pplonski我们正在尝试消除直方图算法的副本。 这是一个正在进行的工作。 对于 GPU,它主要完成: https ://github.com/dmlc/xgboost/pull/5420 https://github.com/dmlc/xgboost/pull/5465
CPU 还有一些工作要做。
@pplonski ,我们也在此 PR https://github.com/dmlc/xgboost/pull/5334中实现了减少 CPU 上的内存消耗,但仅适用于“hist”方法。 它目前仅包含在 master 中,但我希望它将成为未来版本的一部分。
内存,Kb | 航空公司 | 希格斯1m |
-- | -- | -- |
之前 | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
减少:| 1.75 | 1.65 |
同意@trivialfis ,该地区有很多事情要做。
嗨,我最近遇到了与 xgboost 类似的高内存问题。 我正在使用“gpu_hist”进行培训。
当执行train()
方法时,我注意到大量系统内存峰值,这导致我的 jupyter 内核崩溃。
最有用的评论
@pplonski ,我们也在此 PR https://github.com/dmlc/xgboost/pull/5334中实现了减少 CPU 上的内存消耗,但仅适用于“hist”方法。 它目前仅包含在 master 中,但我希望它将成为未来版本的一部分。
内存,Kb | 航空公司 | 希格斯1m |
-- | -- | -- |
之前 | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
减少:| 1.75 | 1.65 |
同意@trivialfis ,该地区有很多事情要做。