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} |
CsvEvaluator | CSV 批量预测 | 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-*.jaropenscoring-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 | - | 显示帮助信息 |
两个实用细节:
- 自动识别 gzip:Deployer 会读取文件头部魔术字节,若发现是 gzip 压缩文件会自动附加
Content-Encoding: gzip请求头,因此.pmml.gz压缩文件可以直接部署,传输更快。 - 成功/失败判断:服务端返回 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 | - | 指定引用字符(需与分隔符同时使用) |
几个值得了解的行为:
列名映射,与列顺序无关:输入 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.5Id 列自动透传:若首列列名为
Id(不区分大小写)且行数未变,该列会原样复制到输出 CSV,方便结果回溯。整体事务:CSV 模式采用"全部成功或全部失败"的隔离级别,任意一行数据不合法都会导致整批失败并返回 400。
自动探测分隔符:服务端会尝试探测
,、;、\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 NIO
WatchService持续监听文件的创建与删除事件,自动调用 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 批量评分,再加上Undeployer与DirectoryDeployer,从日常开发调试到生产环境模型热更新都能轻松覆盖。配合毫秒级响应速度,这套工具链是 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),仅供参考