Xgboost: Alto consumo de memória em python xgboost

Criado em 2 abr. 2020  ·  3Comentários  ·  Fonte: dmlc/xgboost

Estou trabalhando no pacote python AutoML e um dos meus usuários relatou um uso muito alto de memória ao usar xgboost .

Fiz uma investigação para mostrar o consumo de memória pelo xgboost. Você pode encontrar o caderno aqui . A partir do código, você pode ver que o modelo aloca mais de 7 GB de memória RAM. Quando salvo o modelo no disco rígido (5 kB!) e depois o carrego de volta, posso economizar uma enorme quantidade de RAM.

Para mim, parece que o xgboost está armazenando a cópia dos dados em sua estrutura? Estou certo?

Existe alguma maneira de diminuir o uso de memória pelo xgboost? Você acha que salvar o modelo no disco rígido e depois carregá-lo de volta é uma maneira de lidar com esse problema?

Comentários muito úteis

@pplonski , implementamos a redução do consumo de memória na CPU também neste PR https://github.com/dmlc/xgboost/pull/5334 , mas apenas para o método 'hist'. Ele está incluído no master apenas por enquanto, mas espero que faça parte da versão futura.

memória, Kb | Companhia aérea | Higgs1m |
-- | -- | -- |
Antes | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reduzido: | 1,75 | 1,65 |

Concordo com @trivialfis , há muitas coisas para fazer na área.

Todos 3 comentários

@pplonski Estamos tentando eliminar a cópia do algoritmo de histograma. É um trabalho em andamento. Para GPU, é feito principalmente: https://github.com/dmlc/xgboost/pull/5420 https://github.com/dmlc/xgboost/pull/5465

A CPU ainda tem mais trabalho a fazer.

@pplonski , implementamos a redução do consumo de memória na CPU também neste PR https://github.com/dmlc/xgboost/pull/5334 , mas apenas para o método 'hist'. Ele está incluído no master apenas por enquanto, mas espero que faça parte da versão futura.

memória, Kb | Companhia aérea | Higgs1m |
-- | -- | -- |
Antes | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reduzido: | 1,75 | 1,65 |

Concordo com @trivialfis , há muitas coisas para fazer na área.

Oi, recentemente enfrentei um problema semelhante de alta memória com xgboost. Estou usando 'gpu_hist' para treinamento.

Percebo grandes picos de memória do sistema quando o método train() é executado, o que leva ao travamento do meu kernel jupyter.

  1. É correto dizer que o Xgboost está fazendo uma cópia dos meus dados na RAM do sistema (mesmo quando estou usando 'gpu_hist')?
  2. Eu estava supondo que o xgboost carrega todos os dados de treinamento para a GPU. Isso também está incorreto?
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

colinsongf picture colinsongf  ·  4Comentários

uasthana15 picture uasthana15  ·  4Comentários

yananchen1989 picture yananchen1989  ·  3Comentários

choushishi picture choushishi  ·  3Comentários

hx364 picture hx364  ·  3Comentários