SecretPad集成后模型调用问题
应用集成隐语平台(SecretPad-All-In-one方式安装)后,在隐语平台中完成了训练流的创建、运行及发布后,上层应用中如何以自定义的参数调用训练中训练好的模型,从开发文档中没有找到SecretPad有类似接口的提供,请问如何实现?
可以先看下这个流程:https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/p2p_deploy/model_deployment
可以先看下这个流程:https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/p2p_deploy/model_deployment
也可以参考:https://github.com/secretflow/serving/issues/152
感谢回复。参照参考流程,调用batchQuery成功,可查询到SecretPad页面上发布的模型。我创建的训练流使用的是自带的"联合圈人模板",训练流流程如下:
调用PredictionService/Predict'接口进行模型预测时,fs_params部分的参数该如何填写呢?我参照训练流画布中原始数据格式构造如下参数调用无响应:
curl --location 'http://127.0.0.1/PredictionService/Predict'
--header 'Host: fxcicmde-service.alice.svc:27789'
--header 'Kuscia-Source: alice'
--header 'Content-Type: application/json'
--data '{
"service_spec": {
"id": "fxcicmde"
},
"fs_params": {
"alice": {
"query_datas": [
"A025",
"41.7",
"10.7",
"0",
"5533.82",
"1",
"0",
"3",
"986.7",
"1",
"7",
"8",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"1",
"1",
"0",
"0"
],
"query_context": "test"
},
"bob": {
"query_datas": [
"A025",
"0",
"1",
"0",
"0",
"0",
"0",
"0",
"1",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"1"
],
"query_context": "test"
}
}
}'
https://www.secretflow.org.cn/zh-CN/docs/serving/0.9.0b0/intro/tutorial#do-predict
curl --location 'http://127.0.0.1:9010/PredictionService/Predict'
--header 'Content-Type: application/json'
--data '{
"service_spec": {
"id": "test_service_id"
},
"fs_params": {
"alice": {
"query_datas": [
"a"
]
},
"bob": {
"query_datas": [
"a"
]
}
}
}'
官网文档中对于使用Serving API接口进行预测的示例中,fa_params-->alice-->query_datas-->"a",以及fs_params-->bob-->query_datas-->"a",传递的参数"a"具体代表什么意思?使用不同的"service-id"所代表的模型调用预测接口时,query_datas中应该传递什么参数,各代表什么意义,在文档中找不到说明,能详细解释下吗?
从实际环境验证来看,以上接口的调用,要求alice、bob两个节点都需要存在,且各自的query_datas中参数数量需一致,传多个参数时得到的多个预测结果也是一致的(对平台自带的联合圈人模板发布的模型,接口调用响应如下),不清楚具体什么意思。 { "header": { "data": {} }, "status": { "code": 1, "msg": "" }, "service_spec": { "id": "fxcicmde" }, "results": [ { "scores": [ { "name": "pred_y", "value": 0.7143446146030705 } ] }, { "scores": [ { "name": "pred_y", "value": 0.7143446146030705 } ] } ] } 还有一个问题:预测接口调用时,无论传递什么参数,响应消息中返回的预测结果值都一样。什么原因?
是按照这个文档流程走的吗?
- http数据源注册
- 模型发布
curl --location 'http://127.0.0.1/PredictionService/Predict' \
--header 'Host: 服务id-service.alice.svc:24692' \
--header 'Kuscia-Source: alice' \
--header 'Content-Type: application/json' \
--data '{
"service_spec": {
"id": "服务id"
},
"fs_params": {
"alice": {
"query_datas": [
"1"
],
"query_context": "test"
},
"bob": {
"query_datas": [
"1"
],
"query_context": "test"
}
}
}'
如果说你是按照serving 提供的spi测试服务,那边a代表的是预测值id的值,预测逻辑和输出为自己的模型配置 预测的输入为下图
是按照文档说明发布的模型。 我的意思:按照你上文给的例子,alice节点和bob节点的传参只有一个"1",这里的"1"代表什么意义? 如果模型调用的输入,要求alice节点和bob节点传递多个参数,这里该怎么写?另外,还发现同一模型,传递多组不同预测值(例如alice节点:"49.1, 14.1, 1, 4267.84, 1, 0, 14, 1566, 3, 21, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1", "21.4, 9.4, 0, 2494.86, 0, 0, 7, 503.1, 1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0"), bob节点:"0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1", "1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0",结果响应中返回的预测结果相同。
这个结果不正常吧?
实际运行结果与文档https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.6.0b0/tutorial/run_sf_serving_with_api_cn中一致:
疑问:这里alice和bob侧各传了三个参数,结合响应应该是传入了三条测试数据吧,如果每条测试数据输入有多个值,比如这里的"a",那么应该如何写呢?是"a1, a2, a3"这种逗号分隔吗? 从响应消息看,三条测试数据的预测结果完全一致,正常吗?
- http数据源注册
- 模型发布
![]()
3. 发起预测 curl --location 'http://127.0.0.1/PredictionService/Predict'
--header 'Host: 服务id-service.alice.svc:24692'
--header 'Kuscia-Source: alice'
--header 'Content-Type: application/json'
--data '{ "service_spec": { "id": "服务id" }, "fs_params": { "alice": { "query_datas": [ "1" ], "query_context": "test" }, "bob": { "query_datas": [ "1" ], "query_context": "test" } } }' 如果说你是按照serving 提供的spi测试服务,那边a代表的是预测值id的值,预测逻辑和输出为自己的模型配置 预测的输入为下图![]()
请确认是否是按照这个步骤执行的
数据源
可以先看下这个流程:https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/p2p_deploy/model_deployment
也可以参考:secretflow/serving#152
1.这个地方有说明如何获取http数据源地址 2. 添加数据源后,发布模型是可以选择数据源
数据源
可以先看下这个流程:https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/p2p_deploy/model_deployment
也可以参考:secretflow/serving#152
1.这个地方有说明如何获取http数据源地址 2. 添加数据源后,发布模型是可以选择数据源
整体按照这个[文档](https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/center_deploy/model_deployment)来 最终执行预测参考这个[文档](https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.13.0b0/tutorial/run_sf_serving_with_api_cn)来 如果看不懂,请标注哪里看不懂,文字+截图 这样方便指定。
文档可以看下最新版本的https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/main/quick_start/p2p#id17
3. 发起预测
curl --location 'http://127.0.0.1/PredictionService/Predict'
整体按照这个[文档](https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/center_deploy/model_deployment)来 最终执行预测参考这个[文档](https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.13.0b0/tutorial/run_sf_serving_with_api_cn)来 如果看不懂,请标注哪里看不懂,文字+截图 这样方便指定。