FATE: 一种联邦学习框架
Table of Contents
1. 联邦学习基本概念
之前听学长讲过关于联邦学习的汇报,但后来发现该报告无法cover阅读文档时所出现的问题,因此还是需要自己再补充一些知识。
根据目前的学习,联邦学习目前可以分成三部分:横向联邦学习、纵向联邦学习和联邦迁移学习。 经典的联邦学习的思路是,在本地进行模型训练,将训练过程中的梯度信息回传到服务器(或互相传递),从而实现无数据沟通下的模型整体更新。 下面基于该概念理解上述所说的三个部分。
首先是横向和纵向的问题,这主要是针对于数据讨论的。可以想象一个坐标轴,横轴代表数据的特征,纵轴代表每个特征下数据的个数。 如此一来,整张图便是数据的特征分布图。针对于这张图,如果x轴不变,尝试通过多机机制实现对y轴的扩充,也就是在保持特征空间不变的前提下扩充样本数目,那么就是纵向联邦学习; 与之相反,如果样本数目是充足的,重点在于通过扩展样本表达使得模型可以覆盖更广的特征空间,那么这种联邦学习就是横向的。
如此来看,横向和纵向应对的场景是:横向更偏向那些做同样事情的节点的增多;而纵向偏向对有不同侧重的节点的聚合。 那么,什么是联邦迁移学习呢?
联邦迁移学习就是,多机上的数据,一方面特征空间不同,另一方面数量都是稀缺的。换而言之:我们既需要用他们去扩展样本空间分布,也需要用他们去提升每一个分布点下的样本数。 再换句话说,就是又要横向,又要纵向。
FATE就是这样的一个框架。
2. 安装
官网提供了两种安装方式,即单机安装与集群安装。从这里了解到细节。 笔者没有集群,先考察单机安装模式。单机安装模式中推荐方法是实用docker。
docker即容器技术,也是目前最常用的解决系统环境依赖的解决方案,可以理解成系统层面的environment box。 关于对docker的具体介绍,可以参照这里,也可以查看之前的笔记。总而言之,当安装docker完成之后,剩下的任务就是下载对应的image,然后安装使用了。
这一部分操作包括以下几个部分:
## install #Get code wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone_fate_${version}.tar.gz tar -xzvf docker_standalone_fate_${version}.tar.gz #Execute the command cd docker_standalone_fate_${version} bash install_standalone_docker.sh # where ${version} should be replaced into docker version. ## unit test CONTAINER_ID=`docker ps -aqf "name=fate"` docker exec -t -i ${CONTAINER_ID} bash bash ./python/federatedml/test/run_test.sh ## install more tool pip install fate-client pip install fate-test ## see the fateboard access via browser with http://hostip:8080
如此一来,基本上fate就安装完成了。是不是也没有什么可怕的?
3. FATE总览
根据官网的介绍,fate主要包括以下几个大的板块:
- FederatedML: 顾名思义,做机器学习的。
- FATE Serving:提供联邦学习算法(模型)的。
- FATEFlow:提供pipeline的。
- FATEBoard:做前端的,类似于tensorboard之于tensorflow。
- Federated Network: 不详。
- KubeFATE:听名字可以看出来,但是我不懂。
不妨先根据fate的demo进行测试
4. fate demo测试
目前fate支持两个版本,官方支持使用v2,因此后续就以v2为例子进行。注意:即使官方版本是1.x.x版本(例如我使用时官方推荐版本是1.6.1),也是可以使用v2的!
官方的v2版本demo是无法直接运行的(直接运行会报错)。我怀疑可能是开发者为了测试我的开发能力。此处测试的demo是AI界的hello word,即在minist数据集上用Alexnet训练一个图像数字判别器。链接在这里。
(被叫去开会了,有空补充!~)