Xgboost: Hoher Speicherverbrauch in Python xgboost

Erstellt am 2. Apr. 2020  ·  3Kommentare  ·  Quelle: dmlc/xgboost

Ich arbeite am Python-AutoML-Paket und einer meiner Benutzer berichtete über eine sehr hohe Speicherauslastung bei der Verwendung von xgboost .

Ich habe eine Untersuchung durchgeführt, um den Speicherverbrauch von xgboost zu zeigen. Das Notizbuch finden Sie hier . Aus dem Code können Sie ersehen, dass das Modell über 7 GB RAM-Speicher zuweist. Wenn ich das Modell auf Festplatte (5 kB !) speichere und es dann wieder lade, kann ich eine Menge RAM sparen.

Für mich sieht es so aus, als würde xgboost die Kopie der Daten in seiner Struktur speichern? Habe ich recht?

Gibt es eine Möglichkeit, die Speichernutzung durch xgboost zu reduzieren? Denken Sie, dass das Speichern des Modells auf der Festplatte und das anschließende Laden dieses Problems eine Möglichkeit ist, dieses Problem zu lösen?

Hilfreichster Kommentar

@pplonski , wir haben die Reduzierung des Speicherverbrauchs auf der CPU auch in diesem PR https://github.com/dmlc/xgboost/pull/5334 implementiert, aber nur für die 'hist'-Methode. Es ist vorerst nur im Master enthalten, aber ich hoffe, es wird Teil der zukünftigen Version sein.

Speicher, KB | Fluggesellschaft | Higgs1m |
-- | -- | -- |
Vorher | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reduziert: | 1,75 | 1,65 |

Stimme @trivialfis zu, es gibt viele Dinge zu tun in der Gegend.

Alle 3 Kommentare

@pplonski Wir versuchen, die Kopie für den Histogrammalgorithmus zu eliminieren. Es ist in Arbeit. Für GPU ist es meistens getan: https://github.com/dmlc/xgboost/pull/5420 https://github.com/dmlc/xgboost/pull/5465

Die CPU hat noch einiges zu tun.

@pplonski , wir haben die Reduzierung des Speicherverbrauchs auf der CPU auch in diesem PR https://github.com/dmlc/xgboost/pull/5334 implementiert, aber nur für die 'hist'-Methode. Es ist vorerst nur im Master enthalten, aber ich hoffe, es wird Teil der zukünftigen Version sein.

Speicher, KB | Fluggesellschaft | Higgs1m |
-- | -- | -- |
Vorher | 28311860 | 1907812 |
https://github.com/dmlc/xgboost/pull/5334 | 16218404 | 1155156 |
reduziert: | 1,75 | 1,65 |

Stimme @trivialfis zu, es gibt viele Dinge zu tun in der Gegend.

Hallo, ich hatte kürzlich ein ähnlich hohes Speicherproblem mit xgboost. Ich verwende 'gpu_hist' für das Training.

Ich bemerke große Systemspeicherspitzen, wenn die Methode train() ausgeführt wird, was dazu führt, dass mein Jupyter-Kernel abstürzt.

  1. Ist es richtig zu sagen, dass Xgboost eine Kopie meiner Daten im System-RAM erstellt (selbst wenn ich „gpu_hist“ verwende)?
  2. Ich war davon ausgegangen, dass xgboost die gesamten Trainingsdaten auf die GPU lädt. Ist das auch falsch?
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen