首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在闪亮应用中正确管理h2o实例

如何在闪亮应用中正确管理h2o实例
EN

Stack Overflow用户
提问于 2018-04-08 18:18:44
回答 2查看 728关注 0票数 3

我正在构建一个闪亮的应用程序,使用h2o引擎对深度学习模型的数据进行评分。

我可以通过简单地将我的预测操作放入函数中来实现我的目标。在这个函数中,我通常会启动深度学习机,进行计算,然后停止它。不幸的是,这很慢。

我的目标是在开始时启动h2o,当用户从R-Server启动shiny app时,然后确保当用户关闭浏览器时h2o虚拟机将关闭。

我会要求建议最优的方法,因为我对here中的这个方法并不完全满意,我只是把下面这几行代码放到了global.R脚本中:

代码语言:javascript
复制
#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造成影响

如有任何帮助,我们不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2018-04-09 03:06:18

当您收到错误消息"There is no H2O instance running“时,它实际上意味着没有什么需要关闭的,因此在您的情况下,这不是一个错误。当然,您应该通过登录到R-Server并在错误检查h2o进程是否运行时进行测试:

代码语言:javascript
复制
ps -eaf | grep h2o

使用global.R的方法对于闪亮的应用来说是完全合法的。

更新:请注意,如果您运行多个闪亮的应用程序,每个应用程序都可能启动自己的h2o实例,或者它们可能共享相同的实例并遇到冲突。因此,提前测试它,以免遇到意外的冲突/错误/

票数 1
EN

Stack Overflow用户

发布于 2018-06-05 03:51:23

您可以尝试使用try-catch来防止该错误消息。这是我在本地机器上初始化的方式:

代码语言:javascript
复制
  # 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)
  })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49716815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档