Ich versuche, Optimierungsgitter für 2 Algorithmen (random forest
und gbm
) für verschiedene Teile eines Datensatzes zu verwenden, mit h2o
. Mein Code sieht aus wieR h2o Verbindung (Speicher) Problem
for (...)
{
read data
# setup h2o cluster
h2o <- h2o.init(ip = "localhost", port = 54321, nthreads = detectCores()-1)
gbm.grid <- h2o.grid("gbm", grid_id = "gbm.grid", x = names(td.train.h2o)[!names(td.train.h2o)%like%segment_binary], y = segment_binary,
seed = 42, distribution = "bernoulli",
training_frame = td.train.h2o, validation_frame = td.train.hyper.h2o,
hyper_params = hyper_params, search_criteria = search_criteria)
# shutdown h2o
h2o.shutdown(prompt = FALSE)
# setup h2o cluster
h2o <- h2o.init(ip = "localhost", port = 54321, nthreads = detectCores()-1)
rf.grid <- h2o.grid("randomForest", grid_id = "rf.grid", x = names(td.train.h2o)[!names(td.train.h2o)%like%segment_binary], y = segment_binary,
seed = 42, distribution = "bernoulli",
training_frame = td.train.h2o, validation_frame = td.train.hyper.h2o,
hyper_params = hyper_params, search_criteria = search_criteria)
h2o.shutdown(prompt = FALSE)
}
Das Problem, das ist, wenn ich den for loop
in einem Rutsch ausführen, erhalte ich die Fehler
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = urlSuffix, :
Unexpected CURL error: Failed to connect to localhost port 54321: Connection refused
PS: Ich bin mit der Linie
# shutdown h2o
h2o.shutdown(prompt = FALSE)
# setup h2o cluster
h2o <- h2o.init(ip = "localhost", port = 54321, nthreads = detectCores()-1)
So dass ich den h2o
"reset", so dass ich nicht den ganzen Speicher
ich lese auch R H2O - Memory management aber mir ist nicht klar, wie es funktioniert.
UPDATE
Nach Matteusz Kommentar folgenden, i init
außerhalb der for loop
und innerhalb der for loop
verwenden i h2o.removeAll()
. So, jetzt sieht mein Code wie diese
h2o <- h2o.init(ip = "localhost", port = 54321, nthreads = detectCores()-1)
for(...)
{
read data
gbm.grid <- h2o.grid("gbm", grid_id = "gbm.grid", x = names(td.train.h2o)[!names(td.train.h2o)%like%segment_binary], y = segment_binary,
seed = 42, distribution = "bernoulli",
training_frame = td.train.h2o, validation_frame = td.train.hyper.h2o,
hyper_params = hyper_params, search_criteria = search_criteria)
h2o.removeAll()
rf.grid <- h2o.grid("randomForest", grid_id = "rf.grid", x = names(td.train.h2o)[!names(td.train.h2o)%like%segment_binary], y = segment_binary,
seed = 42, distribution = "bernoulli",
training_frame = td.train.h2o, validation_frame = td.train.hyper.h2o,
hyper_params = hyper_params, search_criteria = search_criteria)
h2o.removeAll() }
Es scheint zu funktionieren, aber jetzt bekomme ich diesen Fehler (?) In den grid optimization
für random forest
Irgendwelche Ideen, was das sein könnte?
Also sollte ich die 'init' in etwas wie' while (h2o.clusterIsUp()) 'setzen? – quant
sollten Sie zunächst 'while (h2o.clusterIsUp())' (vorzugsweise mit einem 'sleep' innerhalb der Schleife) runt und 'h2o.init' nach dieser Schleife ausführen. Aber wie ich schon erwähnte, ist all das verschwenderisch, Sie müssen die Knoten nicht jedes Mal starten/stoppen. –
siehe Update – quant