Xgboost: Alto consumo de memoria en python xgboost

Creado en 2 abr. 2020  ·  3Comentarios  ·  Fuente: dmlc/xgboost

Estoy trabajando en el paquete python AutoML y uno de mis usuarios informó un uso de memoria muy alto mientras usaba xgboost .

Hice una investigación para mostrar el consumo de memoria por parte de xgboost. Puedes encontrar el cuaderno aquí . A partir del código, puede ver que el modelo asigna más de 7 GB de memoria RAM. Cuando guardo el modelo en el disco duro (¡5 kB!) y luego lo vuelvo a cargar, puedo ahorrar una gran cantidad de RAM.

Para mí, ¿parece que xgboost está almacenando la copia de los datos en su estructura? ¿Tengo razón?

¿Hay alguna forma de reducir el uso de memoria por xgboost? ¿Crees que guardar el modelo en el disco duro y luego volver a cargarlo es una forma de manejar este problema?

Comentario más útil

@pplonski , implementamos la reducción del consumo de memoria en la CPU también en este PR https://github.com/dmlc/xgboost/pull/5334 , pero solo para el método 'hist'. Está incluido en el maestro solo por ahora, pero espero que sea parte del lanzamiento futuro.

memoria, Kb | Aerolínea | Higgs1m |
-- | -- | -- |
Antes | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reducido: | 1.75 | 1.65 |

De acuerdo con @trivialfis , hay muchas cosas que hacer en la zona.

Todos 3 comentarios

@pplonski Estamos tratando de eliminar la copia del algoritmo de histograma. Es un trabajo en progreso. Para GPU, se realiza principalmente: https://github.com/dmlc/xgboost/pull/5420 https://github.com/dmlc/xgboost/pull/5465

La CPU todavía tiene más trabajo por hacer.

@pplonski , implementamos la reducción del consumo de memoria en la CPU también en este PR https://github.com/dmlc/xgboost/pull/5334 , pero solo para el método 'hist'. Está incluido en el maestro solo por ahora, pero espero que sea parte del lanzamiento futuro.

memoria, Kb | Aerolínea | Higgs1m |
-- | -- | -- |
Antes | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reducido: | 1.75 | 1.65 |

De acuerdo con @trivialfis , hay muchas cosas que hacer en la zona.

Hola, recientemente me enfrenté a un problema similar de memoria alta con xgboost. Estoy usando 'gpu_hist' para entrenar.

Observo grandes picos en la memoria del sistema cuando se ejecuta el método train() , lo que hace que mi kernel jupyter se bloquee.

  1. ¿Es correcto decir que Xgboost está haciendo una copia de mis datos en la RAM del sistema (incluso cuando estoy usando 'gpu_hist')?
  2. Supuse que xgboost carga todos los datos de entrenamiento en la GPU. ¿Es eso también incorrecto?
¿Fue útil esta página
0 / 5 - 0 calificaciones