Xgboost: Consommation de mémoire élevée en python xgboost

Créé le 2 avr. 2020  ·  3Commentaires  ·  Source: dmlc/xgboost

Je travaille sur le package python AutoML et l'un de mes utilisateurs a signalé une utilisation très élevée de la mémoire lors de l'utilisation de xgboost .

J'ai fait une enquête pour montrer la consommation de mémoire par xgboost. Vous pouvez trouver le cahier ici . À partir du code, vous pouvez voir que le modèle alloue plus de 7 Go de mémoire RAM. Lorsque j'enregistre le modèle sur le disque dur (5 Ko !) puis que je le recharge, je peux économiser une énorme quantité de RAM.

Pour moi, on dirait que xgboost stocke la copie des données dans sa structure ? Ai-je raison?

Existe-t-il un moyen de réduire l'utilisation de la mémoire par xgboost ? Pensez-vous que l'enregistrement du modèle sur le disque dur, puis son chargement, est un moyen de gérer ce problème ?

Commentaire le plus utile

@pplonski , nous avons également implémenté la réduction de la consommation de mémoire sur le processeur dans ce PR https://github.com/dmlc/xgboost/pull/5334 , mais uniquement pour la méthode 'hist'. Il n'est inclus dans master que pour le moment, mais j'espère qu'il fera partie de la future version.

mémoire, Ko | Compagnie aérienne | Higgs1m |
-- | -- | -- |
Avant | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
réduit : | 1,75 | 1.65 |

D'accord avec @trivialfis , il y a beaucoup de choses à faire dans le coin.

Tous les 3 commentaires

@pplonski Nous essayons d'éliminer la copie pour l'algorithme d'histogramme. C'est un travail en cours. Pour le GPU, cela se fait principalement : https://github.com/dmlc/xgboost/pull/5420 https://github.com/dmlc/xgboost/pull/5465

Le processeur a encore du travail à faire.

@pplonski , nous avons également implémenté la réduction de la consommation de mémoire sur le processeur dans ce PR https://github.com/dmlc/xgboost/pull/5334 , mais uniquement pour la méthode 'hist'. Il n'est inclus dans master que pour le moment, mais j'espère qu'il fera partie de la future version.

mémoire, Ko | Compagnie aérienne | Higgs1m |
-- | -- | -- |
Avant | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
réduit : | 1,75 | 1.65 |

D'accord avec @trivialfis , il y a beaucoup de choses à faire dans le coin.

Bonjour, j'ai récemment rencontré un problème de mémoire élevée similaire avec xgboost. J'utilise 'gpu_hist' pour la formation.

Je remarque d'importants pics de mémoire système lorsque la méthode train() est exécutée, ce qui entraîne le plantage de mon noyau jupyter.

  1. Est-il correct de dire que Xgboost fait une copie de mes données dans la RAM système (même lorsque j'utilise 'gpu_hist') ?
  2. J'étais dans l'hypothèse que xgboost charge l'intégralité des données d'entraînement sur le GPU. Est-ce également incorrect?
Cette page vous a été utile?
0 / 5 - 0 notes