FATE使用笔记
本文基于fate1.6.1
一、fate flow client 命令行使用
1.1上传数据
1.1.1 上传数据配置文件
//upload_data.json
{
"file": "examples/data/breast_hetero_guest.csv", //所上传的csv数据文件
"table_name": "hetero_breast_guest", //存储数据表的表名
"namespace": "experiment", //存储数据表的命名空间
"head": 1, // 指定数据文件是否包含表头,1包含,0不包含
"partition": 8, // 指定用于存储数据的分区数 ????
"work_mode": 0, //指定工作模式,0代表单机版,1代表集群版
"backend": 0 //指定后端,0代表EGGROLL, 1代表SPARK加RabbitMQ,2代表SPARK加Pulsar
}
1.1.2 上传数据命令
//使用python方式上传数据 (FATE版本1.6.0单机部署,docker:fate)
python /fate/python/fate_flow/fate_flow_client.py -f upload -c upload_data.json
//使用fateflow方式上传数据
//使用fateflow的第一步是先对fateflow进行init
flow init -c /data/projects/fate/python/conf/service_conf.yaml
或者flow init --ip 127.0.0.1 --port 9380
//上传数据
flow data upload -c upload_data.json --drop //--drop代表覆盖已上传的同名文件
(不同版本fate_flow_client.py的位置可能不同)
1.2 任务配置和运行配置
版本1.5.0以前的FATE适用V1规则
版本1.5.0以后的FATE适用V2规则,可兼容V1
本章讲training job的配置
通过Flow Client提交conf & dsl来开始training job
1.2.1 DSL 配置文件
xxxx_dsl.json文件
components表示将会使用到的各个模块
每个独立的模块定义在在"components" 之下,使用模块名加 _num 作为对应模块的 key,如"dataio_0"
所有数据需要通过Reader模块从数据存储拿取数据 (Reader模块仅有输出output)
//xxxx_dsl.json
{
"components" : {
"reader_0": { //V1不用reader,直接用dataio
"module": "Reader",
"output": {
"data": ["train"]
}
}
"dataio_0": {
"module": "DataIO",
"input": {
"data": {
"data": [
"reader_0.train_data" //通过Reader模块拿数据
]
}
},
"output": {
"data": ["train"],
"model": ["dataio"]
}
}
...
}
}
参数说明
-
module
指定使用的模块,需要和 federatedml/conf/setting_conf 提供的各个模块的文件名保持一致 -
input
分为两种输入类型,分别是 data 和 model
data:有四种可能的输入类型:
* data(一般被用于data_io 模块、feature_engineering 模块或者 evaluation 模块)
* train_data(一般被用于 homo_lr, heero_lr 和 secure_boost 模块,出现train_data的任务将会被识别为一个fit任务)
* validate_data(如果存在 train_data 字段,则 eval_data 指向的数据将会作为 validation set。若不存在 train_data 字段,则这个任务将被视作为一个predict 或 transform 任务)
* test_data(用作预测数据,如提供,需同时提供model输入)
model:有两种可能的输入类型:
* model(用于同种类型组件的模型输入)
* isometric_model(用于指定继承上游组件的模型输入) -
output
和 input一样,有 data 和 model 两种类型
data:有四种可能的输出类型:
* data(常规模块数据输出)
* train_data: 仅用于Data Split数据分割
* validate_data: 仅用于Data Split
* test_data: 仅用于Data Split
model:只使用model
1.2.2 运行配置 Submit Runtime Conf
xxxxx_conf.json文件
设置各个参与方的信