3 月 5 日,机器之心联合微众银行开设的公开课《联邦学习 FATE 入门与应用实战》第一课正式开始,微众银行人工智能部高级研究员马国强为大家介绍了联邦学习技术、应用以及开源框架 FATE。第一讲视频回顾:
在第一课的 QA 环节中,马国强讲师回答了小伙伴们的很多疑问,其中一些问题被大家广泛提到,所以我们再次做了精选与编辑,供大家参考,详见文末汇总。
公开课第2课
课程主题:FATE 的部署模型以及基于 Docker-Compose 快速部署联邦学习开发实验环境
课程时间:3 月 12 日 20:00 主题讲解+在线答疑+Live Demo
课程讲师:陈家豪
讲师简介:VMware 研发工程师,专注于容器、网络和分布式技术的研究,同时也积极参与开源社区的建设。在 VMware 任职期间主导或参与完成了多个平台级项目的开发,同时也是开源项目 Hyperledger-Cello 的四位 maintainer 之一。擅长虚拟化、云计算和区块链等技术。
课程摘要:由于 FATE 的组件多,配置复杂等特性导致部署存在于一定的门槛。本课程会从运维的角度来审视 FATE 的各服务,简单介绍部署出现问题时如何定位以及调错。为了降低 FATE 的部署门槛,我们还会介绍如何使用 KubeFATE 和 Docker-Compose 来快速部署一个基于多方的 FATE 开发实验环境。
Live Demo:使用 KubeFATE 与 Docker-Compose 部署两套 FATE 集群,并在其之上运行测试案例。
课前准备:希望在 Live Demo 环节和讲师一起运行测试案例的小伙伴,请提前准备两台主机(Centos7系统的物理机或虚拟机)并安装 Docker(版本18+)与Docker-Compose(版本1.24+)。所有主机之间可以网络互通并通过以下命令下载FATE 1.3的各组件镜像:
docker pull federatedai/fateboard:1.3.0-release docker pull federatedai/meta-service:1.3.0-release docker pull federatedai/python:1.3.0-release docker pull federatedai/roll:1.3.0-release docker pull federatedai/proxy:1.3.0-release docker pull federatedai/federation:1.3.0-release docker pull federatedai/serving-server:1.2.2-release docker pull federatedai/serving-proxy:1.2.2-release docker pull redis:5 docker pull mysql:8
《联邦学习FATE入门与应用实战》学习计划
人工智能广泛应用在各个行业,相应开发者群体也变得丰富多样。他们往往来自不同专业,在不同领域不同场景下进行开发实践,这也造成了 AI 开发者人才的学习成本很高,在专业技能的学习之外还需要理解产业需求和应用场景。为此,机器之心发起「AI 开发者成长计划」,联合人工智能领军企业共同制定主题课程和项目实践,帮助开发者在较短周期内完成从学到用的全过程。
首期「AI 开发者成长计划」由机器之心联合微众银行开设《联邦学习 FATE 入门与应用实战》公开课,并特邀合作伙伴 VMware 带来为期 4 周共 6 期课程,设置主题讲解、项目实操、在线答疑等环节,帮助 AI 开发者从零入门联邦学习。具体学习计划安排如下:
第 1 课精选问答
问题 1:现在的 FATE 版本支持动态加入和退出吗?
目前 FATE 是还没支持这个机制,我们之前有考虑过这个问题,类似于在移动端的应用。我们后续会继续评估可行性并加入到我们的需求列表里面。
问题 2:win 下有支持的计划吗?
目前来说我们还没有在 windows 上直接支持的计划,有一些包在 windows 上使用存在问题,会有些坑,另外在生产中的稳定性也差一点。
问题 3:横向联邦学习的同态加密过程是怎样的?
我们目前在横向联邦里面除横向 LR 外并没有使用同态加密技术,或者说同态加密不是核心,我们主要使用的是 FedAvg 和 Secure-Aggregation,本质上是使用随机噪声的思想,参与者之间两两产生噪声,在 server 端进行抵消。另外横向方面同态加密用得比较少,像 dp(查分隐私)和 mpc 的方案会更常用。
问题 4:秘密共享和 SPDZ 是用在横向还是纵向里?
目前使用在纵向 Pearson 相关性系数计算里面,对于 SPDZ,目前来说我们主要支持两方,MPC 在多方的方案上感觉有点问题,包括我们在调研 pysyft 的时候,发现多方也存在问题。
问题 5:训练一个标准模型需要多久?
和具体算法有关,另外和数据样本量也有关。在我们的测试环境和机器测试中,联邦和非联邦有数十倍到几百倍的差距,但也不会差的特别大,因为纵向联邦里面耗时的主要是同态加密,对于横向联邦,因为使用 FedAvg 机制,其实是比较快的。
问题 6:secureboost 训练比开源慢多少?
SecureBoost 推荐大家用另一种同态加密方法,仿射变换 (IterativeAffine),这是我们第一个 contributor 贡献的,这个方法可以让你有更佳体验。在训练方面,它支持更多数据,训练速度快了很多,对内存的消耗也少很多。在我们测试中,比如单机版,跟 xgboost 差几十倍是有可能的。SecureBoost 影响速度的主要是特征的维度,特征维度比较低的话,差距反而没那么大。特征维度增加的时候,计算梯度直方图,同态加密的加法,是有耗时的,平时看不出,是因为单独加密一个数,耗时是比加法多很多,但是统计梯度直方图的时候,加法的时间消耗就会体现出来。
问题 7:纵向如何做到特征对齐?
其实在我们的分享中有介绍:通过隐私保护交集 (PSI) 技术求出共同样本。大家如果想对 PSI 有更多了解,可以上网搜一下,在我们的 FATE 下也有一些说明,FATE 主要实现的是 RSA 和哈希的方案,另外还有其他的方案,比如说像 OT 或者 Bloom Filter。
问题 8:联邦学习如何应对数据孤岛?
联邦学习就是为了解决数据孤岛而存在的。我们通过刚刚的分享可以看到,通过联邦学习算法,它的效果跟中心化学习的效果是一致的,所以这个问题自然就不存在了。
问题 9:未来会考虑用全同态做技术路线吗?
全同态加密存在一个问题,效率低。当然它是很方便的,因为全同态支持各种操作,像我们用的加法同态加密,它只支持加法和数乘。但是全同态的效率上不去,所以我们目前还没有规划这一块。全同态的效率和半同态相比,有数量级的差距。
另外,大家如有更多疑问,请点击阅读原文进入公开课专栏并在专栏评论区留言讨论,我们将定期邀请讲师在评论区答疑。