Импорт модели H2O в Python

У меня есть модель, построенная в H2O (скажем, модель GLM). Теперь я хочу импортировать эту модель в Python для использования в других приложениях.

Как мне это сделать ?


person Hari Krishna    schedule 05.03.2018    source источник
comment
Добро пожаловать в StackOverflow! Пожалуйста, прочитайте информацию о как задать хороший вопрос и как привести воспроизводимый пример. Это значительно облегчит другим людям помощь.   -  person Aditi    schedule 05.03.2018
comment
Вы читали документы? docs.h2o.ai/h2o/ последняя-стабильная/h2o-docs/save-and-load-model.html   -  person Avión    schedule 05.03.2018
comment
Возможный дубликат как сохранить/загрузить обученную модель в H2o?   -  person Aditi    schedule 05.03.2018
comment
@hari-krishna Вы пытаетесь предсказать на основе созданного вами файла модели?   -  person Roopak A Nelliat    schedule 19.09.2018


Ответы (3)


Попробуй это:

# build the model
model = H2ODeepLearningEstimator(params)
model.train(params)

# save the model
model_path = h2o.save_model(model=model, path="/tmp/mymodel", force=True)

print(model_path)
/tmp/mymodel/DeepLearning_model_python_1441838096933

# load the model
saved_model = h2o.load_model(model_path)
person CezarySzulc    schedule 18.12.2018

Вам нужно экспортировать модель как MOJO или POJO (предпочитайте MOJO, если ваш алгоритм его поддерживает). Это объект Java, поэтому вам нужно использовать Java для его запуска. Есть много вариантов, как это сделать:

http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html

(Кстати, R API недавно добавил h2o.predict_json(), который выполняет преобразование аргументов в JSON и вызов Java за вас; похоже, в Python API пока ничего нет, но если вы прочтете код R, который вы увидите он не делает ничего сложного: просто запускает команду оболочки.)

Другой альтернативой является запуск сервера H2O и использование его из Python. В этом случае вы просто хотите сохранить свою модель (в двоичном формате), а затем загружать ее (обратно в кластер H2O) каждый раз, когда вы хотите делать прогнозы: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/save-and-load-model.html

Недостатком этого подхода является то, что двоичный формат всегда привязан к версии H2O. Поэтому, если вы обновите H2O, вы больше не сможете использовать свои сохраненные модели.

person Darren Cook    schedule 06.03.2018

Более новые версии H2O имеют возможность импортировать MOJO через API Python:

# re-import saved MOJO
imported_model = h2o.import_mojo(path)

new_observations = h2o.import_file(path='new_observations.csv')
predictions = imported_model.predict(new_observations)

Внимание: MOJO нельзя повторно импортировать в python в более старых версиях H2O, в которых отсутствует функция h2o.import_mojo().

Таким образом, h2o.save_model(), похоже, потерял свою роль — мы можем использовать только my_model.save_mojo() (обратите внимание, что это не метод h2o, а свойство объекта модели), поскольку эти файлы можно использовать не только для развертывания приложений Java, но и в python. (на самом деле они все еще используют для этого внутренний мост python-Java).

person mirekphd    schedule 07.01.2021