第13期圆桌会回顾 | FATE的在线组件FATE-Serving2.1.0版本介绍

第13期圆桌会回顾 | FATE的在线组件FATE-Serving2.1.0版本介绍

全程视频回放点击此处

 

9月16日,FATE开源社区第13期圆桌会圆满落幕。本次圆桌会,由FATE团队的资深架构师邓凯老师,为大家介绍FATE的在线组件FATE-Serving2.1.0版本。

接下来带大家回顾经典问答环节,为各位朋友答疑解惑。

问答环节

●   Q1:

serving-admin的service那个页面的weight是什么?

●   A1:

weight就是权重,是我们在服务治理的时候需要关心的一些问题,比方说一个模型有可能分布在三台机器上,但是三机器的资源是不一样的,可能两台机器资源非常好,一台机器CPU非常弱,这时候需要对流量进行一些分配,可以把那两台的weight分成100,然后这边分成50,那么,比较弱的这台机器分的流量就是1/5。


●   Q2:

不用deploy模型吗?

●   A2:

deploy模型有。就是我刚才说的 FATE-Flow推模型的时候分成两个步骤,一个是load,一个是bind。


●   Q3:

能否借助exchange?

●   A3:

exchange是双方不同party之间的一个中间节点,实际上我们会有其他的比这个功能更完善的组件。

比方说,需要考虑到计费、流控、鉴权、路由相关的功能,比现在的exchange要更复杂,是因为本身在线业务就更复杂,它不像是离线传输的都是训练过程中产生的一些数据,而我们在线预测的时候传过去的请求可能每一笔都要计费的。


●   Q4:

看代码,guest是会遍历host,把相关信息发给host,是修改了guest合并多个host结果那个阶段吗?

●   A4:

实际上我们在做2.0.0的时候就已经为多host预测预留了,所以之前的代码会遍历host,但是模型离线推给在线的时候,模型数据是不支持多host预测的。

所以,这次我们是在模型的结构上进行了改动,在线和离线也都进行了一些相关的改动,使其能相互适配。由于我们之前在2.0.0的时候,在机制上设置上已经支持了多host的预测,所以你会在代码上看到会遍历host,把相关信息发给host,就是这个意思。


●   Q5:

想问一下,比如有x1,x2,x3;guest发起在线推理时,有id,x1,x2;host那边是提前上传x3特征值么,如果host没做对应上传,预测时会有什么提示么?

●   A5:

需要分成两种情况:1、在host方ID匹配不到;2、能够匹配到ID,但是特征不完整,无特征或者特征很少。

第一种情况建议由host方报错,判断逻辑可以在host的adaptor中去自定义开发,需要根据自己需求决定。

第二种情况一般不报错。也可以加入自定义逻辑,比如:拿不到特征或者特征命中率低于某个数值就认为这次预测请求失败。


●   Q6:

鉴权这块是怎么设计呢?看默认是没有开启。

●   A6:

我们之前的投产的业务鉴权是放在了中间节点这一块,在两端的鉴权是做的比较弱的一块。鉴权现在是支持了https,有颁发证书,双方安装各自相应的证书再进行一个鉴权。

鉴权的重点是我们放在了中间节点的设计,就是exchange那一块的设计。


●   Q7:

只部署了2台服务器host、guest能否做联邦学习,还是只能做离线联邦?

●   A7:

是可以的。因为在线比离线的需要的资源少多了,如果是离线都能训练的话,在线就一点问题都没有。


●   Q8:

这个支持计费的加强exchange什么时候发布?

●   A8:

我们现在做的一些FATE-Cloud的组件里面有,这些组件开源出去会有计费的一些功能,我们自己也有一些非开源的项目,计费相关的逻辑是比较完善的。


●   Q9:

我理解host方的特征系统接入第三方的服务,在serving时就写好相关的接口。如果我想要更新这个第三方的特征服务,是可以不中断相关的服务么,也就是可以对第三方的特征系统热更新不?

●   A9:

FATE-Serving不关心它的更新逻辑,只要保证你那边设计好接口,我通过这个接口能够访问能够正常就可以。比方说,更新特征的时候,你这个接口至少还是能够访问的,能不能支持热更新是在那个系统去决定,而不是Fate-serving决定,因为这个也没办法决定。


●   Q10:

有没有单纯在在线预测节点做路由转发的exchange节点?

●   A10:

你现在用离线的exchange也是可以进行转发的,只不过只是一个转发功能,没有其他功能。


●   Q11:

我想问一下多host的话,是不是也是要打包多个host的extension的jar包去替换。

●   A11:

如果你自己做实验,你是可以这么做的。正常情况下,如果投产的话,多host意味着是多个公司或者多个部门,获取特征的接口有可能是由不同的系统提供,然后这是需要各公司自行开发的。


●   Q12:

纵向场景里面,进行在线的联邦推理两边数据不需要对齐吗。在实际的业务场景中,如果一方拿到了一条用户的实时数据,另一方并没有该用户的数据怎么办?

●   A12:

一般逻辑是对方没有数据、拿不到特征,这时候是报错的。

(补充:报错逻辑可以在host的adaptor中去自定义开发 ,比如:拿不到特征或者特征命中率低于某个数值就认为这次预测请求失败,也可以做成ID匹配不到也不报错,需要根据自己需求决定。)


