Driverless AI k-LIME MOJO 原因码管道 – Java 运行时

对于已结束的 MLI 实验,用户可下载 k-LIME MOJO。k-LIME MOJO 原因码管道是一种原因码引擎,可在任意 Java 环境中部署,以实时生成原因码。若要获得用于生成 K-LIME 原因码的 Java 运行时 MOJO,可下载 K-Lime MOJO 原因码管道;对于用于生成 K-LIME 原因码和 Shapley 值的 Python 评分管道,可下载 评分管道

请注意:此原因码管道目前不可用于多项实验。

Download k-LIME MOJO button

先决条件

若要运行 k-LIME MOJO 原因码管道,必须满足以下条件。

  • Java 7 运行时环境 (JDK 1.7) 或更高版本。请注意:由于 Java 中有漏洞,建议使用 Java 11+。更多信息,请访问 https://bugs.openjdk.java.net/browse/JDK-8186464

  • 有效的 Driverless AI 许可证。您可以通过托管 Driverless AI 的主机下载 license.sig 文件(通常位于 license 文件夹内)。将许可证文件复制到已下载的 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 编码字符串)

  • 应用程序 classpath:

    • 通过名称为 /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 原因码管道文件

klime_mojo 文件夹包括以下文件/文件夹:

  • domains

  • experimental

  • model.ini

  • models

快速入门

  1. 在已完成的 MLI 页面上,点击 下载 k-LIME MOJO 原因码管道 按钮。

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 运行时的一般示例:

  • 有附加库

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
  • 无附加库

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

请注意:可通过将输入和输出 CSV 参数替换为 `-` 将数据从 stdin 传输到 stdout。

JVM 选项

  • sys.ai.h2o.mojos.parser.csv.keepCarriageReturn (布尔值)- 指定是否在解析后保留回车。默认值为 True。

  • sys.ai.h2o.mojos.parser.csv.stripCrFromLastColumn (布尔值)- 与 OpenCSV 解析器相关问题的解决方法。默认值为 True。

  • sys.ai.h2o.mojos.parser.csv.quotedHeaders (布尔值)- 指定是否在输出的 CSV 文件中引用标头名称。默认值为 False。

  • sys.ai.h2o.mojos.parser.csv.separator (字符)- 指定 CSV 字段之间使用的分隔符。特殊值 `TAB` 可用于制表符分隔的值。默认值为 `,`.

  • sys.ai.h2o.mojos.parser.csv.escapeChar (字符)- 指定用于解析 CSV 字段的转义字符。如果没有指定此值,则不会尝试转义。默认值为空字符串。

  • Sys.ai.h2o.mojos.parser.csv.batch (整数)- 指定引入内存以进行批处理的输入记录数量(决定了占用的内存)。默认值为 1000。

  • sys.ai.h2o.mojos.pipelineFormats (字符)- 当识别到多种格式时,此选项将指定格式的尝试顺序。默认值为 `pbuf,toml,klime,h2o3`.

  • Sys.ai.h2o.mojos.parser.csv.date.formats (字符串)- 指定日期格式。默认值为空字符串。

  • sys.ai.h2o.mojos.exposedInputs (字符串)- 指定输出时需要的输入列的逗号分隔列表。特殊值 `ALL` 表示接受所有输入。默认值为空值。

  • sys.ai.h2o.mojos.useWeakHash (布尔值)- 指定是否使用 WeakHashMap。此值默认设置为 False。启用此设置可缩短 MOJO 加载时间。

用于访问控制的 JVM 选项

  • 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 选项

  • 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 的新文件,在 实验 文件夹中创建您的主程序(例如,通过 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