news 2026/8/22 13:44:42

Openscoring客户端CLI工具完全手册:Deployer、Evaluator与CsvEvaluator实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Openscoring客户端CLI工具完全手册:Deployer、Evaluator与CsvEvaluator实战

Openscoring客户端CLI工具完全手册:Deployer、Evaluator与CsvEvaluator实战

【免费下载链接】openscoringREST web service for the true real-time scoring (<1 ms) of Scikit-Learn, R and Apache Spark models项目地址: https://gitcode.com/gh_mirrors/op/openscoring

Openscoring是一个用于 Scikit-Learn、R 和 Apache Spark 模型实时评分(<1 ms)的 REST 网络服务,而它的命令行客户端(CLI)是操作该服务的利器。本手册带你快速掌握 Openscoring 客户端的三大核心工具:模型部署工具Deployer、单次预测工具Evaluator和 CSV 批量预测工具CsvEvaluator,帮助新手从零完成"部署模型 → 在线评分 → 批量预测"的完整流程。🚀

一、认识 Openscoring 客户端

Openscoring 采用标准的模型生命周期管理:把训练好的模型导出为PMML文档,通过 REST API 部署到服务端,再对输入数据进行毫秒级实时预测。

客户端源码位于openscoring-client模块,核心类一览:

工具类作用对应 REST 操作
Deployer部署 PMML 模型PUT /model/${id}
Evaluator单条记录预测POST /model/${id}
CsvEvaluatorCSV 批量预测POST /model/${id}/csv
Undeployer下线(删除)模型DELETE /model/${id}
DirectoryDeployer目录监听,自动部署/下线组合调用

所有工具都继承自 Application.java,因此天然支持--help参数查看全部选项;ModelApplication.java 则统一提供--model(模型 URI)参数和 JAX-RS 客户端逻辑。

二、快速上手:获取可执行客户端

方式一:从源码构建

git clone https://gitcode.com/gh_mirrors/op/openscoring cd openscoring mvn clean install

构建产物为 uber-JAR(无需额外依赖即可运行):

  • openscoring-client/target/openscoring-client-executable-*.jar
  • openscoring-server/target/openscoring-server-executable-*.jar

打包配置见 openscoring-client/pom.xml(使用 maven-shade-plugin 生成可执行 JAR)。

启动服务端

在另一个终端启动评分服务(主类见 Main.java):

java -jar openscoring-server-executable-*.jar

默认服务地址为http://localhost:8080/openscoring。项目自带的鸢尾花决策树示例模型和测试数据都在openscoring-service/src/etc/目录下,可直接使用:

  • 示例模型:DecisionTreeIris.pmml
  • 示例 CSV 输入:input.csv
  • 示例 JSON 请求:EvaluationRequest.json

三、Deployer:一条命令部署 PMML 模型 📦

Deployer把本地 PMML 文件上传并部署到 Openscoring 服务端,源码见 Deployer.java。

java -cp openscoring-client-executable-*.jar org.openscoring.client.Deployer \ --model http://localhost:8080/openscoring/model/DecisionTreeIris \ --file DecisionTreeIris.pmml

参数说明

参数必填说明
--model模型 URI(决定模型 ID)
--file本地 PMML 文件路径
--help-显示帮助信息

两个实用细节

  1. 自动识别 gzip:Deployer 会读取文件头部魔术字节,若发现是 gzip 压缩文件会自动附加Content-Encoding: gzip请求头,因此.pmml.gz压缩文件可以直接部署,传输更快。
  2. 成功/失败判断:服务端返回 ModelResponse,只要message字段为空即表示部署成功,日志中会输出Deployment succeeded

四、Evaluator:单条记录实时预测 🎯

Evaluator用于"单条预测"模式——把一条记录的各个特征值作为参数传入,返回预测结果,源码见 Evaluator.java。

java -cp openscoring-client-executable-*.jar org.openscoring.client.Evaluator \ --model http://localhost:8080/openscoring/model/DecisionTreeIris \ -XSepal_Length=5.1 -XSepal_Width=3.5 \ -XPetal_Length=1.4 -XPetal_Width=0.2