●   Q13:

如何做多节点布署(至少3个节点)?

●   A13:

只有在你自己去做实验的时候,你可能搞一个节点,实际上生产环境是至少三个节点,因为使用了zookeeper,zookeeper建议部署奇数个节点1个节点、3个节点、5个节点、7个节点这样子。

所以怎么部署多节点应该是比较简单一个问题,取决于你是怎么规划的。好比说,给你三台机器,你想怎么分配哪台机器部署什么组件,其实你怎么部署都可以,因为它通过了zookeeper寻址,所以只要端口不冲突部署在哪都无所谓。


●   Q14:

麻烦问下exchange是什么角色,之前没有遇到过。

●   A14:

我想应该在离线的时候已经用过rollsite了,对吧?之前我们经常使用rollsite来进行做进行一个转发的。在不同公司有可能它是不同的网络,如果两个公司并不知道对方的存在,它需要一个中间角色进行转发,如果是双方都知道的话,没有必要做这个事情的,就没有必要exchange这个角色,它就是一个路由转换。

(补充说明:在生产环境中,有可能不同的参与方属于不同的公司, 公司与公司之间的网络打通是一个比较繁重的事情,涉及到各个公司的网络策略、带宽分配、安全审计等等事物,exchange就是把整个网络变成一个星型网络,由负责exchange的公司负责对接各个合作方,完成上述工作,这样就减轻了各合作方自行互联的负担。)


●   Q15:

多节点布署(至少3个节点)的相关资料望能提供一下!

●   A15:

其实在文档上我们之前有一个类似的图,可以看一下,如果说觉得不够,可以在群里面给我们提一些建议,我们这边会安排同学去更新文档。


●   Q16:

生产环境部署,更推荐exchange还是非exchange? 还没部署过exchange方式?

●   A16:

需要知道生产环境是你们公司内部不同的部门之间进行一个交互,还是不同的公司之间进行一个交互。如果是不同公司,倾向于有exchange;如果是在内部的话是没必要的。如果在内部交互中使用,只是多一点交互,不能带来特别多的好处。


●   Q17:

老师,请问进行一次在线预测的时间大约是多少?

●   A17:

这个是不定的。可以回答一下我们目前线上的一些情况,大概是在100多毫秒,这是跨了两个公司的预测。因为跨了公网,有可能会耗时严重一点。如果是在公司内部不同部门之间进行内网的交互,应该会好很多。

在线预测的耗时很大部分是放在host那边获取特征那一步,获取特征时候,如果系统做的不够好的话,它的延迟高,整条链路的延迟就很高。


●   Q18:

一套集群如何加载多个模型?起不同的服务ID可以吗?

●   A18:

服务ID是跟模型是一一对应的,如果是多个模型肯定是不同的服务ID,如果是相同的服务ID就是直接覆盖了。不同的模型,相同的服务ID,就可能会导致不正确的选择模型,所以不同的模型一定是不同的服务ID。


●   Q19:

最新版本FATE-Serving对FATE的版本有要求吗?最低版本是多少呢?还是不限版本?

●   A19:

近一年发布的版本都是兼容的,最早以前的(如,两年前的)不一定,因为没有测过。


●   Q20:

直观想,两个纵向联邦参与方能够同时拿到一个用户数据的可能性很小,如果一方拿到数据,另一方没有就报错的话,那在线推理的成功率会不会很低?

●   A20:

这是在你选择合作方的时候是需要考虑的问题。

一般来说需要host那一方的数据比较全面,因为如果你拿不到特征,训练的模型只有一半起作用,这个效果也不会很好。如果说双方的数据非常少,传来传去都找不到自己的那些ID相关的特征,做联邦学习也没有什么太大的意义。一定是有一方的数据非常全,做这个才有意义。


●   Q21:

FATE-Serving2.1.0更新到kubefate上了么?

●   A21:

目前没有。


●   Q22:

支持dsl v2训练出来的模型吗?

●   A22:

FATE-Serving版本 >=2.0.4,FATE版本>=1.5.1的话,dsl v2训练是支持Serving调用的,但dsl v2推到Serving前,需要先deploy训练模型去指定生成的预测推理工作流。FATE dsl v1和dsl v2的一个比较大的区别是v1会帮你自动推导预测工作流,但导致的问题是当模型训练完之后,预测工作流就不可变了,所以dsl v2通过去掉自动推导、增加deploy操作由用户灵活去决定预测的工作流。


●   Q23:

为什么不支持横向模型的预测?

●   A23:

横向模型训练完成之后,每一方都会得到完成的模型,这个和纵向逻辑是不一样的。纵向联邦无论是离线训练还是在线推理阶段,都是需要双方协助的,而横向联邦则是离线训练完成后,在线阶段每一方拿到完整模型,可以单独用自己的数据来直接进行推理。而FATE里面横向联邦逻辑回归、GBDT或者NN,在推理阶段,可以使用第三方引擎来进行推理。基于这种考虑,FATE-v1.7会推出横向模型转成第三方可用的模型文件功能,届时用户可以使用该模型文件,再导入到第三方引擎去做推理即可。

上一篇:PostgreSQL的WAL(3)--Checkpoint


下一篇:JavaScript中Promises/A+规范的实现