Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生成的模型,在预测时数据需要双方参与吗? #86

Open
chenxuqing opened this issue Jul 18, 2024 · 8 comments
Open

生成的模型,在预测时数据需要双方参与吗? #86

chenxuqing opened this issue Jul 18, 2024 · 8 comments

Comments

@chenxuqing
Copy link

image

我在secretpad使用A方数据集(id1, x, label1)、B方数据集(id2, y, label2),特征使用(x,y),标签使用(label1)生成模型,并提交模型发布api服务。

进行调用/PredictionService/Predict接口预测服务时:
1、需要双方通过使用http提供的接口数据参与,如A方特征x 和 B方特征y,参与吗?
2、仅由A方独自使用所有特征 x, y 进行预测,这样可以吗?

在预测http数据集服务:
A方(id1,x,label1)
{ "header": { "data": { "custom_value": "asdfvb" } }, "status": { "code": 0, "msg": "success." }, "features": [ { "field": {"name": "id1","type": 3}, "value": {"i64s": [1,2,3,4,5,6]} }, { "field": {"name": "x","type": 3}, "value": {"i64s": [-1,-2,-3,1,2,3]} }, { "field": {"name": "label1","type": 3}, "value": {"i64s": [0,0,0,1,1,1]} } ] }

B方(id2, y, label2)
{ "header": { "data": { "custom_value": "asdfvb" } }, "status": { "code": 0, "msg": "success." }, "features": [ { "field": {"name": "id2","type": 3}, "value": {"i64s": [1,2,3,4,5,6]} }, { "field": {"name": "y","type": 3}, "value": {"i64s": [-2,-1,-2,3,1,2]} }, { "field": {"name": "label2","type": 3}, "value": {"i64s": [0,0,0,1,1,1]} } ] }

调用预测接口参数:

{
    "service_spec": {
        "id": "sgkyhbmd"
    },
    "fs_params": {
        "ant-cathy": {
            "query_datas": [
                "id1",
                "x",
                "label1",
                "id2",
                "y",
                "label2"
            ],
            "query_context": ""
        },
        "ant-kitty": {
            "query_datas": [
                "id1",
                "x",
                "label1",
                "id2",
                "y",
                "label2"
            ],
            "query_context": ""
        }
    }
}

正常返回预测结果。
image
3、但为什么query_datas需要填写完整双方的特征字段?

当我将A方http服务数据改为:
{ "header": { "data": { "custom_value": "asdfvb" } }, "status": { "code": 0, "msg": "success." }, "features": [ { "field": {"name": "id1","type": 3}, "value": {"i64s": [7,8,9]} }, { "field": {"name": "x","type": 3}, "value": {"i64s": [1,0,0]} }, { "field": {"name": "y","type": 3}, "value": {"i64s": [1,-1,2]} } ] }

4、怎么修改query_datas参数都是错的,无法正常调用,为什么?
image
image
image
image

以上4个问题,还请解惑,谢谢!

@BrainWH
Copy link

BrainWH commented Jul 18, 2024

您好,执行模型预测的时候,双方的数据都要参与的。具体地,可以分为以下两种情况:
1、双方都有特征数据的情况下,在模型预测的时候需要正常填写双方的特征
2、若存在一方没有特征数据,该方需要执行mock服务,配置的参数不影响预测
您可以看一下https://www.secretflow.org.cn/zh-CN/docs/serving/0.5.0b0/topics/system/intro

@chenxuqing
Copy link
Author

@BrainWH 发布模型时,需要提供双方提供一个 serving 数据服务 spi 地址,这不是就是说,这个模型只能预测 服务地址 中的的数据啦?不动spi接口数据情况下,可不可以实时通过PredictionService/Predict传参自定义数据呢?
image
image

@BrainWH
Copy link

BrainWH commented Jul 19, 2024

是的,这个模型只能预测服务地址的数据。不动接口数据的情况下,您想要自定义的数据是真实的数据吗?如果是真实数据的话,您可以拿到对方的数据吗?

@chenxuqing
Copy link
Author

chenxuqing commented Jul 19, 2024

@BrainWH 好的!明白了,谢谢啊。

@dmxdxx
Copy link

dmxdxx commented Sep 2, 2024

@BrainWH 好的!明白了,谢谢啊。

哥,为什么我接口调用的预测结果都是一个固定值啊:query_datas这个里面是放传参的字段和参数值么,格式是什么样子的,现在就是调用都是一个固定值,不知道是不是传参有问题?
image

@dmxdxx
Copy link

dmxdxx commented Sep 2, 2024

您好,执行模型预测的时候,双方的数据都要参与的。具体地,可以分为以下两种情况: 1、双方都有特征数据的情况下,在模型预测的时候需要正常填写双方的特征 2、若存在一方没有特征数据,该方需要执行mock服务,配置的参数不影响预测 您可以看一下https://www.secretflow.org.cn/zh-CN/docs/serving/0.5.0b0/topics/system/intro

老师,麻烦问一下为什么我调用模型后不管query_datas里面放什么结果都是一个固定值吖,是因为特征只选了一方的字段吗?

@chenxuqing
Copy link
Author

@BrainWH 好的!明白了,谢谢啊。

哥,为什么我接口调用的预测结果都是一个固定值啊:query_datas这个里面是放传参的字段和参数值么,格式是什么样子的,现在就是调用都是一个固定值,不知道是不是传参有问题?

@dmxdxx 你好。你这个问题,总的来说就是遇到了2个问题。
1、不明白mock服务是做什么的。
2、query_datas不知道如何传入模型需要的参数做真实预测。

1、系统mock是虚拟的服务,如果你在发布模型时选择了它,那系统自动匹配这些参数,并返回一个虚假的预测数据。发布模型的时候如果要真实达到预测,请实现SPI接口,并授权,在发布模型时分配该SPI HTTP服务。
2、预测请求参数query_datas和query_content,都是根据SPI自定义的,具体传参格式要看你的SPI接口是怎么写的,SPI接口参考serving spi章节,query_datas中一个元素对应一行特征的预测数据。

@dmxdxx
Copy link

dmxdxx commented Sep 3, 2024

@BrainWH 好的!明白了,谢谢啊。

哥,为什么我接口调用的预测结果都是一个固定值啊:query_datas这个里面是放传参的字段和参数值么,格式是什么样子的,现在就是调用都是一个固定值,不知道是不是传参有问题?

@dmxdxx 你好。你这个问题,总的来说就是遇到了2个问题。 1、不明白mock服务是做什么的。 2、query_datas不知道如何传入模型需要的参数做真实预测。

1、系统mock是虚拟的服务,如果你在发布模型时选择了它,那系统自动匹配这些参数,并返回一个虚假的预测数据。发布模型的时候如果要真实达到预测,请实现SPI接口,并授权,在发布模型时分配该SPI HTTP服务。 2、预测请求参数query_datas和query_content,都是根据SPI自定义的,具体传参格式要看你的SPI接口是怎么写的,SPI接口参考serving spi章节,query_datas中一个元素对应一行特征的预测数据。

好的,谢谢哥

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants