Xgboost: python xgboost中的高内存消耗

创建于 2020-04-02  ·  3评论  ·  资料来源: dmlc/xgboost

我正在研究python AutoML 包,我的一位用户报告说在使用 xgboost 时内存使用率非常高

我进行了一项调查以显示 xgboost 的内存消耗。 你可以在这里找到笔记本。 从代码中,您可以看到模型分配了超过 7GB 的 RAM 内存。 当我将模型保存到硬盘(5 kB!)然后将其加载回来时,我可以节省大量的 RAM。

对我来说,看起来 xgboost 将数据副本存储在其结构中? 我对吗?

有没有办法通过 xgboost 减少内存使用量? 您认为将模型保存到硬盘然后将其加载回是处理此问题的方法吗?

最有用的评论

@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 ,该地区有很多事情要做。

所有3条评论

@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 内核崩溃。

  1. 说 Xgboost 在系统 RAM 中复制我的数据是否正确(即使我使用的是“gpu_hist”)?
  2. 我假设 xgboost 将整个训练数据加载到 GPU。 这也是不正确的吗?
此页面是否有帮助?
0 / 5 - 0 等级