当前支持如下五种API来提交FATE任务,分别为:
使用方式:
python fate_flow_client.py -f $command
说明:根据入参,生成request,向Server发起请求。然后通过Flask跳转到具体类。
使用方式:
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 发起请求。
使用方式:
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 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开放了更加灵活的的API,用来定义各个组件。然后在底层再调用FlowClient(和FlowSDK一样),来进行执行。
例如upload,可以对比下通过 upload.json 和 pipeline 定义的区别。
{
"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_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中的配置项,通过参数的方式进行设定。
介于上图,可以发现最终的实现都是向server 提交http请求。然后通过flask机制,跳转到不同的执行了。基于1.5.1版本总结了一下不同endpoint 的执行类和功能,如下表。