Driverless AI k-LIME MOJO Reason Code Pipeline - Java 런타임

완료된 MLI 실험에 대해 사용자는 k-LIME MOJO를 다운로드할 수 있습니다. k-LIME MOJO Reason Code Pipeline은 실시간으로 이유 코드를 생성하기 위해 모든 Java 환경에 배치할 수 있는 이유 코드 엔진입니다. K-LIME 이유 코드에 대한 Java 런타임 MOJO를 얻으려면 download K-Lime MOJO reason code Pipeline 하고, K-LIME 이유 코드 및 Shapley에 대한 Python Scoring Pipeline의 경우는 Scoring Pipeline 을 다운로드합니다.

Note: 이 이유 코드 파이프라인은 현재 다항 실험에는 사용할 수 없습니다.

Download k-LIME MOJO button

전제 조건

k-LIME MOJO Reason Code Pipeline을 실행하려면 다음 조건이 필요합니다.

  • Java 7 런타임(JDK 1.7) 이상. Note: Java의 버그 때문에 Java 11 이상을 사용할 것을 권장합니다. 자세한 내용은 https://bugs.openjdk.java.net/browse/JDK-8186464 를 참조하십시오.

  • 유효한 Driverless AI 라이선스. Driverless AI를 호스팅하는 시스템(일반적으로 license 폴더에 있음)에서 license.sig 파일을 다운로드할 수 있습니다. 다운로드한 mojo-pipeline 폴더에 라이선스 파일을 복사합니다.

  • mojo2-runtime.jar 파일. 이 파일은 Driverless AI UI의 상단 탐색 메뉴와 실험을 위해 다운로드한 mojo-pipeline.zip 파일에 있습니다.

라이선스 사양

Driverless AI에서 DAI/MLI MOJO를 실행하려면 라이선스를 지정해야 합니다. 다음 중 한 가지 방법으로 라이선스를 지정할 수 있습니다.

  • 환경 변수:

    • DRIVERLESS_AI_LICENSE_FILE: Driverless AI 라이선스 파일의 경로, 또는

    • DRIVERLESS_AI_LICENSE_KEY: Driverless AI 라이선스 키(Base64 인코드 스트링)

  • JVM 시스템 속성(-D 옵션):

    • ai.h2o.mojos.runtime.license.file: Driverless AI 라이선스 파일의 경로, 또는

    • ai.h2o.mojos.runtime.license.key: Driverless AI 라이선스 키(Base64 인코드 문자열)

  • 애플리케이션 클래스 경로:

    • 라이선스는 /license.sig 라는 리소스에서 로드됩니다.

    • 기본 리소스 이름은 JVM 시스템 속성 ai.h2o.mojos.runtime.license.filename 으로 변경할 수 있습니다.

예:

# Specify the license with a temporary environment variable
export DRIVERLESS_AI_LICENSE_FILE="path/to/license.sig"

k-LIME Reason Code Pipeline 파일

klime_mojo 폴더에는 다음 파일이 포함되어 있습니다.

  • domains

  • experimental

  • model.ini

  • models

빠른 시작

  1. 완료된 MLI 페이지에서, Download k-LIME MOJO Reason Code Pipeline 버튼을 클릭합니다.

Download k-LIME MOJO button
  1. 이유 코드를 생성하기 위해 Java 애플리케이션을 직접 실행하려면 다음 명령을 사용하십시오.

java -Dai.h2o.mojos.runtime.license.file=license.sig -cp mojo2-runtime.jar ai.h2o.mojos.ExecuteMojo klime_mojo.zip example.csv

k-LIME MOJO 명령줄 옵션

Java 런타임 실행

다음은 명령줄에서 Java 런타임을 실행하는 일반적인 두 가지 예시입니다.

  • With additional libraries:

java <JVM options> [options...] -cp mojo2-runtime.jar:your-other.jar:many-more-libs.jar ai.h2o.mojos.ExecuteMojo path-to/pipeline.mojo path-to/input.csv path-to/output.csv
  • Without additional libraries:

java <JVM options> -jar mojo2-runtime.jar path-to/pipeline.mojo path-to/input.csv path-to/output.csv

따라서 예를 들어 sys.ai.h2o.mojos.parser.csv.separator 옵션을 다음과 함께 전달할 수 있습니다.

java -Dsys.ai.h2o.mojos.parser.csv.separator='|' -Dai.h2o.mojos.runtime.license.file=../license.sig -jar mojo2-runtime.jar pipeline.mojo input.csv output.csv

이와 유사하게, sys.ai.h2o.mojos.exposedInputs 옵션을 다음과 함께 전달할 수 있습니다.

java -Xmx5g -Dsys.ai.h2o.mojos.exposedInputs=ALL -Dai.h2o.mojos.runtime.license.file= -cp mojo2-runtime.jar ai.h2o.mojos.ExecuteMojo pipeline.mojo example.csv

Note: 입력 및 출력 CSV 인수를 모두 `-`로 대체하여 데이터를 stdin에서 stdout으로 스트리밍할 수 있습니다.

JVM 옵션

  • sys.ai.h2o.mojos.parser.csv.keepCarriageReturn (boolean) - 구문 분석 후 캐리지 리턴을 유지할지 여부를 지정합니다. 이 값의 기본값은 True입니다.

  • sys.ai.h2o.mojos.parser.csv.stripCrFromLastColumn (boolean) - OpenCSV 파서와 관련된 문제에 대한 해결 방법입니다. 기본값은 True입니다.

  • sys.ai.h2o.mojos.parser.csv.quotedHeaders (boolean) - 출력 CSV 파일에서 헤더 이름을 인용할지 여부를 지정합니다. 기본값은 False입니다.

  • sys.ai.h2o.mojos.parser.csv.separator (char) - CSV 필드 사이에 사용되는 구분 기호를 지정합니다. 탭으로 구분된 값에는 특수 값 `TAB`을 사용할 수 있습니다. 기본값은 `,`입니다.

  • sys.ai.h2o.mojos.parser.csv.escapeChar (char) - CSV 필드 구문 분석을 위한 이스케이프 문자를 지정합니다. 이 값을 지정하지 않으면 이스케이프를 시도하지 않습니다. 기본값은 빈 문자열입니다.

  • sys.ai.h2o.mojos.parser.csv.batch (int) - 일괄 처리를 위해 메모리로 가져온 입력 레코드 수를 지정합니다(사용된 메모리를 확인함). 기본값은 1000입니다.

  • sys.ai.h2o.mojos.pipelineFormats (string) - 여러 형식이 인식되는 경우, 이 옵션은 시도할 순서를 지정합니다. 기본값은 `pbuf,toml,klime,h2o3`입니다.

  • sys.ai.h2o.mojos.parser.csv.date.formats (string) - 날짜 형식을 지정합니다. 기본값은 빈 문자열입니다.

  • sys.ai.h2o.mojos.exposedInputs (string) - 출력에 필요한 쉼표로 구분된 입력 열 목록을 지정합니다. 특수 값 ‘`ALL`은 모든 입력을 사용합니다. 기본값은 null입니다.

  • sys.ai.h2o.mojos.useWeakHash (boolean) - WeakHashMap 사용 여부를 지정합니다. 기본적으로 False로 설정되어 있습니다. 이 설정을 활성화하면 MOJO 로드 시간이 향상될 수 있습니다.

JVM Options for Access Control

  • ai.h2o.mojos.runtime.license.key - 라이선스 키를 지정합니다.

  • ai.h2o.mojos.runtime.license.file - 라이선스 키의 위치를 지정합니다.

  • ai.h2o.mojos.runtime.license.filename - 기본 라이선스 파일 이름을 재정의합니다.

  • ai.h2o.mojos.runtime.signature.filename - 기본 서명 파일 이름을 재정의합니다.

  • ai.h2o.mojos.runtime.watermark.filename - 기본 워터마크 파일 이름을 재정의합니다.

