FATE(Federated AI Technology Enabler)是由中国深圳的民营新银行微众银行AI部门发起的,并在及其支持下开发的全球首个联邦学习工业级开源框架,旨在支持安全和联合的AI生态系统,可以让企业和机构在保护数据安全和数据隐私的前提下进行数据协作。FATE覆盖横向联邦学习、纵向联邦学习、联邦迁移学习。它在安全底层支持同态加密、秘密共享、散列等多种安全多方计算机制;在算法层支持安全多方计算模式下的逻辑回归、Boosting等主流算法,覆盖常规商业应用场景建模要求;为机器学习、深度学习、迁移学习算法提供强有力的安全计算支持。本节将介绍FATE的技术架构、安全协议,以及安装与部署。
FATE的技术架构可分为4层:从最底层的计算、通信和存储层,到安全协议层,再到联邦学习层,最后是最上层的应用层,如图2-6所示。
FATE的最底层主要包括三个模块,分别是计算模块、联邦服务模块和存储模块。在计算模块中,用户可以使用任意的深度学习框架(例如TensorFlow或PyTorch),并通过EggRoll和Spark支持分布式计算。在联邦模块中,FATE使用RollSite、Pulsar和RabbitMQ进行通信交流。而在存储模块中,FATE支持多种存储形式,包括HDFS、HIVE、LocalFS等存储系统,以及MySQL的数据库。
● 图2-6 FATE框架技术架构
注:图片取自 https : //fate.readthedocs.io/en/latest/zh/architecture/
FATE的安全协议层提供了多种安全多方计算协议的实现和支持。包括同态加密(Homomorphic Encryption)、秘密分享(Secret-Sharing)、不经意传输(Oblivious Transfer)协议等。它为上层的联邦学习提供了安全可靠的分布式计算环境。
FATE的联邦学习核心模块使用FederatedML库。FederatedML包括了许多常见机器学习算法联邦化实现,并且所有模块均采用去耦的模块化方法开发,以增强模块的可扩展性,如下所示。
● 联邦统计:包括隐私交集计算、并集计算、皮尔逊系数、PSI等。
● 联邦信息检索:基于OT的PIR(SIR)。
● 联邦特征工程:包括联邦采样、联邦特征分箱、联邦特征选择等。
● 联邦机器学习算法:包括横向和纵向的线性回归、梯度提升决策树(GBDT)、深度神经网络、迁移学习和无监督学习等。
● 模型评估:提供二分类、多分类、回归评估、聚类评估、联邦和单边对比评估。
● 安全协议:提供了多种安全协议,以进行更安全的多方交互计算。
FATE的应用层包括FATE-Cloud、FATE-Flow、FATE-Board、FATE-Serving。
FATE-Cloud使FATE能够在云环境中进行管理,形成一个安全的联邦数据网络,旨在提供安全、合规的跨组织或组织内部数据协作的云解决方案,提供企业级的联邦学习应用解决方案。FATE-Flow是联邦学习端到端的多方联邦任务安全调度平台,提供生产级服务能力,包括数据访问、组件注册、模型注册、工作和任务调度、多方资源协调、数据流跟踪和实时作业监控等。FATE-Board是FATE的可视化工具套件,如图2-7所示。它主要包括任务管理、任务可视化、任务面板、运行管理等。FATE-Serving是一个用于联邦学习模型的高性能工业化服务系统,专为生产环境而设计,为训练好的模型提供高性能且实时的在线推理。
● 图2-7 FATE-Board功能概览
FATE可以部署在单个主机或多个节点上。因此,它提供了单机部署和集群部署两种方式。
对于单机部署,可以通过Docker方式或者下载安装包两种方式安装。
1.使用Docker镜像安装FATE
官方推荐使用Docker安装,这样大大降低了遇到问题的可能性。主机需要能够访问外部网络,从公共网络中拉取安装包和Docker镜像。对于Docker的版本,官方建议版本是18.09。在安装前,需要先检查8080是否已被占用。可以通过以下命令行进行安装,其中${version}用实际的版本号替换,如:
可以通过以下命令测试是否安装成功。
2.在主机中直接安装FATE
首先,需要检查一下8080、9360、9380端口是否被占用。因为安装OS依赖需要root权限。可以使用root用户进行后续操作。如果不使用root用户,需要root用户授予sudo权限。
接着下载并解压安装包。
然后可以进入解压后的目录,使用bin/init.sh配置并安装FATE服务。该脚本将会自动完成以下内容:
● 安装必要的操作系统依赖项。
● 安装Python环境。
● 安装pypi依赖。
● 安装JDK环境。
● 配置FATE环境变量脚本。
● 配置FATE-Flow。
● 配置FATE-Board。
● 安装FATE-Board客户端。
最后,开启FATE服务。
对于集群部署,FATE支持以Spark或者EggRoll作为机器学习和深度学习的大规模分布式框架。图2-8以EggRoll为例,包括两个主机的集群部署系统架构。其中,EggRoll为FATE框架提供了包括计算、存储和通信等模块在内的底层支撑。
我们暂时不演示集群部署的内容,欢迎读者参考官方文档进行安装测试。
● 图2-8 两个主机的集群部署系统架构