Ich versuche, ein maschinelles Lernen Modell mit H2O zu trainieren (3.14). Meine Datenmenge ist 4 GB und mein Computer-RAM ist 2 GB mit 2G Swap, JDK 1.8. Siehe hierzu article, H2O kann einen riesigen Datensatz mit 2 GB RAM verarbeiten.Wie mit einem großen Datensatz mit H2O beschäftigen
- Ein Hinweis auf Bigger Daten und GC: Wir haben einen User-Mode-Swap-to-Disk, wenn der Java-Heap zu voll wird, das heißt, Sie verwenden mehr als Big Data physikalischen DRAM. Wir werden nicht mit einer GC-Tod-Spirale sterben, aber wir werden degradieren zu Out-of-Core-Geschwindigkeiten. Wir werden so schnell gehen wie die Platte erlauben wird. Ich habe persönlich das Laden eines 12Gb-Datensatzes in eine 2Gb (32bit) JVM getestet; es dauerte etwa 5 Minuten, um die Daten zu laden, und weitere 5 Minuten eine logistische Regression auszuführen.
Einige Fragen rund um diese Themen:
- Loading data bigger than the memory size in h2o. Die Antwort User-Mode Swap-to-Disk wurde deaktiviert, da die Leistung so schlecht war. Er hat jedoch keine alternative Methode erklärt und wie können die Flags
--cleaner
in h2o aktiviert werden?
Umgehen 1:
konfigurierte ich den Java-Heap mit Optionen java -Xmx10g -jar h2o.jar
. Wenn ich einen Datensatz lade Die H2O Informationen wie folgt:
jedoch JVM alle RAM-Speicher und Swap verbraucht, dann Betriebssystem gestoppt Programm java h2o.
Umgehen 2:
ich installiert H2O spark. Ich kann Dataset laden, aber Funke wurde mit einem vollen Swap-Speicher mit den folgenden Protokollen hängen:
+ FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=841.3 MB OOM!
09-01 02:01:12.377 192.168.233.133:54321 6965 Thread-47 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.2 MB + FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=841.3 MB OOM!
09-01 02:01:12.377 192.168.233.133:54321 6965 Thread-48 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.2 MB + FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=841.3 MB OOM!
09-01 02:01:12.381 192.168.233.133:54321 6965 Thread-45 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.3 MB + FREE:426.7 MB == MEM_MAX:2.67 GB), desiredKV=803.2 MB OOM!
09-01 02:01:12.382 192.168.233.133:54321 6965 Thread-46 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.4 MB + FREE:426.5 MB == MEM_MAX:2.67 GB), desiredKV=840.9 MB OOM!
09-01 02:01:12.384 192.168.233.133:54321 6965 #e Thread WARN: Swapping! GC CALLBACK, (K/V:1.75 GB + POJO:513.4 MB + FREE:426.5 MB == MEM_MAX:2.67 GB), desiredKV=802.7 MB OOM!
09-01 02:01:12.867 192.168.233.133:54321 6965 FJ-3-1 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.4 MB + FREE:426.5 MB == MEM_MAX:2.67 GB), desiredKV=1.03 GB OOM!
09-01 02:01:13.376 192.168.233.133:54321 6965 Thread-46 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.2 MB + FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=803.2 MB OOM!
09-01 02:01:13.934 192.168.233.133:54321 6965 Thread-45 WARN: Swapping! OOM, (K/V:1.75 GB + POJO:513.2 MB + FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=841.3 MB OOM!
09-01 02:01:12.867 192.168.233.133:54321 6965 #e Thread WARN: Swapping! GC CALLBACK, (K/V:1.75 GB + POJO:513.2 MB + FREE:426.8 MB == MEM_MAX:2.67 GB), desiredKV=803.2 MB OOM!
In diesem Fall denke ich, die gc
Sammler für die Reinigung etwas ungenutzten Speicher in Swap warten.
Wie kann ich verarbeiten große Datenmenge mit einem begrenzten RAM-Speicher?
Warum das 'r'-Tag? – shmosel
Ich habe 'r' Tag entfernt. Mein Client ist ein 'r' Programm – khant