Skip to content

如何加载模型及验证2.0

forgivedengkai edited this page Aug 20, 2020 · 1 revision

如何加载模型及验证

Tips:源码中提供了简单的LR模型用于进行简单测试,可以在没有安装FATE的情况下使用该模式。将 example/model_cache_example.zip 解压至guest与host双方serving-server实例部署目录下的.fate目录下(若是不存在可手动新建该目录),重启即可自动加载模型并绑定到lr-test

前面介绍了如何安装各个组件,在各组件都成功安装后,接下来需要将模型推送至serving-server。 推送模型的一般流程是

  1. 通过FATE建模
  2. 分别部署guest方 Fate-serving 与host方Fate-serving
  3. 分别配置好guest方Fate-flow与guest方Fate-serving、host方Fate-flow 与host方Fate-serving ,Fateflow配置见github上的介绍,下文简单罗列了Fateflow的配置,可用作参考。
  4. Fate-flow推送模型
  5. Fate-flow将模型绑定serviceId

6 . 以上操作完成后,可以在serving-admin页面上查看模型相关信息(此步操作非必需)

  1. 可以在serving-admin页面上测试调用(此步操作非必需)

具体的工作流程如下图所示 蓝色为guest集群,灰色代表host集群

image-20200818155326883

FATE-Flow的配置(1.4.x 版本)

在执行模型的推送和绑定操作之前,需要先配置FATE-Flow,并重启FATE-FLOW:

注意多方都需要修改成各自FATE-Serving的实际部署地址

1.未启用注册中心

  • 修改arch/conf/server_conf.json,填入FATE-Serving集群实际部署serving-server服务的ip:port,如:
"servings": [
    "192.168.1.1:8000",
    "192.168.1.2:8000"
]
  • 重启FATE-Flow服务

2.启用注册中心

  • 修改部署目录下arch/conf/base_conf.yaml
use_registry: true
zookeeper:
    hosts:
     - '192.168.1.1:2181'
     - '192.168.1.1:2182'

其中ZOOKEEPER_HOSTS填入FATE-Serving集群实际部署Zookeeper的ip:port

  • 若zookeeper开启了ACL,则需要添加以下配置,否则略过此步骤。修改部署目录下arch/conf/base_conf.yaml
zookeeper:
    use_acl: true
    user: fate
    password: fate

其中usepassword填入FATE-Serving群实际部署Zookeeper的用户名与密码

服务生效

  • 重启FATE-Flow服务

当上述两种情况都配置了的情况下,会默认使用zookeeper模式。

3.模型发布

配置路径:$pythonpath/fate_flow/examples/publish_load_model.json

修改内容:将实际任务配置(initiator, role, job_parameters)进行修改,请确保model_idmodel_version与离线训练的模型的相同。

配置格式:

{
    "initiator": {
        "party_id": "10000",
        "role": "guest"
    },
    "role": {
        "guest": ["10000"],
        "host": ["10000"],
        "arbiter": ["10000"]
    },
    "job_parameters": {
        "work_mode": 1,
        "model_id": "arbiter-10000#guest-9999#host-10000#model",
        "model_version": "202006122116502527621"
    }
}

4.模型绑定

配置路径:$pythonpath/fate_flow/examples/bind_model_service.json

修改内容:自定义service_id,后续将利用该service_id将模型绑定到模型服务中。将实际任务配置(initiator, role, job_parameters)进行修改,请确保model_idmodel_version与离线训练的模型的相同。

配置格式:

{
    "service_id": "",
    "initiator": {
        "party_id": "10000",
        "role": "guest"
    },
    "role": {
        "guest": ["10000"],
        "host": ["10000"],
        "arbiter": ["10000"]
    },
    "job_parameters": {
        "work_mode": 1,
        "model_id": "arbiter-10000#guest-10000#host-10000#model",
        "model_version": "202006122116502527621"
    },
    "servings": [
    ]
}

常见问题

常见问题 可能原因 解决方案
加载(load)/绑定(bind)模型提示“Please configure servings address” 用户未在server_conf中配置FATE-Serving的ip地址及端口 正确修改server_conf中的serving组件配置,重启fate_flow_server后进行重试。
加载(load)模型提示“failed” FATE rollsite或serving组件未启动 检查$pythonpath/logs/fate_flow/fate_flow_stat.log,确定是否有组件未启动,如果有,请正确启动组件后重试。
绑定(bind)模型提示“no service id” bind任务配置文件中未指定service_id 修改bind任务配置文件,自定义指定service_id。

更多FATE-Flow问题请查看FATE-Flow