0%
1.1k 字 5 分钟

FATE学习:运行过程中产生的数据(一) job部分

综述

在创建job 、task 和 执行task的过程中,将相关配置信息、pid信息等落盘。
目录位于 /data/projects/fate/jobs/${jobid} 下
主要包括3类:

  • pid:用于记录执行各个task的进程号的文件。
  • 配置文件:针对输入的DSL 文件,和Run Time Conf文件,结合当前FATE部署时的配置参数,会生成任务运行时最终使用的配置文件。
  • 日志

    目录结构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    |-- job_dsl.json: 结合输入的DSL 文件 和 默认配置参数生成。
    |-- job_runtime_conf.json:结合输入的 Run Time Conf 和默认配置参数生成。
    |-- pipeline_dsl.json:在启用pipeline 的情况下,会有值,否则为空。
    |-- train_runtime_conf.json:在predict 时会有值,即已经训练好的模型,否则为空。
    |-- ${role}
    | |-- job_runtime_on_party_conf.json:当前paryty 上的配置文件。
    | |-- ${party}
    | |-- ${conpoment}
    | |-- ${session_stop}
    | |-- pid:记录结束task的进程的进程号
    | |-- std.log:相关日志
    | |-- ${taskid}
    | |-- ${partty}
    | |-- pid: 记录执行当前task的进程的进程号
    | |-- task_parameters.json:记录当前task 的参数。

upload 任务为例

job_dsl.json

upload 无输入的dsl,因而job_dsl.json 就只有默认的几个配置参数

1
2
3
4
5
6
7
{
"components": {
"upload_0": {
"module": "Upload"
}
}
}

job_runtime_conf.json

输入

1
2
3
4
5
6
7
8
9
{
"file": "/data/projects/fate/python/cl/fc/data/predict_data/20210902/bgame4455_20210902_part.csv",
"head": 1,
"partition": 1,
"work_mode": 1,
"table_name": "bgame4455_20210902_part",
"namespace": "cl",
"count": 1035833
}

job_runtime_conf.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"initiator": {
"role": "local",
"party_id": 0
},
"job_parameters": {
"common": {
"job_type": "train",
"work_mode": 1,
"backend": 0,
"computing_engine": "EGGROLL",
"federation_engine": "EGGROLL",
"storage_engine": "EGGROLL",
"engines_address": {},
"federated_mode": "MULTIPLE",
"task_parallelism": 1,
"computing_partitions": 4,
"federated_status_collect_type": "PULL",
"model_id": "local-0#model",
"model_version": "202109030845027808051",
"eggroll_run": {},
"spark_run": {},
"rabbitmq_run": {},
"adaptation_parameters": {
"task_nodes": 1,
"task_cores_per_node": 4,
"task_memory_per_node": 0,
"request_task_cores": 4,
"if_initiator_baseline": true
}
}
},
"role": {
"local": [
0
]
},
"component_parameters": {
"role": {
"local": {
"0": {
"upload_0": {
"name": "bgame4455_20210902_part",
"partition": 1,
"namespace": "cl",
"destroy": true,
"head": 1,
"file": "/data/projects/fate/jobs/202109030845027808051/fate_upload_tmp/bgame4455_20210902_part.csv"
}
}
}
}
},
"dsl_version": 2
}

如上,是输入的Run Time Conf,在最终生成的结果中,会补全initiator,job_parameters,role,dsl_version等一级key,并且将输入的Run Time Conf 整合到component_parameters中。各个key的含义参见
这里会在job目录下,新建一个fate_upload_tmp目录,将需要上传的文件cp过来。

pipeline_dsl.json

这里未启用,是空

train_runtime_conf.json

非predict 任务,是空。

job_runtime_on_party_conf.json

当前party上的配置文件,相比job_runtime_conf.json ,少了一个common关键词(都是本party,不需要common) ,但基本复制自job_runtime_conf.json 中的common。 engines_address 和 eggroll_run 是当前party的配置。

task_parameters.json

task 的具体参数,是job_runtime_on_party_conf.json 中的 job_parameters 部分

train job

job_dsl.json 和输入dsl一致
job_runtime_conf.json 的调整,同upload相比 也是新增了如下参数

1
2
3
"config": "/data/projects/fate/python/cl/fc/config/20210902/train_20210902_bgame4334_part.json",
"dsl": "/data/projects/fate/python/cl/fc/env/pattern/train_job_dsl.json",
"function": "submit_job"

此外,hetero_lr 的train过程,相比upload 只使用了upload 一个组件,共有dataio,hetero_lr, intersection 三个组件,故会有三个${conpoment} 目录
其余和 upload 类似

predict job

改动有如下两个点
job_dsl.json增加了如下参数

1
"CodePath": "federatedml/util/data_io.py/DataIO"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{
"components": {
"dataio_0": {
"module": "DataIO",
"input": {
"model": [
"pipeline.dataio_0.dataio"
],
"data": {
"data": [
"args.eval_data"
]
}
},
"output": {
"data": [
"train"
]
},
"CodePath": "federatedml/util/data_io.py/DataIO"
},
"intersection_0": {
"module": "Intersection",
"output": {
"data": [
"train"
]
},
"input": {
"data": {
"data": [
"dataio_0.train"
]
}
},
"CodePath": "federatedml/statistic/intersect/intersect_model.py/IntersectGuest"
},
"hetero_lr_0": {
"module": "HeteroLR",
"input": {
"model": [
"pipeline.hetero_lr_0.hetero_lr"
],
"data": {
"test_data": [
"intersection_0.train"
]
}
},
"output": {
"data": [
"train"
]
},
"CodePath": "federatedml/linear_model/logistic_regression/hetero_logistic_regression/hetero_lr_guest.py/HeteroLRGuest"
}
}
}

train_runtime_conf.json 是对应已经训练好的模型的配置。