在群集上运行时在插入符中发生错误

Tom*_*evi 5 r machine-learning cluster-computing r-doredis r-caret

我通过doRedis在集群train中的插入符号中运行该函数.在大多数情况下,它是有效的,但我经常在这种性质的最后得到错误:

error calling combine function:
<simpleError: obj$state$numResults <= obj$state$numValues is not TRUE>
Run Code Online (Sandbox Code Playgroud)

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

当我跑步时,traceback()我得到:

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)
Run Code Online (Sandbox Code Playgroud)

这些错误不易重现(即它们有时发生,但不一致),并且只在运行结束时发生.群集上的stdout显示所有正在运行和完成的任务,所以我有点沮丧.

有没有人遇到过这些错误?如果是这样理解原因,甚至更好的解决方案?

Eri*_* C. 2

我想你已经解决了这个问题,但我在由 Linux 和 Windows 系统组成的集群上遇到了同样的问题。我在 ubuntu 14.04 上运行服务器,并在启动服务器服务时注意到有关在 Linux 内核中启用“透明大页面”的警告。我忽略了该消息并开始进行培训练习,其中大多数机器都已满员。我在运行结束时收到相同的错误:

error calling combine function:
<simpleError: obj$state$numResults <= obj$state$numValues is not TRUE>
Run Code Online (Sandbox Code Playgroud)

经过大量的绞尽脑汁和无用的修补之后,我决定按照此处的说明来解决该警告:http://ubuntuforums.org/showthread.php ?t=2255151

本质上,我使用以下命令安装了hugeadm:

sudo apt-get install hugeadm
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法禁用透明页面:

hugeadm --thp-never
Run Code Online (Sandbox Code Playgroud)

请注意,此更改将在计算机重新启动时撤消。

当我重新运行训练过程时,它运行时没有任何错误。

希望有帮助。

干杯,埃里克