一、Fate简介
Fate
是一个工业级联邦学习框架,所谓联邦学习指的就是可以联合多方的数据,共同构建一个模型;与传统数据使用方式相比,它不需要聚合各方数据搭建【数据仓库】,联邦学习在联合计算建模的过程中,多方机构之间的数据是不会进行共享的,实现数据的 【可用不可见】;
二、隐私计算
2.1、简介
隐私计算是指在保护数据本身不对外泄露的前提下实现数据分析计算的技术集合,实现数据的【可用不可见】的目的;在充分保护数据和隐私安全的前提下,实现数据价值的转化和释放。
2.2、百万富翁问题
图灵奖得主姚期智院士在1982年提出的【百万富翁】问题:
假设有两个百万富翁,都想比较谁更富有,但是他们都想保护自己的 「隐私」 不愿意让对方或者任何第三方知道自己真正拥有多少钱。如何在保护双方隐私的情况下,计算出谁更有钱呢?
此问题开创了安全多方计算领域,在如今以区块链为先导的一系列可信架构中,多方计算问题是建立机器信任的关键技术之一。
2.3、实现隐私计算的主流技术
2.3.1、多方安全计算
基于密码学的隐私计算技术。
2.3.2、联邦学习
以联邦学习为代表的人工智能与隐私保护技术融合衍生的技术。
2.3.3、可信执行环境
以可信执行环境为代表的基于可信硬件的隐私计算技术。
不同技术往往可以 「组合」 使用,在保证原始数据安全和隐私性的同时,完成对数据的计算和分析任务。
三、联邦学习
3.1、横向联邦
指的是在联合的多方当中,【特征】是相同的,但是【用户】不一样;那么通过联合呢,就可以在训练模型时「扩展样本数量」;例如:有两家不同地区银行(北京与广州)由于银行间的业务相似,所以数据的特征(字段)大概率是相同的;但是它们的用户群体分别来自北京与广州的居住人口,用户的交集相对较小;这种场景就比较适合使用 「横向联邦」 用于增加模型训练的用户数据 「扩展数据量」
![](https://img-blog.csdnimg.cn/e09980f3746a4e929b330a888a686012.png)
3.2、纵向联邦
指的是在联合的多方当中,各方的【用户】重叠较多,但是它们的【特征】是不一样的,那么通过联合呢,就可以在训练模型时【扩展特征维度】;例如:同一地区的商场与银行,它们的用户群体很有可能包含该地的大部分居民,用户的交集可能较大;由于银行记录的都是用户的收支行为与信用评级,而商场则保有用户的购买历史,因此它们的用户特征交集较小;这种场景就比较适合使用【纵向联邦】,用于增加模型训练的特征数量【扩展模型能力】
![](https://img-blog.csdnimg.cn/d9868c82ccbe4729b10adbfa9c663ac1.png)
四、Fate
4.1、简介
FATE
(Federated AI Technology Enabler)是微众银行人工智能团队自研的全球首个联邦学习工业级开源框架,它提供一种基于数据隐私保护的安全计算框架,为机器学习、深度学习、迁移学习算法提供强有力的安全计算支持。并内置保护线性模型,树模型以及神经网络在内的多种机器学习算法。
github地址:https://github.com/FederatedAI/FATE
4.2、Fate中的三中角色
4.2.1、Guest
为数据的应用方,指的是在实际的建模场景中有业务需求去应用这些数据;并且在纵向算法中,Guest 往往是有标签 y 的一方。
4.2.2、Host
为数据的提供方,通常它只是一个合作的机构负责提供数据来辅助 guest 完成这个建模,只是帮助提升训练效果。
4.2.3、Arbiter
为第三方协作者,用来辅助多方完成联合建模的,不提供数据主要是负责发放公钥,加解密,还有聚合模型等功能。
五、部署
5.1、安装镜像
5.1.1、设置环境变量
作用:用于指定Fate的版本
export version=1.8.0
5.1.2、拉取镜像
docker pull federatedai/standalone_fate:${version}
![](https://img-blog.csdnimg.cn/fe36c361e0ea45ebb8a452d06b5b2cad.png)
5.2、启动容器
5.2.1、启动
docker run -d --name standalone_fate -p 8080:8080 federatedai/standalone_fate:${version};
![](https://img-blog.csdnimg.cn/d224e3da92ff423997caf7ee979c272c.png)
5.2.2、查询正在运行的容器
![](https://img-blog.csdnimg.cn/3854023206bb491ca106dc84d3a5e7f2.png)
六、测试
Fate里面自带了测试任务
6.1、进入Fate容器内部
docker exec -it 385f572b910a bash
6.2、启动Toy测试
flow test toy -gid 10000 -hid 10000
![](https://img-blog.csdnimg.cn/9b7f8d05e557467caa7cfff966432798.png)
6.3、结果
![](https://img-blog.csdnimg.cn/36b33b7f357b4a429bbd6c1529b031a1.png)
七、图形化界面
7.1、登录FATEBoard
http://192.168.72.138:8080/#/login
用户名/密码:admin/admin
![](https://img-blog.csdnimg.cn/038f600d976c4b03a14e435ce14a214b.png)
7.2、点击右上角的JOBS按钮查询Toy测试的运行任务
![](https://img-blog.csdnimg.cn/182c639453634a47aa4381328a65d9ee.png)
因为是联邦学习,所以看到 guest 和 host 两方角色的任务。