联邦学习开源框架Fate主要更新
2020-06-12 本文已影响0人
Wayne维基
背景
FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的开源项目,为联邦学习生态系统提供了可靠的安全计算框架。FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。
FATE官方网站:https://fate.fedai.org/
版本1.4.0
联邦机器学习(Federated Machine Learning)
- Home Secureboost(基于xgboost的一个加密boost)
- 对线性模型的AIC/BIC的逐步回归
- Hetero Optimal Feature Binning(异构优化的特征分箱),支持iv/gini/chi-square/ks且允许 非对称分箱方法
- 支持AI生态:引入了pytoch包来支持人神经网络
- 同构框架解构,简化同构相关算法的开发
- 为不同算法提供更早的停止策略
- 多类型分类的本地参照物
- 一致的预测评估
- 有效性策略优化,训练有效性的3倍速
Fate-flow(流的支持)
- 重构模型管理,本地文件存储,更易伸缩且信息更丰富的存储解构
- 在可靠的分布式系统上,支持模型的导入导出,存储
- 任务队列使用mysql管理而不是redis,减少系统的复杂性
- 提供上传客户端上传本地文件
- 自动检测存在的表且提供删除选项
- 系统,算法,调度日志的隔离,调度日志可以被独立审查
Eggroll
- 稳定性提升:新的资源管理组件有全新的会话机制,会话出错后,管理组件呢也能通过简单的方法调用进行清理。去掉了存储服务,没有c++/本地库文件需要编译。联邦学习算法在28%的丢包率下依然工作。
- 性能提升:在Eggroll2上,联邦学习算法有极大的性能提升,部分算法有10倍性能提升,联邦场景下,join interface比pyspark快16倍
- 用户体验提升:快速开发,支持maven,pip,config和start。轻量级依赖,可以从requirements.txt(python的依赖文件),pom.xml(java的依赖文件)看出。简易的调试,必要的上下文提供,实时的运行状态可以在日志和数据库中查看。一些jvm应用demo提供。
版本1.3.0
FederatedREC(联邦推荐算法)
- 添加联合推荐子模块
- 添加异构因子分解
- 添加同构因子分解
- 添加异构矩阵分解
- 添加异构奇异值分解
- 添加异构SVD++(满足最近邻分解)
- 添加异构广义矩阵分解
联邦机器学习
- 支持非均匀一般线性模型(异构LR、异构LinR、异构poissonR)中用稀疏数据训练
- 修正了32M分位数限制,以支持更高的特征维度
- 修正了SecureBoost直方图统计的32M限制,以支持更高的特征维度训练。
- 在OneHot编码器中添加异常参数和输入数据检测
- 修复在训练过程中,不传递验证数据来适应支持数据评估验证的过程
Fate-Flow
- 添加清除job的CLI(命令行交互界面)以清除输出和中间结果,包括数据、度量和会话
- 支持通过CLI获取表命名空间和输出数据的名称
- 在某些特殊情况下修复删除job不成功的执行
- 改进日志系统,添加更多异常和运行时状态提示
版本1.2.0
联邦学习
- 添加异构深层神经网络
- 添加秘密共享协议SPDZ
- 在SPDZ中加入异构特征相关算法并支持异构Pearson相关性计算
- 增加异构的SQN优化器,可用于异构回归和异构回归,可显著降低通信成本
- 支持扩展的重复id取交集
- 异构特征分箱中的多主节点支持
- 异构特征筛选中的多主节点支持
- 支持异构特征分箱中离散特征的IV计算
- 支持异构特征分箱中原始特征值到WOE的转换
- 在异类特征筛选中添加手动过滤器
- 支持性能与sklearn' logistic回归的对比
- 联邦训练迭代过程中对象/表的自动清理
- 提高大对象的传输性能
- 添加用于提交和运行任务的自动脚本
Fate-Flow
- 添加数据管理模块,用于在运行的作业中记录上传的数据表和模型的输出,以及查询和清理的命令行工具。
- 支持注册中心简化FATE Flow和FATE Serving之间的通信配置
- 重构模型发布逻辑,命运流将模型直接推向fate服务。将fate服务和Eggroll分离,离线和在线架构只通过fate-flow连接。
- 提供CLI查询数据上传记录
- 按行上传和下载数据支持进度统计
- 添加一些异常诊断提示
- 支持向任务添加注释信息
- 本机部署
- 修复EggRoll启动脚本中的错误,添加mysql,redis启动选项。
- 禁用mysql服务的主机名解析配置。
- 使用自动获取模式更新软件打包脚本中每个模块的版本号。
版本1.1.1
主要特点和改进
- 添加基于ubuntu的集群部署
- 添加支持数据合并的联合组件。
- 支持在一个Onehot Encoder中显示部分列
- 支持任务结束后的中间数据清理
- 求交加速
- 优化部署过程
漏洞修补
- 修复secureboost“提前停止”的错误
- 修复下载api中的错误
- 修复spark后端的错误
版本1.1
联邦机器学习
- 为支持安全聚合的同构联邦学习提供一个通用算法框架
- 加深度神经网络
- 添加异质线性回归
- 添加非均匀泊松回归
- 支持异构逻辑回归中的多主节点
- 支持异构线性回归中的多主节点
- 支持多主节点求交
- 利用缓存加速求交
- 重构异构广义线性模型框架
- 异构SecureBoost中支持仿射同态加密
- 支持异构SecureBoost中,对于缺失值进行输入数据
- 支持训练期间的评估并验证数据
- 添加spark作为计算引擎
fate-flow
- 查询任务状态的上载和下载,支持CLI
- 支持取消等待任务
- 支持设置任务超时
- 支持在任务日志文件夹中存储任务调度日志
- 添加身份验证来控制测试版,包括其中组件、命令、角色
版本1.0.2
- Python和JDK环境仅用于运行独立版本的快速体验
- 支持集群版本docker部署
- 添加中文部署指南
- 部署群集版本时,支持用于快速体验的独立版本运行。
- Python服务日志将保留14天。
版本1.0
这个版本包括两个新产品,分别是fate面板和fate-flow,面板作为联邦建模的可视化工具,fate流是联邦学习的端到端pipeline平台。此版本包含对FederatedML的重要改进,它可以更好地跟踪联邦学习算法的运行进度。
fate面板
- 联邦学习任务面板
- 联邦学习任务可视化
- 联合学习任务管理
- 实时日志面板
fate-flow
- DAG定义Pipeline
- 联邦多方非对称DSL解析器
- 联邦学习生命周期管理
- 联邦任务协同调度
- 数据、度量、模型等的跟踪
- 联邦多方模型管理
联邦ML
- 用fate流更新联邦建模的所有算法模块运行状态
- 中间统计结果在所有算法模块的面板中可视化。
- 支持Nesterov Momentum SGD优化器
- 基于仿射变换的加同态加密方案
- 联邦特征分享支持稀疏的输入
- 更新评估指标,如ks、roc、gain、lift curve等
- 更新算法的参数定义类
fate服务
- 在线联邦接口添加在线联邦模型的DSL解析器
版本 0.3
联邦学习
- 支持多标签分类任务的OneVsALL
- 异方差Logistic回归中的垃圾回收
- 为sigmoid和对数逻辑函数添加数值稳定。
- 支持异构Logistic回归和异构SecureBoost的不同计算模式
- 联邦特征组合与联邦特征选择的解耦
- 在Hetero SecureBoost中增加特征重要性计算
- 在Hetero SecureBoost中添加多主节点
- 支持标签:值稀疏输入数据
- 支持输出交集id与交集中的特征实例
- 支持OneHot模块。
- 支持联邦特性分箱的bucket分箱。
- 支持定点数上的加法、sub、mul、div、gt、lt、eq等数学运算符
- 为参数设置添加权限验证
fate服务
- 为多方推理结果添加多级缓存
- 添加startInferceJob和getInferenceResult接口以支持推理过程异步化
- 规范化推理返回码
- 推理汇总日志和推理细节日志的实时日志记录
- 改进主机前、后处理适配器和数据访问适配器的加载
eggroll
- 新的计算和存储api
- 稳定性优化
- 性能优化
- 存储使用率改进
- 添加Mini FederatedML测试任务示例
- 使用任务管理器提交当前示例的分布式任务
- 错误修复和其他更改
- 修复检测一个最大列溢出错误。
- 修复数据IO密集格式不读取主机数据头错误。
- 修正统计函数调用错误
- 修复联合功能选择的错误,每个参与方至少保留一个功能
- 出于安全考虑,不允许在LR模块中使用小的批量。
- 修复联合功能选择模块中的命名错误。
- 在某些极端情况下修复自动发布模型信息的错误
- 修复了定点数中的一些溢出错误
- 修复许多其他错误。
版本0.2
fate-flow
- 添加模型管道线
- 添加异构联合特征分箱工作流
- 添加异构联合特征选择工作流
- 添加异构dnn工作流
- 为训练,预测,较差验证添加求交算子
联邦ML
- 支持svm稀疏格式输入数据
- 支持标签稀疏格式输入数据
- 添加异联邦特性分箱
- 添加异构联邦特征选择
- 添加功能定标器:MinMaxScaler和StandardScaler
- 为缺失值填充添加特征输入
- 为数据实例添加数据统计
- 支持原始交集可配置的编码和主计算角色
- 添加采样器:随机采样器和分层采样器
- 支持SecureBoost中的回归
- 支持回归评估
- 支持分散化FTL
- 通过DNN添加特征提取
- 将模型格式更改为ProtoBuf
- 增加异常参数检测
- 添加异常输入数据检测
fate服务(联邦学习模型的在线推理)
- 动态加载联邦学习模型。
- 使用联邦学习模型的实时预测。
- 模型管理
- 版本控制
- 再现性
- 查询,搜索
- 任务管理器
- 添加加载文件/下载文件
- 从本地文件添加导入ID
- 添加开始工作流
- 添加工作流任务队列
- 添加查询任务状态
- 添加Get Runtime conf
- 添加删除任务
Eggroll
- 为多处理器添加节点管理器以提高分布式计算性能
- 添加C++重写存储服务
- 添加eggroll清理API
部署
- 添加自动部署
- 改进部署文档
例子
- 添加异构联邦特征分箱示例
- 添加异构联邦特征选择示例
- 添加异构DNN示例
- 添加小例子
- 添加任务管理器示例
- 添加服务示例
- 错误修复和其他更改
- Hetero-LR Minibath 修正
- 梯度平均修正
- 代理1秒延迟错误修正
- 修正了训练流程
版本 0.1
初始化版本
工作flow
- 支持求交工作流
- 支持训练工作流程
- 支持预测工作流
- 支持评估工作流
- 支持模型加载和保存工作流
联邦ML
- 支持样本比对的分布式安全求交和原始求交
- 支持分布式同质LR和异构LR
- 支持分布式SecureBoost
- 支持分布式安全联邦迁移学习
- 支持二值和多类评估
- 支持模型交叉验证
- 支持小批量
- 支持L1,L2正则化
- 支持多方同构联邦聚合器
- 支持多方异构联邦聚合器
- 支持部分同态加密MPC协议
结构
- 计算api的初始版本
- 存储api的初始发布
- 联合API的初始发布
- 跨站点网络通信(即“联合”)的初始发布
- 独立运行时的初始版本,包括计算引擎和k-v存储
- 分布式运行时的初始发布,包括分布式计算引擎、分布式k-v存储、元数据管理和站点内/跨站点网络通信
- 支持跨站点异构基础设施
- 建模与推理的初始支持
部署
- 支持独立(docker&manual)部署
- 支持群集部署