gpt4 book ai didi

java - 在 Spring boot App 中获取 h2o MOJO 模型(zip 文件)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:10:22 25 4
gpt4 key购买 nike

我正在编写一个 Spring boot 应用程序(java 类),它调用另一个 java 类中的 H2o predict 方法。

我已经独立测试了这个 java 类,如果它与调用 java 的位置相同,我可以读取 MOJO 模型,并且我可以做出预测。

使用 Spring boot 应用程序,这次我的 maven 项目编译生成的 jar 无法读取该 zip。我使用标准方式使用 Wrapper h2o 提供的方式读取 MOJO zip 文件。

EasyPredictModelWrapper model = new EasyPredictModelWrapper(MojoModel.load("DRF_model_python_1504558159175_1.zip"));

我的 Maven 项目结构如下所示:

enter image description here

Spring boot App生成的jar也包含如下图的zip:

enter image description here

我不明白为什么它会给我找不到 MOJO zip 文件的错误(这是一个 IOexception)。

File DRF_model_python_1504558159175_1.zip cannot be found.

我认为解决方案可能是:1. 在 Maven pom 文件中添加一些内容,以便生成的 jar 知道从哪里获取模型。或者2. 如果 MojoModel.load 方法接受文件路径而不仅仅是文件名。但我认为这行不通。

有什么想法吗?

最佳答案

您需要更改在项目中加载 MOJO zip 文件的方式,而是需要从资源中以流的形式加载 MOJO 文件。可以关注这个example您可以在其中看到如何将 MOJO 放入资源文件夹,然后调用 addMOJOsFromJARResource 以包含 MOJO。

项目:https://github.com/h2oai/h2o-tutorials/tree/f67765bc6c68c2058d4b2786d1bbc627d3b70539/tutorials/hive_udf_template/hive_udf_mojo_template

  1. MOJO zip 存储在 src/main/resources/model
  2. 您需要引用下面的 h2o-genmodel 类

```

 import hex.genmodel.MojoReaderBackendFactory;
import static hex.genmodel.MojoReaderBackendFactory.CachingStrategy;
import hex.genmodel.MojoReaderBackend;
import hex.genmodel.ModelMojoReader;
  1. 这是将所有 MOJO.zip(是的,您可以添加多个 MOJO)包含到您的项目中的函数

```

  public void addMOJOsFromJARResource() {
try {
String[] mojo_names = this.getMOJONames();
for (int i = 0; i < mojo_names.length; i++) {
MojoReaderBackend reader =
MojoReaderBackendFactory.createReaderBackend(
getClass().getResourceAsStream(
"/models/"+mojo_names[i]),
MojoReaderBackendFactory.CachingStrategy.MEMORY);
MojoModel model = ModelMojoReader.readFrom(reader);
this.addModel(model);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}

```这会起作用。

关于java - 在 Spring boot App 中获取 h2o MOJO 模型(zip 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46392819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com