J'essaie de former un modèle d'apprentissage automatique avec H2O (3.14). La taille de ma base de données est de 4 Go et celle de mon ordinateur est de 2 Go avec le swap 2 Go, le JDK 1,8. Reportez-vous à ce article, H2O peut traiter un énorme ensemble de données avec 2 Go de RAM.Comment traiter un grand ensemble de données avec H2O
- Une note sur Bigger données et GC: Nous faisons un swap sur disque en mode utilisateur lorsque le tas Java est trop plein, à savoir, vous utilisez plus que Big Data DRAM physique. Nous ne mourrons pas avec une spirale de la mort du GC, mais nous nous dégraderons à des vitesses hors du cœur. Nous irons aussi vite que le disque le permettra . J'ai personnellement testé le chargement d'un ensemble de données 12Gb dans une JVM 2Gb (32 bits); il a fallu environ 5 minutes pour charger les données et 5 minutes supplémentaires pour exécuter une régression logistique.
Quelques questions autour de cette questions:
- Loading data bigger than the memory size in h2o. La réponse mentionnée swap-to-disk en mode utilisateur a été désactivée car les performances étaient si mauvaises. Cependant, il n'a pas expliqué une méthode alternative et comment peut activer les drapeaux
--cleaner
en h2o?
travail autour de 1:
J'ai configuré le tas java avec des options java -Xmx10g -jar h2o.jar
. Quand je charge le jeu de données. L'information H2O comme suit:
Cependant, JVM consommé toute la mémoire RAM et Swap, puis le système d'exploitation interrompu java h2o programme.
travail autour de 2:
I installé H2O spark. Je peux charger ensemble de données, mais l'étincelle traînais avec les journaux suivants avec une mémoire d'échange complète:
+ 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!
Dans ce cas, je pense que le collecteur gc
attend pour le nettoyage de la mémoire non utilisée dans l'échange.
Comment puis-je traiter un grand ensemble de données avec une mémoire RAM limitée?
Pourquoi l'étiquette 'r'? – shmosel
J'ai retiré la balise 'r'. Mon client est un programme 'r' – khant