JVM Options for Access Control

  • ai.h2o.mojos.runtime.license.key - 라이선스 키를 지정합니다.

  • ai.h2o.mojos.runtime.license.file - 라이선스 키의 위치를 지정합니다.

  • ai.h2o.mojos.runtime.license.filename - 기본 라이선스 파일 이름을 재정의합니다.

  • ai.h2o.mojos.runtime.signature.filename - 기본 서명 파일 이름을 재정의합니다.

  • ai.h2o.mojos.runtime.watermark.filename - 기본 워터마크 파일 이름을 재정의합니다.

Java에서 MOJO 실행

  1. 새 터미널 창을 열고, 실험 폴더를 만들어 디렉터리를 이 폴더로 변경합니다.

mkdir experiment && cd experiment
  1. 새 파일 DocsExample.java 를 만들어 experiment 폴더에 기본 프로그램을 생성합니다(예: vim DocsExample.java). 다음 콘텐츠를 포함시킵니다.

import ai.h2o.mojos.runtime.MojoPipeline;
import ai.h2o.mojos.runtime.frame.MojoFrame;
import ai.h2o.mojos.runtime.frame.MojoFrameBuilder;
import ai.h2o.mojos.runtime.frame.MojoRowBuilder;
import ai.h2o.mojos.runtime.lic.LicenseException;
import ai.h2o.mojos.runtime.utils.CsvWritingBatchHandler;
import com.opencsv.CSVWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class DocsExample {
    public static void main(String[] args) throws IOException, LicenseException {
        // Load model and csv
        final MojoPipeline model = MojoPipelineService.loadPipeline("klime_mojo.zip");
        // Get and fill the input columns
        final MojoFrameBuilder frameBuilder = model.getInputFrameBuilder();
        final MojoRowBuilder rowBuilder = frameBuilder.getMojoRowBuilder();
        rowBuilder.setValue("petal_wid", "0.2");
        rowBuilder.setValue("class", "Iris-setosa");
        rowBuilder.setValue("sepal_len", "5.1");
        rowBuilder.setValue("petal_len", "1.4");
        frameBuilder.addRow(rowBuilder);
        // Create a frame which can be transformed by MOJO pipeline
        final MojoFrame iframe = frameBuilder.toMojoFrame();
        // Transform input frame by MOJO pipeline
        final MojoFrame oframe = model.transform(iframe);
        // `MojoFrame.debug()` can be used to view the contents of a Frame
        // oframe.debug();
        // Output prediction as CSV
        final Writer writer = new BufferedWriter(new OutputStreamWriter(System.out));
        final CSVWriter csvWriter = new CSVWriter(writer);
        CsvWritingBatchHandler.csvWriteFrame(csvWriter, oframe, true);
    }
}
  1. 실험에 복사된 MOJO 런타임(mojo2-runtime.jar)으로 소스 코드를 컴파일합니다.

javac -cp mojo2-runtime.jar -J-Xms2g -J-XX:MaxPermSize=128m DocsExample.java
  1. 실험에 복사한 라이선스(license.sig)로 MOJO 예시를 실행합니다.

# Linux and OS X users
java -Dai.h2o.mojos.runtime.license.file=license.sig -cp .:mojo2-runtime.jar DocsExample
# Windows users
java -Dai.h2o.mojos.runtime.license.file=license.sig -cp .;mojo2-runtime.jar DocsExample
  1. 다음 출력이 표시됩니다.

model_pred,cluster,petal_wid,class,sepal_len,petal_len
3.4530200678814422,1.0,-0.01619126014214789,1.3624817331603232E-6,2.5224436307972296,-0.5251985209647447