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?
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. –
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. –