参数说明

参数说明
--model模型 URI
-Xkey=value动态参数(JCommander@DynamicParameter),可重复使用,每个对应一个模型输入特征

-Xkey=value会组装成 EvaluationRequest 的arguments字段发送给服务端。以鸢尾花模型为例,成功时日志输出预测类别与概率:

Evaluation succeeded: {id: null, results: {Species: setosa, Probability_setosa: 1.0, ...}}

💡 提示:输入字段名称必须与模型 PMML 中 MiningSchema 定义的字段 ID 完全一致,否则会返回 400 错误。可先用curl http://localhost:8080/openscoring/model查看已部署模型的字段清单(接口定义见 ModelResource.java)。

五、CsvEvaluator:CSV 批量预测 📊

当需要一次性对成百上千条数据做预测时,CsvEvaluator是最佳选择。它读取本地 CSV 文件,发送到服务端/csv端点,再把返回的预测结果 CSV 写入输出文件,源码见 CsvEvaluator.java。

java -cp openscoring-client-executable-*.jar org.openscoring.client.CsvEvaluator \ --model http://localhost:8080/openscoring/model/DecisionTreeIris \ --input input.csv --output output.csv

参数说明

参数必填说明
--model模型 URI(客户端会自动补上/csv后缀)
--input输入 CSV 文件
--output输出 CSV 文件
--csv-delimiter-指定分隔符,跳过服务端自动探测
--csv-quote-指定引用字符(需与分隔符同时使用)

几个值得了解的行为

  1. 列名映射,与列顺序无关:输入 CSV 只要包含模型每个输入字段对应的列即可。以 input.csv 为例:

    Id,Sepal_Length,Sepal_Width,Petal_Length,Petal_Width record-001,5.1,3.5,1.4,0.2 record-002,7,3.2,4.7,1.4 record-003,6.3,3.3,6,2.5
  2. Id 列自动透传:若首列列名为Id(不区分大小写)且行数未变,该列会原样复制到输出 CSV,方便结果回溯。

  3. 整体事务:CSV 模式采用"全部成功或全部失败"的隔离级别,任意一行数据不合法都会导致整批失败并返回 400。

  4. 自动探测分隔符:服务端会尝试探测,;\t三种分隔符;格式特殊时可用--csv-delimiter显式指定。

六、Undeployer 与 DirectoryDeployer:模型下线与目录监听 🗑️

Undeployer:删除模型

java -cp openscoring-client-executable-*.jar org.openscoring.client.Undeployer \ --model http://localhost:8080/openscoring/model/DecisionTreeIris

实现见 Undeployer.java,只需--model一个参数即可下线模型。

DirectoryDeployer:PMML 目录守护进程 👀

DirectoryDeployer是运维场景的"神器":它会监听一个目录,文件新增即自动部署、文件删除即自动下线,实现模型热更新。实现见 DirectoryDeployer.java。

java -cp openscoring-client-executable-*.jar org.openscoring.client.DirectoryDeployer \ --model-collection http://localhost:8080/openscoring/model \ --dir pmml

参数说明

参数必填说明
--model-collection模型集合 URI(即/model根路径)
--dir要监听的 PMML 文件目录

工作规则:

  • 启动时先扫描目录内已有文件并全部部署;
  • 模型 ID 取文件名第一个点号之前的部分,例如CreditRisk.pmml部署为模型CreditRisk
  • 之后通过 Java NIOWatchService持续监听文件的创建与删除事件,自动调用 Deployer / Undeployer。

这让你只需把新的 PMML 文件"扔进"目录即可完成模型上线,非常适合 CI/CD 流水线。

七、完整生命周期速查表 ⚡

以鸢尾花决策树模型为例,四条命令跑通全流程:

