Skip to content
dylanxu edited this page Feb 21, 2020 · 4 revisions

此处会列出关于 FATE-Serving 的常见问题以及相应的注意事项和解决方案。

常见问题

Q:请问集群模式中的host和guest是什么作用的,是表示角色权限吗?还是表示联邦学习中的多方?

A:可以理解为guest为数据使用方,host为数据提供方


Q:请问在线预测流程是怎么样的?

A:双方使用共同模型,由数据使用方(Guest)发起请求,对样本数据进行处理,再获取数据提供方(Host)对样本数据的处理结果,进行整合


Q:请问使用GRPC预测需要在host和guest分别执行python inference_request.py 192.168.1.1:8000吗?

A:只需要在guest执行就好,数据会由guest处理后交给host端再处理,最后返回给客户端一个合并的值


Q:请问在线预测接口中feature_data里的特征两方各写各的吗?是在哪一方执行?

A:在线预测在guest方发起,feature_data的参数会由Guest处理后交给Host端再处理


Q:请问serving-proxy组件的路由表应该要怎么样配置?

A:请参考路由表配置


Q:请问在生产环境使用,是只需要部署FATE-Serving吗,还是需要和FATE一起部署?

A:离线是FATE,在线:FATE-Serving,需要一起部署,离线训练好模型后,fateflow会根据配置文件中serving的地址,将加载模型的请求发送到serving上,这一步需要手动触发,之后FATE-Serving会从eggroll拉取并加载模型,完成之后就可以接受在线请求。


Q:请问用fate_flow发布了publish_load_model.json和publish_online_model.json之后,怎么向fate-serving发在线推理请求?

A:目前fate-serving 提供grpc/http接口对外,接口协议在fate-serving源码中inference_service.proto有提供,http接口仅1.2.0以上版本支持,具体可查看ProxyController.java源码


Q:请问我在在线推理过程中出现110问题,在FATE—Serving-server下的配置文件serving-server.properties中roll应配置谁的ip地址呢?

A:这个需要检查roll的IP端口是否正确,然后还需要检查模型是否在eggroll中存在 IP配置成fate中eggroll中roll 的地址,standaloneStorage Path 在work mode为0的时候使用,只有在fate为单机模式时这样配置。还需要确认的是配置roll的地址时,guest和host不要弄错,弄错也是找不到模型。 目前跟router的互联有两种模式,一种使用zk,另一种不使用zk,如果使用zk,proxy地址写127.0.0.1+端口就好,理论上格式正确都可以,如果使用zk,则将useRegister和useZkRouter都改为true,配置文件中填入zk地址就好 。如果不使用zk则需要在proxy的位置填入正确的router的端口ip


Q:请问一下Fate-serving 已经把模型缓存了,然后他在加载这个缓存模型的时候出现了Illegal char in base64 code错误,是我在哪配置的有问题吗?

A:这种情况可能是存在之前使用过旧的版本,成功推过模型,建议清空用户目录下.fate文件夹内缓存数据


Q:请问你下预测请求中,featureIds的作用是什么吗?

A:这里的值会由guest传递给host端,并由host端通过这些id查询自己的系统获取特征,然后计算并返回guest计算结果,新版1.1.2中有专门的一个字段sendToRemoteFeatureIds用于明确表示这里面的值是会传给对端的


Q:您好,请问在在线推理的过程中,我在guest中load跟bind模型了,然后调用inference_request.py的时候可以得到一个score,但是我修改host端host_data.csv的特征值的时候score并没有改变,查看日志显示modelinfo为null,请问我是应该在host端也要load跟bind模型才行吗?

A:不需要,你在使用 fateflow 推模型的时候,会Guest和Host联动推模型的


Q:请问为什么预测时Guest传入的参数和Host获取到的不一致?

A:请检查serving-server.properties中InferencePreProcessingAdapter的配置,此处配置了前置处理