В предыдущих статьях серии «Демистификация 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.