2017-04-24 3 views
0

Wir haben ein Extra Tree-Modell für eine Regressionsaufgabe trainiert. Unser Modell besteht aus 3 zusätzlichen Bäumen mit je 200 Bäumen der Tiefe 30. Zusätzlich zu den 3 zusätzlichen Bäumen verwenden wir eine Grat-Regression. Wir trainieren unser Modell mehrere Stunden lang und pikieren das trainierte Modell (das gesamte Klassenobjekt) für den späteren Gebrauch. Allerdings ist die Größe des gespeicherten trainierten Modells zu groß, etwa 140 GB! Gibt es eine Möglichkeit, die Größe des gespeicherten Modells zu reduzieren? Gibt es irgendeine Konfiguration in Gurke, die hilfreich sein könnte, oder irgendeine Alternative für Gurke?Trained Machine Learning-Modell ist zu groß

+1

Die scikit Modell Persistenz [Seite] (http://scikit-learn.org/stable/modules/model_persistence.html#) schlägt vor, dass die Verwendung von "joblib" in einigen Fällen effizienter sein kann. – Tchotchke

Antwort

3

Im besten Fall (binäre Bäume) haben Sie 3 * 200 * (2^30 - 1) = 644245094400 Knoten oder 434Gb unter der Annahme, jeder Knoten würde nur 1 Byte zum Speichern kosten. Ich denke, dass 140GB im Vergleich eine ziemlich anständige Größe ist.

Edit: Schlechte Mathematik.

1

Sie können versuchen, joblib mit Komprimierungsparameter zu verwenden.

komprimieren - von 0 bis 9. Höherer Wert bedeutet mehr Komprimierung, aber auch langsamere Lese- und Schreibzeiten. Ein Wert von 3 ist oft ein guter Kompromiss.

Sie können die Python-Standardkomprimierungsmodule zlib, gzip, bz2, lzma und xz verwenden. So verwenden Sie, dass Sie nur das Format mit spezifischen Erweiterung angeben können

Beispiel

joblib.dump(obj, 'your_filename.pkl.z') # zlib 

Weitere Informationen finden Sie unter [link] :(http://gael-varoquaux.info/programming/new_low-overhead_persistence_in_joblib_for_big_data.html)