联邦学习实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.3 FATE编程范式

FATE作为一个工业级的联邦学习框架,为开发人员提供了丰富的编程接口和模型构建方式。用FATE构建联邦学习模型有以下两种不同的编程范式。

• 组件化配置:即用户将模型训练拆分为不同的任务,每一个任务以组件的形式通过有向无环图(DAG)图相连,联邦模型训练所需要的有关参数都在配置文件中定义。在该模式下,用户只需要自定义和提交配置文件,就可以直接执行联邦训练。

• 脚本编程:FATE提供API接口,用户通过脚本编程的方式实现联邦模型,这与直接使用Python编程相似。

截至2020年11月,FATE最新版本v1.5的脚本编程尚处在开发阶段。从稳定性角度考虑,本书暂时只使用组件化配置来阐述联邦学习建模。使用组件化配置构建联邦学习模型,需要提供两个配置文件。

• dsl配置文件:FATE内置的一套自定义领域特定语言。在dsl中,常见的机器学习任务会被划分为不同的模块,如数据读写data_io,模型训练、模型评估等可以通过一个有向无环图组织起来。

• conf配置文件:在dsl配置文件中,不同的组件模块有不同的参数配置,这些参数统一放在conf文件中设置。比如在数据读写模块中,要指定各个参与方数据的文件路径;在模型训练中,要指定模型训练的迭代次数、batch大小、最优化方法等。

为了方便后面的统一讲解,假设用户安装FATE的主目录为fata_dir,dsl和conf是FATE运行的核心配置文件。本书的第5章和第6章将介绍dsl和conf的入门配置,以用于FATE进行横向建模和纵向建模。尽管如此,由于FATE版本的迭代,且囿于本书的篇幅和写作目的,有很多参数和功能不会在本书中介绍,因此建议读者关注FATE官方有关运行配置的最新版本使用说明(链接4-3)。

dsl模块设置和conf参数设置都完成后,调用fate_flow模块下的fate_flow_client.py,在命令行中输入如下命令:

将看到输出的如下信息。读者可以在浏览器中输入board_url字段中的网址信息:

输入后,将看到如图4-4所示的FATEBoard界面,在此界面中,会看到有关当前算法的任务流图。

在接下来的第5章和第6章中,将更详细地介绍如何使用FATE来构建横向联邦学习和纵向联邦学习。

利用FATE的组件化配置开展联邦学习项目和产品开发,主要有下面的优点:

图4-4 FATEBoard界面

• 提供了多种安全策略机制,包括同态加密、秘密共亨等安全计算协议,保证数据的隐私安全;

• 部署简单方便,用户只需提供配置文件信息便可构建联邦学习模型;

• 提供了可视化的界面,方便用户检查模型和结果;

• 支持常用的机器学习算法。提供了包括联邦特征工程、联邦模型训练和联邦模型评估在内的完整流程。

当前组件化配置的模式也存在一些不足(这也是我们开发脚本编程的原因),即模型很难自定义设置。当前的组件化配置使用的学习模型都已经内置在FATE中,但在某些场景中,用户需要根据实际情况来自定义模型、损失函数等,这就要求用户熟悉FATE的代码,深入FATE内部进行修改。