В предыдущих статьях серии «Демистификация H2O» я рассмотрел обзор H2O, как работать с H2O в python и как работать с H2O для непрограммистов, использующих интерфейс H2O's Flow.
Этот пост является частью серии, которая демистифицирует H2O.ai для людей :)
«Часть 1: Демистификация H2O.ai | Обзор"
Часть 2: Демистификация H2O.ai | Использование Python
Часть 3: Демистификация H2O.ai | Использование H2O Flow
Часть 4: Демистификация H2O.ai | Производство
Теперь в этом посте давайте посмотрим, как создать модель, которую мы получаем от H2O. Цель этой публикации - разработать простую прогнозирующую модель на основе H2O, преобразовать ее в простой старый объект Java (POJO), скомпилировать его вместе с другими пакетами Java и упаковать скомпилированные файлы классов в развертываемый файл JAR, чтобы он мог легко развертывается на любых серверах приложений на базе Java. Эта модель примет набор входных данных в виде файла CSV и вернет прогнозируемые выходные данные в формате CSV.
В этом примере я использую поток «GBM_Airlines_Classification» из примеров панели управления потоками H2O. Если вы не знаете, как использовать H2O’s FLow, прочтите предыдущий пост в этой серии.
Следуйте за потоком, выполняя каждую ячейку, пока не дойдете до последней ячейки для getModel.
Шаг 1: Загрузите объект POJO в локальную систему (папка Downloads).
Шаг 2. Загрузите детали модели в новом окне терминала. Обратите внимание, что H2O все еще должен работать в окне терминала №1:
$ mkdir experiment $ cd experiment $ mv ~/Downloads/gbm_pojo_test.java . $ curl http://localhost:54321/3/h2o-genmodel.jar > h2o-genmodel.jar
Шаг 3: Создайте свою основную программу в окне терминала №2, создав новый файл с именем main.java (vim main.java
) со следующим содержимым:
import java.io.*; import hex.genmodel.easy.RowData; import hex.genmodel.easy.EasyPredictModelWrapper; import hex.genmodel.easy.prediction.*; public class main { private static String modelClassName = "gbm_pojo_test"; public static void main(String[] args) throws Exception { hex.genmodel.GenModel rawModel; rawModel = (hex.genmodel.GenModel) Class.forName(modelClassName).newInstance(); EasyPredictModelWrapper model = new EasyPredictModelWrapper(rawModel); RowData row = new RowData(); row.put("Year", "1987"); row.put("Month", "10"); row.put("DayofMonth", "14"); row.put("DayOfWeek", "3"); row.put("CRSDepTime", "730"); row.put("UniqueCarrier", "PS"); row.put("Origin", "SAN"); row.put("Dest", "SFO"); BinomialModelPrediction p = model.predictBinomial(row); System.out.println("Label (aka prediction) is flight departure delayed: " + p.label); System.out.print("Class probabilities: "); for (int i = 0; i < p.classProbabilities.length; i++) { if (i > 0) { System.out.print(","); } System.out.print(p.classProbabilities[i]); } System.out.println(""); } }
Шаг 4: Скомпилируйте POJO в окне терминала 2.
$ javac -cp h2o-genmodel.jar -J-Xmx2g -J-XX:MaxPermSize=128m gbm_pojo_test.java main.java
Шаг 5: Запустите POJO в окне терминала 2.
For Linux and OS X users:$ java -cp .:h2o-genmodel.jar main
For Windows users:$ java -cp .;h2o-genmodel.jar main
-------------------------------------------------------------------- Output: Label (aka prediction) is flight departure delayed: YES Class probabilities: 0.4319916897116479,0.5680083102883521
Этот пост - один из способов использования файла POJO в продакшене. Думайте об этом как об объекте Java, и все нюансы, применимые к любому объекту Java, применимы и к этому.
Надеюсь, что эта серия статей о H2O предоставит вам достаточно информации и четкое изображение, чтобы вы начали.
H2O кажется мощным инструментом в любом технологическом стеке, особенно при работе с тоннами данных без графического процессора. Кроме того, было бы здорово узнать о технологии, которая выделит вас среди сверстников.
Обо мне
Я старший эксперт по машинному обучению в Wavelabs.ai. Мы в Wavelabs помогаем вам использовать искусственный интеллект (AI), чтобы революционизировать пользовательский опыт и сократить расходы. Мы уникальным образом улучшаем ваши продукты с помощью ИИ, чтобы полностью раскрыть ваш рыночный потенциал. Мы стараемся внедрять передовые исследования в ваши приложения.
У нас есть опыт работы с платформой H2O, чтобы предоставить вам быстрый и масштабируемый опыт машинного обучения, как никогда раньше.
Не стесняйтесь узнавать больше на Wavelabs.ai.
Оставайтесь любопытными!
Вы можете связаться со мной в LinkedIn.