我正在构建一个闪亮的应用程序,使用h2o引擎对深度学习模型的数据进行评分。
我可以通过简单地将我的预测操作放入函数中来实现我的目标。在这个函数中,我通常会启动深度学习机,进行计算,然后停止它。不幸的是,这很慢。
我的目标是在开始时启动h2o,当用户从R-Server启动shiny app时,然后确保当用户关闭浏览器时h2o虚拟机将关闭。
我会要求建议最优的方法,因为我对here中的这个方法并不完全满意,我只是把下面这几行代码放到了global.R脚本中:
#global.R
library(h2o)
h2o.init(nthreads = 2)
onStop(function() {
# shut down the h2o on app exit see
h2o.shutdown(prompt = FALSE)
})似乎有时我的h2o实例会因为出现错误Error in h2o.shutdown(prompt = FALSE) : There is no H2O instance running.而停止运行
..。我现在正在浏览器中测试它,但我只是想确保它不会对R-Server造成影响
如有任何帮助,我们不胜感激!
发布于 2018-04-09 03:06:18
当您收到错误消息"There is no H2O instance running“时,它实际上意味着没有什么需要关闭的,因此在您的情况下,这不是一个错误。当然,您应该通过登录到R-Server并在错误检查h2o进程是否运行时进行测试:
ps -eaf | grep h2o使用global.R的方法对于闪亮的应用来说是完全合法的。
更新:请注意,如果您运行多个闪亮的应用程序,每个应用程序都可能启动自己的h2o实例,或者它们可能共享相同的实例并遇到冲突。因此,提前测试它,以免遇到意外的冲突/错误/
发布于 2018-06-05 03:51:23
您可以尝试使用try-catch来防止该错误消息。这是我在本地机器上初始化的方式:
# Try to connect to existing cluster. If it does not exist then initialize.
errorStatus <- tryCatch({
h2o.init(startH2O = FALSE)
}, error = function(err) {
errorStatus <- err[1]$message
message(paste0(errorStatus,"\n Initializing new H2O cluster..."))
# Inititialize H2o cluster
try({h2o.shutdown(prompt = FALSE)}, silent=TRUE)
h2o.init(ip = 'localhost', port = 54321, nthreads= -1, max_mem_size = '4g')
return(errorStatus)
}) # END tryCatch
# Shut down H2O cluster on app exit
onStop(function() {
try({h2o.shutdown(prompt = FALSE)}, silent=TRUE)
})https://stackoverflow.com/questions/49716815
复制相似问题