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 评分管道,可下载 评分管道 。
请注意:此原因码管道目前不可用于多项实验。
先决条件¶
若要运行 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"
快速入门¶
在已完成的 MLI 页面上,点击 下载 k-LIME MOJO 原因码管道 按钮。
若要直接运行 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¶
打开新的终端窗口。创建实验文件夹,并更改该文件夹的目录:
mkdir experiment && cd experiment
通过创建名为 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); } }
使用复制到实验中的 MOJO 运行时文件 (mojo2-runtime.jar) 编译源代码:
javac -cp mojo2-runtime.jar -J-Xms2g -J-XX:MaxPermSize=128m DocsExample.java
使用复制到到实验中的许可证 (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
将显示以下输出:
model_pred,cluster,petal_wid,class,sepal_len,petal_len 3.4530200678814422,1.0,-0.01619126014214789,1.3624817331603232E-6,2.5224436307972296,-0.5251985209647447