步骤命令(-cp openscoring-client-executable-*.jar从略)
1️⃣ 部署模型java ... org.openscoring.client.Deployer --model <URI> --file DecisionTreeIris.pmml
2️⃣ 单条预测java ... org.openscoring.client.Evaluator --model <URI> -XSepal_Length=5.1 -XSepal_Width=3.5 -XPetal_Length=1.4 -XPetal_Width=0.2
3️⃣ 批量预测java ... org.openscoring.client.CsvEvaluator --model <URI> --input input.csv --output output.csv
4️⃣ 下线模型java ... org.openscoring.client.Undeployer --model <URI>

其中<URI>形如http://localhost:8080/openscoring/model/DecisionTreeIris

八、常见问题与小贴士 ✅

  • 提示参数错误?所有工具都支持--help,缺失必填参数时也会自动打印用法说明(见 Application.java 中的参数解析逻辑)。
  • 部署报 403?部署/下线操作需要admin角色,默认仅本地网络地址具备;远程部署可通过 NetworkSecurityContextFilter.java 相关配置调整,或使用令牌认证。
  • PMML 文件太大?先 gzip 压缩为.pmml.gz,Deployer 会自动处理编码头,显著降低上传耗时。
  • 想确认模型输入字段?直接访问GET /model/${id},响应中的schema.inputFields即为你需要传入的特征名清单。
  • 更多示例:完整 REST API 说明(含 cURL 调用示例)见 README.md。

总结

Openscoring 客户端 CLI 把"模型部署、单次预测、批量预测、模型下线"四步操作浓缩为四个开箱即用的命令行工具:Deployer负责上线 PMML 模型并自动支持 gzip 传输,Evaluator-Xkey=value快速验证单条预测,CsvEvaluator胜任大规模 CSV 批量评分,再加上UndeployerDirectoryDeployer,从日常开发调试到生产环境模型热更新都能轻松覆盖。配合毫秒级响应速度,这套工具链是 Scikit-Learn、R 与 Apache Spark 模型落地实时评分服务的省心之选。🎉

【免费下载链接】openscoringREST web service for the true real-time scoring (<1 ms) of Scikit-Learn, R and Apache Spark models项目地址: https://gitcode.com/gh_mirrors/op/openscoring

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:39:08

PySpark小文件处理+卡点问题

PySpark原理介绍小文件处理 背景&#xff1a;hive 分区如果产生了大量小文件&#xff0c;不仅会消耗存储元数据quota&#xff0c;还会导致在读取该分区时性能和效率低下&#xff0c;大量的时间浪费在了元数据获取上&#xff0c;同时在数据存储上效率也偏低&#xff0c;存储浪费…

作者头像 李华
网站建设 2026/8/22 13:34:39

X-AnyLabeling 数据标注工具快速上手指南:AI 预标注 + 手动修正

X-AnyLabeling 数据标注工具快速上手指南&#xff1a;AI 预标注 手动修正 【免费下载链接】X-AnyLabeling X-AnyLabeling: A lightweight, efficient, and unified cross-platform desktop application for annotating text, image, video, and multimodal data, combining ve…

作者头像 李华
网站建设 2026/8/22 13:32:30

C++的Concept/Model模式

在 C++(尤其是 C++20 引入 Concepts 之后)中,Concept/Model(概念/模型)是一种非常强大的泛型编程范式。它不仅能让你的模板代码更安全、可读性更高,还能实现优雅的运行时多态(类似于接口,但没有虚函数表的开销)。 为了让你、、彻底搞懂它,我们把它拆成两部分来看: …

作者头像 李华
网站建设 2026/8/22 13:28:38

SMU调试工具:AMD Ryzen 处理器底层调试与核心调参完整指南

SMU调试工具&#xff1a;AMD Ryzen 处理器底层调试与核心调参完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…

作者头像 李华
网站建设 2026/8/22 13:27:37

30秒跑通 ResNet-50:本地图片识别 1000 类的最短路径

30秒跑通 ResNet-50&#xff1a;本地图片识别 1000 类的最短路径 【免费下载链接】resnet-50 项目地址: https://ai.gitcode.com/hf_mirrors/microsoft/resnet-50 想给照片自动打标&#xff1f;ResNet-50 图像分类模型能在你本地完成 1000 类 ImageNet 识别&#xff0c…

作者头像 李华