FATE联邦学习框架java实践(一)

同系列文章:

FATE联邦学习框架入门指南 - 掘金 (juejin.cn)

FATE联邦学习框架:API实践Upload和DownLoad的踩坑记录 - 掘金 (juejin.cn)
项目源码FateTest - 码云 - 开源中国 (gitee.com)

因为公司技术栈和Fate的技术架构的原因,我们最终选择了采用Java调用接口的方式与FATE平台实现连通。目前为止,通过网络搜索对于Fate应用相关的文章都非常少,对于其详细系统性实践的文章更是一篇没有。

因此,这次实践可以说是目前为止,第一篇对于Fate在java实践的企业级探索。

任务梳理

具体的项目背景不方便透露,但是只需要知道项目对于Fate的具体要求就是,双方将用户存入Fate平台中,然后通过Fate的 隐私计算求交能力,返回双方的交集用户列表。

具体流程图如下:

我们需要隐私计算平台提供的功能

通过以上任务流程的梳理,我们需要的基础功能如下:

  1. 用户集管理:用于存储用户唯一标识,将不同用户存入不同集

  2. 用户集增、删功能:实现用户集转入、转出

  3. 交集判断:在两个用户集间判断是否为交集用户(需要跨平台)

根据对Fate的上下摸索,针对以上能力,Fate基本都能提供,但是还是存在一点不足。

Fate提供的功能

  1. Fate平台提供表概念,可以将数据集存入表中
  2. Fate仅有增删表的功能,但无表数据更新功能。
  3. Fate提供了intersrction模块,可以进行跨平台的隐私计算求交。

Fate的局限性

因为我这次的需求是做实时任务,而Fate更适合离线任务,所以这些局限性是对实时任务来说的。

  1. 没有表数据更新功能,意味着我们仅能通过下载表的csv文件后对表进行处理重新覆盖上传,来实现数据更新功能。同时这也意味着更大的IO开销和更高的时间成本。

  2. 数据上传或任务提交接口,请求接口后返回值的成功标识是指数据开始上传或者任务开始执行。仅能通过轮询任务状态来确定任务是否执行成功。 这也意味着更大的IO开销和更高的开发成本。

  3. Fate的表可以通过table bind绑定mysql数据表,但是我们不确定mysql数据源能不能预先导入数据,甚至能够通过更新mysql实现Fate表数据更新的功能。因为绑定没成功过。。。

Fate通过java实现基础的数据上传和导出

数据上传和下载接口只需要通过java请求官方文档API即可,但是还是有很多值得注意的地方

数据上传

数据上传接口的postman调试都费了很大的功夫,使用java调用更麻烦。

参考实现: java 实现带RequestBody传Json参数的GET请求 - 掘金 (juejin.cn)

1. 首先实现请求api的方法

2. 然后做好封装

数据下载

数据下载接口有两个,一个是导出数据的接口,结果返回为数据列表,一个是导出数据为文件的结果,结果为压缩文件。

但是返回结果列表的接口,最多能返回100条数据。

1. 同样首先实现请求api的方法

2. 因为结果返回为压缩包文件,所以实现了一个解压方法。

解压方法逻辑比较复杂。最终结果为将tar.gz文件中解压出的两个文件中保留结果数据文件并将其命名为指定名称。

3. 最后做好封装

相关推荐
mldong20 分钟前
给若依加审批流,不用 Flowable
java·spring boot·架构
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
讳疾忌医丶2 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
郑州光合科技余经理3 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
毅炼3 小时前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
梦想平凡3 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
罗西的思考4 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 --- (2)--- 训练
人工智能·算法·机器学习
sunshine22 girl4 小时前
Idea中如何搜索
java·ide·intellij-idea
猫吻鱼4 小时前
【AI 01】【Spring AI 基础使用】
java·spring·spring ai
梨涡泥窝5 小时前
基于SSM的校园二手交易平台的设计与实现
java·tomcat