Xgboost: Высокое потребление памяти в python xgboost

Созданный на 2 апр. 2020  ·  3Комментарии  ·  Источник: dmlc/xgboost

Я работаю над пакетом python AutoML, и один из моих пользователей сообщил об очень высоком использовании памяти при использовании xgboost .

Я провел исследование, чтобы показать потребление памяти xgboost. Блокнот можно найти здесь . Из кода видно, что модель выделяет более 7 ГБ оперативной памяти. Когда я сохраняю модель на жесткий диск (5 КБ!), а затем загружаю ее обратно, я могу сэкономить огромное количество оперативной памяти.

Для меня это похоже на то, что xgboost хранит копию данных в своей структуре? Я прав?

Есть ли способ уменьшить использование памяти с помощью xgboost? Считаете ли вы, что сохранение модели на жесткий диск, а затем загрузка ее обратно поможет решить эту проблему?

Самый полезный комментарий

@pplonski , мы также реализовали снижение потребления памяти на ЦП в этом PR https://github.com/dmlc/xgboost/pull/5334 , но только для метода «hist». На данный момент он включен только в master, но я надеюсь, что он станет частью будущего релиза.

память, Кб | Авиакомпания | Хиггс1м |
-- | -- | -- |
Перед | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
уменьшено: | 1,75 | 1,65 |

Согласитесь с @тривиальным фисом , в этом районе есть чем заняться.

Все 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 , но только для метода «hist». На данный момент он включен только в master, но я надеюсь, что он станет частью будущего релиза.

память, Кб | Авиакомпания | Хиггс1м |
-- | -- | -- |
Перед | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
уменьшено: | 1,75 | 1,65 |

Согласитесь с @тривиальным фисом , в этом районе есть чем заняться.

Привет, я недавно столкнулся с аналогичной проблемой с большим объемом памяти с xgboost. Я использую «gpu_hist» для обучения.

Я замечаю большие всплески системной памяти при выполнении метода train() , что приводит к сбою ядра jupyter.

  1. Правильно ли сказать, что Xgboost делает копию моих данных в системной оперативной памяти (даже когда я использую «gpu_hist»)?
  2. Я исходил из того, что xgboost загружает все данные обучения в графический процессор. Это тоже неправильно?
Была ли эта страница полезной?
0 / 5 - 0 рейтинги