我有两个H2O模型(通过R-3.x.x中的h2o.savemodel保存)。我如何找出该模型基于哪个版本的H2O?
我无法使用最新版本的H2O加载其中一个。
>model3 <- h2o.loadModel(pcaModelFileName)
ERROR: Unexpected HTTP Status code: 412 Precondition Failed (url = http://localhost:54321/99/Models.bin/)
water.exceptions.H2OIllegalArgumentException
[1] "water.exceptions.H2OIllegalArgumentException: Illegal argument: dir of function: importModel: PCA_model_R_1538682208857_7"
[2] " water.api.ModelsHandler.importModel(ModelsHandler.java:212)"
[3] " sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
[4] " sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
[5] " sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
[6] " java.lang.reflect.Method.invoke(Method.java:498)"
[7] " water.api.Handler.handle(Handler.java:63)"
[8] " water.api.RequestServer.serve(RequestServer.java:451)"
[9] " water.api.RequestServer.doGeneric(RequestServer.java:296)"
[10] " water.api.RequestServer.doPost(RequestServer.java:222)"
[11] " javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"
[12] " javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"
[13] " org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"
[14] " org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)"
[15] " org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)"
[16] " org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)"
[17] " org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)"
[18] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)"
[19] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)"
[20] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)"
[21] " water.JettyHTTPD$LoginHandler.handle(JettyHTTPD.java:197)"
[22] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)"
[23] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)"
[24] " org.eclipse.jetty.server.Server.handle(Server.java:370)"
[25] " org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)"
[26] " org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)"
[27] " org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)"
[28] " org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)"
[29] " org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)"
[30] " org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)"
[31] " org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)"
[32] " org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)"
[33] " org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)"
[34] " org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)"
[35] " java.lang.Thread.run(Thread.java:748)"
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, :
ERROR MESSAGE:
Illegal argument: dir of function: importModel: PCA_model_R_1538682208857_7
报告了类似的错误,据说这是版本问题,但我的问题是 1.这与版本有关吗 2.有没有办法找出模型基于哪个H2o版本 3.在R中,有没有一种方法可以将模型从一个版本移植到另一个版本。 (我可能有两个基于两个不同版本的H2O模型。
由于我没有重建模型所需的数据/脚本,因此可能无法选择使用Mojo或Pojo。
答案 0 :(得分:0)
该错误似乎与版本未命中匹配有关,因为它抱怨存在非法参数。
查看模型对应的h2o版本号的快速方法(如果您使用h2o.saveModel()
保存模型)是打开模型的文件-您应该能够在第一行中看到版本号(在表格3.10.4.2)。
您还可能会遇到版本不匹配错误,该错误将告诉您您要使用的版本与当前使用的版本。
R中没有办法将模型从一个版本移植到另一个版本。来自documentation:
注意: 使用h2o.saveModel(R),h2o.save_model(Python)或在Flow中保存H2O二进制模型时,您只会能够以与训练模型相同的H2O版本加载和使用保存的二进制模型。 H2O二进制模型在H2O版本之间不兼容。如果您更新H2O版本,则需要重新训练模型。对于生产,您可以将模型另存为POJO / MOJO。这些工件与特定版本的H2O无关,因为它们只是纯Java代码,不需要运行H2O集群。