2013-05-17 7 views
5

Ich führe die train Funktion in caret auf einem Cluster über doRedis. Zum größten Teil, es funktioniert, aber jeder so oft bekomme ich Fehler ganz am Ende dieser Art:Fehler beim Ausführen von Caret auf einem Cluster

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

und

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

wenn ich traceback() laufen erhalte ich:

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) 

Diese Fehler sind nicht leicht reproduzierbar (dh sie passieren manchmal, aber nicht konsistent) und treten nur am Ende des Laufs auf. Das stdout auf dem Cluster zeigt alle laufenden und abgeschlossenen Aufgaben an, also bin ich ein wenig verwirrt.

Hat jemand diese Fehler festgestellt? und wenn ja, verstehen Sie die Ursache und noch besser eine Lösung?

Antwort

2

Ich stelle mir vor, Sie haben dieses Problem bereits gelöst, aber ich stieß auf das gleiche Problem auf meinem Cluster bestehend aus Linux und Windows-Systemen. Ich habe den Server auf Ubuntu 14.04 ausgeführt und die Warnungen beim Starten des Serverdienstes bemerkt, dass 'transparente, riesige Seiten' im Linux-Kernel aktiviert waren. Ich ignorierte diese Nachricht und begann mit Trainingsübungen, bei denen die meisten Maschinen mit Arbeitern ausgereizt waren. Ich erhielt den gleichen Fehler am Ende des Laufes:

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

Nach viel Kopf kratzen und nutzlos Bastelei, entschied ich mich, dass die Warnung zu adressieren, indem Sie den Anweisungen folgen hier: http://ubuntuforums.org/showthread.php?t=2255151

Im Wesentlichen habe ich installiert hugeadm mit:

sudo apt-get install hugeadm 

dann die transparenten Seiten deaktiviert werden:

hugeadm --thp-never 

Beachten Sie, dass diese Änderung beim Neustart des Computers rückgängig gemacht wird.

Wenn ich meinen Trainingsprozess erneut lief, lief es ohne Fehler.

Hoffe, dass hilft.

Cheers, Eric

+0

Verbindungen in Zukunft verschwinden. Bitte bearbeiten Sie Ihre Antwort, um die Lösung zu reflektieren, die der Link bietet. Sie riskieren die Löschung der Antwort für nur eine Link-only-Antwort, wenn Sie dies nicht tun. –

+1

Leider bekomme ich immer noch die Fehlermeldung, auch nachdem ich die oben erwähnte Fehlerbehebung durchgeführt habe, obwohl jetzt viel seltener. Ich habe festgestellt, dass dieser Fehler auftritt, wenn die Mitarbeiter mein LAN/Wifi-Heimnetzwerk ausschöpfen. Ich war in der Lage, das Auftreten dieses Problems noch mehr zu reduzieren, indem ich weniger Arbeiter einsetzte. Außerdem kann ich erfolgreich Jobs ausführen, die fehlschlagen, wenn ich es ändere, so dass alle Mitarbeiter lokal für die Sitzung sind, die den Job initiiert hat. Ich habe das noch nicht versucht, aber ich glaube auch, dass es gut funktionieren würde, wenn die Arbeiter auf dem Redis-Server laufen würden. –