FATE学习:五种不同的API提交FATE任务

您所在的位置:网站首页 fate框架 FATE学习:五种不同的API提交FATE任务

FATE学习:五种不同的API提交FATE任务

2023-11-07 01:31| 来源: 网络整理| 查看: 265

综述

当前支持如下五种API来提交FATE任务,分别为:

CLI API:通过python 启动python 脚本 fate_flow_client.py,提交FATE任务。REST API:Rest API 形式,发起http请求,提交FATE任务。Flow SDK:python 封装的SDK,调用相关API,提交FATE任务。Flow Client:封装为命令行工具模式的FATE Flow命令行控制台。Pipeline:python 封装的high level API。 几种API的对比 CLI API

使用方式:

python fate_flow_client.py -f $command

说明:根据入参,生成request,向Server发起请求。然后通过Flask跳转到具体类。

HTTP API

使用方式:

curl -H "Content-Type:application/json" -X POST -d '{"role": "guest", "party_id":"9999"}' http://192.168.1.26:9380/v1/job/query

可以使用curl 或者 postman等工具。 直接向Server 发起请求。

Flow SDK

使用方式:

from flow_sdk.client import FlowClient # use real ip address to initialize SDK client = FlowClient('127.0.0.1', 9000, 'v1') client.job.submit(conf_path, dsl_path)

说明:在FlowClient类中已经封装好SDK,根据不同的调用接口,生成request,向Server发起请求。然后通过Flask跳转到具体类。相比CLI模式,通过不同的参数,生成request,这里是使用不同的API生成request。

Flow Client CLI

使用方式:

flow init -c /data/projects/fate/python/conf/service_conf.yaml flow init --ip 127.0.0.1 --port 9380 flow job submit -c fate_flow/examples/test_hetero_lr_job_conf.json -d fate_flow/examples/test_hetero_lr_job_dsl.json

封装为命令行工具模式的FATE Flow命令行工具。底层是通过access_server方法,根据不同的参数,生成对应的request,再向Server 发起请求

def access_server(method, ctx, postfix, json_data=None, echo=True, **kwargs): if ctx.obj.get('init', False): try: url = "/".join([ctx.obj['server_url'], postfix]) response = {} if method == 'get': response = requests.get(url=url, json=json_data, **kwargs) elif method == 'post': response = requests.post(url=url, json=json_data, **kwargs) if echo: prettify(response) return else: return response Pipeline

相较于以上几种方式,通过配置文件的方式,定义各个组件,Pipeline开放了更加灵活的的API,用来定义各个组件。然后在底层再调用FlowClient(和FlowSDK一样),来进行执行。 例如upload,可以对比下通过 upload.json 和 pipeline 定义的区别。

upload.json { "file": "/data/projects/fate/python/fc/data/predict_data/20220523/b1game01_20220523.csv", "head": 1, "partition": 1, "work_mode": 1, "table_name": "b1game01_20220523", "namespace": "cl", "count": 21 } pipeline 方式 pipeline_upload.add_upload_data(file=os.path.join(DATA_BASE, "examples/data/breast_hetero_guest.csv"), table_name=dense_data["name"], # table name namespace=dense_data["namespace"], # namespace head=1, partition=partition) # data info pipeline_upload.upload(work_mode=work_mode, backend=backend, drop=1)

对比可以发现,就是将json中的配置项,通过参数的方式进行设定。

示意图

画了张图,来体现如上五种API之间的关系 在这里插入图片描述

endpoint

介于上图,可以发现最终的实现都是向server 提交http请求。然后通过flask机制,跳转到不同的执行了。基于1.5.1版本总结了一下不同endpoint 的执行类和功能,如下表。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3