FATE联邦学习框架:API实践Upload和DownLoad的踩坑记录

官方API文档:API - FATE Flow (federatedai.github.io)

因为公司技术栈和Fate的技术架构的原因,我们最终选择了采用Java去调用接口的方式与FATE平台实现连通。

然而在测试FATE官方提供的API时,却发现了FATE的不少坑。因为现在使用FATE的人并不多的原因,网上完全没有解决方案。很多坑也是多方调查才解决的,在这里记录下,希望对你有所帮助。

1. 测试接口范围

因为我们使用场景比较特殊,我仅测试了以下五个接口,其中/data/upload/tracking/component/output/data/download接口测试失败,其他均正常。

根据其他使用者的反馈,问题也主要出在这两个接口中,其他接口根据官网文档都能调通

2. upload接口调用方式

1.官方介绍

根据官方文档的介绍,upload接口的调用方式如下:

于是,我选择了通过url直接传参数,将文件变为二进制文件传入的方式。

如图,参数为application/octet-stream类型

最后的结果很明显,失败了。

2. Github ISSUE关键解答

原文链接如下:FATE1.10.0的fate flow Swagger API的/data/upload接口报错 · Issue #4613 · FederatedAI/FATE (github.com)

这里面官方工作人员回答,说可以直接通过application/json传入文件参数。

虽然这次请求成功了,可是进入Fate管理端发现任务执行失败,通过查询日志定位是文件找不到的问题。

注意截图中文件地址前缀为fateflow说明上传文件的地址默认为Fate所在的机器,说明报错原因是不能上传本地文件。

在此问题解答中,官方人员也说明了这种情况。KeyError: 'file' when using REST API to upload data · Issue #3647 · FederatedAI/FATE (github.com)

也就是说application/json传入的文件地址参数只能将Fate所在机器的文件上传到Fate中,如果想要上传本地文件至Fate中,需要将use_local_data参数改为1。

但是亲测,参数改为1接口直接报错。

也就是说,要将本地文件传入Fate平台仍然需要通过application/octet-stream类型的参数将文件以二进制的形式传入到Fate平台中。

3. 成功的调用方式

亲测只有通过form-data 传入文件和参数才能上传文件,并且上传成功。

3. DownLoad 接口调用方式

这个接口倒是没有上传接口解决起来那么离谱,但我觉得官方文档的误导性太强了。

官方文档介绍如下:

但是使用postman调用尝试失败报错

解决方法非常简单,只需把post方式用get方式即可。

提示method not allowed 然后尝试改用get请求确实有点合理,但是官方文档明晃晃标注post请求就不太合理了吧。

而且我旁边的六年老Java大哥也和我说这么多年第一次见get请求传requestBody参数的。这个接口的请求方式确实挺出乎意料的。

还有一点需要注意,这个方法最后是传回一个文件,需要用send and download的方式才能下载到压缩文件,只用send最后会显示一堆乱码而不是下载文件。

如果使用java调用的话,可以参考这篇文档,亲测可用。

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

相关推荐
千寻技术帮34 分钟前
10333_基于SpringBoot的家电进存销系统
java·spring boot·后端·源码·项目·家电进存销
dear_bi_MyOnly34 分钟前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
LucDelton1 小时前
模型微调思路
人工智能·深度学习·机器学习
小信丶2 小时前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端
Fleshy数模2 小时前
从一条直线开始:线性回归的底层逻辑与实战
人工智能·机器学习·概率论
To Be Clean Coder2 小时前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
-孤存-2 小时前
SpringBoot核心注解与配置详解
java·spring boot·后端
流㶡3 小时前
逻辑回归实战:从原理到不平衡数据优化(含欠拟合/过拟合诊断与召回率提升)
算法·机器学习·逻辑回归
2301_818732063 小时前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
lrh1228004 小时前
详解决策树算法:分类任务核心原理、形成流程与剪枝优化
算法·决策树·机器学习