secretpad icon indicating copy to clipboard operation
secretpad copied to clipboard

SecretPad集成后模型调用问题

Open Yaojh20302 opened this issue 5 months ago • 11 comments

应用集成隐语平台(SecretPad-All-In-one方式安装)后,在隐语平台中完成了训练流的创建、运行及发布后,上层应用中如何以自定义的参数调用训练中训练好的模型,从开发文档中没有找到SecretPad有类似接口的提供,请问如何实现?

Yaojh20302 avatar Jul 24 '25 03:07 Yaojh20302

可以先看下这个流程:https://www.secretflow.org.cn/zh-CN/docs/secretpad-all-in-one/v1.11.0b1/p2p_deploy/model_deployment

wangzul avatar Jul 24 '25 12:07 wangzul

可以先看下这个流程: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

wangzul avatar Jul 24 '25 12:07 wangzul

感谢回复。参照参考流程,调用batchQuery成功,可查询到SecretPad页面上发布的模型。我创建的训练流使用的是自带的"联合圈人模板",训练流流程如下:

Image

调用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" } } }'

Yaojh20302 avatar Aug 11 '25 07:08 Yaojh20302

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 } ] } ] } 还有一个问题:预测接口调用时,无论传递什么参数,响应消息中返回的预测结果值都一样。什么原因?

Yaojh20302 avatar Aug 15 '25 02:08 Yaojh20302

是按照这个文档流程走的吗?

wangzul avatar Aug 15 '25 07:08 wangzul

  1. http数据源注册
  2. 模型发布 Image
Image 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的值,预测逻辑和输出为自己的模型配置 预测的输入为下图

Image

wangzul avatar Aug 15 '25 07:08 wangzul

是按照文档说明发布的模型。 我的意思:按照你上文给的例子,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",结果响应中返回的预测结果相同。

Image

这个结果不正常吧?

实际运行结果与文档https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.6.0b0/tutorial/run_sf_serving_with_api_cn中一致:

Image

疑问:这里alice和bob侧各传了三个参数,结合响应应该是传入了三条测试数据吧,如果每条测试数据输入有多个值,比如这里的"a",那么应该如何写呢?是"a1, a2, a3"这种逗号分隔吗? 从响应消息看,三条测试数据的预测结果完全一致,正常吗?

Yaojh20302 avatar Aug 18 '25 07:08 Yaojh20302

Image 这里的添加Http数据,页面如何填写,比如"SPI数据地址"如何获取,有详细的说明吗?但从现在的文档无法指导数据添加

Yaojh20302 avatar Aug 21 '25 08:08 Yaojh20302

  1. http数据源注册
  2. 模型发布

Image Image 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的值,预测逻辑和输出为自己的模型配置 预测的输入为下图

Image

请确认是否是按照这个步骤执行的

wangzul avatar Aug 26 '25 09:08 wangzul

数据源

可以先看下这个流程: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. 添加数据源后,发布模型是可以选择数据源

Image

整体按照这个文档来 最终执行预测参考这个文档来 如果看不懂,请标注哪里看不懂,文字+截图 这样方便指定。

wangzul avatar Aug 26 '25 10:08 wangzul

数据源

可以先看下这个流程: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. 添加数据源后,发布模型是可以选择数据源

Image 整体按照这个[文档](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

wangzul avatar Aug 26 '25 10:08 wangzul