2013-05-17 10 views
5

Sto eseguendo la funzione train in caret su un cluster tramite doRedis. Per la maggior parte, funziona, ma ogni tanto ricevo errori alla fine di questa natura:Errore nel caret durante l'esecuzione su un cluster

error calling combine function: 
<simpleError: obj$state$numResults <= obj$state$numValues is not TRUE> 

e

Error in names(resamples) <- gsub("^\\.", "", names(resamples)) : 
    attempt to set an attribute on NULL 

quando corro traceback() ottengo:

5: nominalTrainWorkflow(dat = trainData, info = trainInfo, method = method, 
     ppOpts = preProcess, ctrl = trControl, lev = classLevels, 
     ...) 
4: train.default(x, y, weights = w, ...) 
3: train(x, y, weights = w, ...) 
2: train.formula(couple ~ ., training.balanced, method = "nnet", 
     preProcess = "range", tuneGrid = nnetGrid, MaxNWts = 2200) 
1: caret::train(couple ~ ., training.balanced, method = "nnet", 
     preProcess = "range", tuneGrid = nnetGrid, MaxNWts = 2200) 

Questi errori non sono facilmente riproducibili (cioè accadono a volte, ma non in modo coerente) e si verificano solo alla fine della corsa. Lo stdout sul cluster mostra tutte le attività in esecuzione e completate, quindi sono un po 'sconcertato.

Qualcuno ha riscontrato questi errori? e se sì capisci la causa e ancora meglio una correzione?

risposta

2

Immagino che tu abbia già risolto questo problema, ma mi sono imbattuto nello stesso problema sul mio cluster costituito da sistemi Linux e Windows. Stavo eseguendo il server su Ubuntu 14.04 e avevo notato gli avvertimenti all'avvio del servizio server riguardo l'attivazione di 'enormi pagine trasparenti' nel kernel di Linux. Ho ignorato quel messaggio e ho iniziato a eseguire esercizi di allenamento in cui la maggior parte delle macchine erano al massimo con i lavoratori. Ho ricevuto lo stesso errore alla fine della corsa:

error calling combine function: 
<simpleError: obj$state$numResults <= obj$state$numValues is not TRUE> 

Dopo un sacco di testa graffi e armeggiare inutile, ho deciso di affrontare questo avvertimento seguendo le istruzioni qui: http://ubuntuforums.org/showthread.php?t=2255151

In sostanza, ho installato hugeadm utilizzando:

sudo apt-get install hugeadm 

Poi disabilitato le pagine trasparenti utilizzando:

hugeadm --thp-never 

Si noti che questa modifica verrà annullata al riavvio del computer.

Quando ho ripetuto il mio processo di allenamento, è stato eseguito senza errori.

Spero che questo aiuti.

Cheers, Eric

+0

collegamenti possono scomparire in futuro. Modifica la risposta per riflettere la soluzione fornita dal link. Risolvi la cancellazione della risposta per essere solo una risposta di collegamento se non lo fai. –

+1

Sfortunatamente, ricevo ancora il messaggio di errore anche dopo la correzione che ho suggerito sopra, anche se molto meno frequentemente ora. Ho notato che questo errore sembra verificarsi quando i lavoratori stanno esaurendo la mia rete domestica LAN/Wifi. Sono stato in grado di ridurre il verificarsi di questo problema ancora di più utilizzando meno lavoratori. Inoltre, posso eseguire correttamente i lavori che falliscono se lo cambio così tutti i lavoratori sono locali alla rsession che ha avviato il lavoro. Non ho ancora provato questo, ma credo anche che funzionerebbe bene se i lavoratori fossero eseguiti sul redis-server. –