FATE使用笔记
一、上传数据
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.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.5.0以前的FATE适用V1规则
版本1.5.0以后的FATE适用V2规则,可兼容V1
本章主要讲training job的配置
通过Flow Client提交conf & dsl来开始training job
2.1 DSL 配置文件
xxxx_dsl.json文件
components表示将会使用到的各个模块
每个独立的模块定义在在"components" 之下,使用模块名加 _num 作为对应模块的 key,如"dataio_0"
所有数据需要通过Reader模块从数据存储拿取数据,此模块仅有输出output
//xxxx_dsl.json
{
"components" : {
"reader_0": {
"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。若不存在 tra