【问题标题】:H2O AI : Unsupported MOJO model 'word2vec'H2O AI:不支持的 MOJO 模型“word2vec”
【发布时间】:2020-10-27 09:27:37
【问题描述】:

我有 3 个水模型:

$ ls dataset/mojo
1. DeepLearning_model_python_1582176092021_2.zip
2. StackedEnsemble_BestOfFamily_AutoML_20200220_073620.zip
3. Word2Vec_model_python_1582176092021_1.zip

这 3 个的二进制模型是在 v3.28.0.3 上生成的,但我正在尝试将 h2o 版本和productionize 升级到 v3.30.0.5 所以我成功地将这 3 个二进制文件转换为 MOJO 模型(如上所列)

当尝试使用 h2o.upload_mojo 上传这些 mojo 模型时,仅针对 Word2Vec,出现错误:


In [15]: w2v_path = 'dataset/mojo/Word2Vec_model_python_1582176092021_1.zip'

In [16]: w2v_model = h2o.upload_mojo(w2v_path)
generic Model Build progress: | (failed)                                                      |   0%
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-16-734005ed70a8> in <module>
----> 1 w2v_model = h2o.upload_mojo(w2v_path)

~/.envs/h2o-test/lib/python3.8/site-packages/h2o/h2o.py in upload_mojo(mojo_path)
   2149     frame_key = response["destination_frame"]
   2150     mojo_estimator = H2OGenericEstimator(model_key = get_frame(frame_key))
-> 2151     mojo_estimator.train()
   2152     print(mojo_estimator)
   2153     return mojo_estimator

~/.envs/h2o-test/lib/python3.8/site-packages/h2o/estimators/estimator_base.py in train(self, x, y, training_frame, offset_column, fold_column, weights_column, validation_frame, max_runtime_secs, ignored_columns, model_id, verbose)
    113                                  validation_frame=validation_frame, max_runtime_secs=max_runtime_secs,
    114                                  ignored_columns=ignored_columns, model_id=model_id, verbose=verbose)
--> 115         self._train(parms, verbose=verbose)
    116
    117     def train_segments(self, x=None, y=None, training_frame=None, offset_column=None, fold_column=None,

~/.envs/h2o-test/lib/python3.8/site-packages/h2o/estimators/estimator_base.py in _train(self, parms, verbose)
    205             return
    206
--> 207         job.poll(poll_updates=self._print_model_scoring_history if verbose else None)
    208         model_json = h2o.api("GET /%d/Models/%s" % (rest_ver, job.dest_key))["models"][0]
    209         self._resolve_model(job.dest_key, model_json)

~/.envs/h2o-test/lib/python3.8/site-packages/h2o/job.py in poll(self, poll_updates)
     75         if self.status == "FAILED":
     76             if (isinstance(self.job, dict)) and ("stacktrace" in list(self.job)):
---> 77                 raise EnvironmentError("Job with key {} failed with an exception: {}\nstacktrace: "
     78                                        "\n{}".format(self.job_key, self.exception, self.job["stacktrace"]))
     79             else:

OSError: Job with key $03010a64051932d4ffffffff$_8d0c64127137bd1eef16202889cf4fca failed with an exception: java.lang.IllegalArgumentException: Unsupported MOJO model 'word2vec'.
stacktrace:
java.lang.IllegalArgumentException: Unsupported MOJO model 'word2vec'.
  at hex.generic.Generic$MojoDelegatingModelDriver.computeImpl(Generic.java:99)
  at hex.ModelBuilder$Driver.compute2(ModelBuilder.java:248)
  at hex.generic.Generic$MojoDelegatingModelDriver.compute2(Generic.java:78)
  at water.H2O$H2OCountedCompleter.compute(H2O.java:1557)
  at jsr166y.CountedCompleter.exec(CountedCompleter.java:468)
  at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263)
  at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
  at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477)
  at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)

其他两个模型成功,没有任何问题,并返回一个有效的model_id。知道这里的问题是什么,因为从文档中了解到所有三种模型类型都是supported by MOJO

我在 K8s 上使用 2 个 pod 集群进行了尝试,每个集群具有 2Gi/1cpu 内存,但结果与上述相同。

【问题讨论】:

    标签: java python h2o mojo


    【解决方案1】:

    Word2Vec 目前不在 allowed algos 的列表中以导入回 H2O。

    文档有点混乱,需要改进。 MOJO 是将 H2O 模型投入生产的一种方式。这些可以使用 H2O 的genmodel 在 H2O 之外使用。其中一些 MOJO 可以重新导入 H2O 并进行检查。但不是全部。支持列出的前两种算法。不幸的是,Word2Vec 不是。

    我创建了一个JIRA 来跟踪这个问题。我们至少应该能够启用评分。

    【讨论】:

    • 感谢您的回复。有趣的!有没有其他方法可以实现这一点,因为在 prod 中运行二进制模型意味着随着时间的推移我会被旧版本的 h2o 卡住!
    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 2020-01-04
    • 2021-12-03
    • 2019-08-30
    • 2020-11-20
    • 2021-06-08
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多