安装standalone版本fate请参考 FATE Stand-alone Deployment Guide。
文章目录
0. 总体流程
(1)数据准备(如果用默认的数据,就不需要准备了);
(2)把数据的路径,写到upload_host.json或者upload_guest.json的里,然后用fate_flow把数据upload到指定的namescope和table_name(json里设置);
(3)配置计算图的流程和模块:dsl.json文件;配置计算图中的数据、算法超参数等:conf.json文件;
(4)提交job进行训练:把前述信息给fate_flow,开始训练;
(5)提交job进行测试:upload测试数据,根据训练好的模型信息,修改测试配置文件,开始测试。
1. 进入fate环境并测试环境是否正常
CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./python/federatedml/test/run_test.sh
2.数据准备和upload
2.1 host方upload训练数据
cd python/fate_flow
vi examples/upload_host.json
配置如下:(我把原来的数据分成了train和test部分)
{
"file": "/fate/examples/data/breast_a_train.csv",
"id_delimiter":",",
"head": 1,
"partition": 4,
"work_mode": 0,
"backend":0,
"namespace": "experiment",
"table_name": "breast_a_train"
}
upload数据
python fate_flow_client.py -f upload -c examples/upload_host.json
2.2 guest方upload训练数据
vi examples/upload_guest.json
配置如下:(我把原来的数据分成了train和test部分)
{
"file": "/fate/examples/data/breast_b_train.csv",
"id_delimiter":",",
"head": 1,
"partition": 4,
"work_mode": 0,
"backend":0,
"namespace": "experiment",
"table_name": "breast_b_train"
}
upload数据
python fate_flow_client.py -f upload -c examples/upload_guest.json
3. 模型训练—以纵向LR为例
3.1 进入python路径下
这里选择用v1版本的api,所以需要用fate_flow命令,到python路径下更方便
cd python
3.2 配置dsl文件
这个文件主要设置计算图的组建,默认算法参数就是hetero_lr。
vim /fate/examples/dsl/v1/hetero_logistic_regression/test_lr_with_feature_engineering_dsl.json
这个图里面包含intersection,feature binning 和 onehot encoder;
3.3 配置conf文件
这里可以设定party_id等:因为是单机版,都是10000;
可以设置数据集和算法超参数;
用默认的就可以。
vim /fate/examples/dsl/v1/hetero_logistic_regression/test_lr_with_feature_engineering_conf.json
3.4 提交训练job
python fate_flow/fate_flow_client.py -f submit_job -d /fate/examples/dsl/v1/hetero_logistic_regression/test_lr_with_feature_engineering_dsl.json -c /fate/examples/dsl/v1/hetero_logistic_regression/test_lr_with_feature_engineering_conf.json
3.5 查看fateboard训练情况和日志
登陆fateboard查看训练信息 :
(1)如果是本机就登陆localhost:8080;
(2)如果是远程服务器上运行,就登陆 服务IP:8080。
3.模型测试
3.1 upload测试数据
用前述方法把测试数据upload。
3.2 配置测试json文件
vim ../examples/dsl/v1/hetero_logistic_regression/test_predict_conf.json
配置文件,修改其中的model_version,配置如下:
{
"initiator": {
"role": "guest",
"party_id": 10000
},
"job_parameters": {
"work_mode": 0,
"job_type": "predict",
"model_id": "arbiter-10000#guest-10000#host-10000#model",
"model_version": "202011060237179162088"
},
"role": {
"guest": [
10000
],
"host": [
10000
],
"arbiter": [
10000
]
},
"role_parameters": {
"guest": {
"args": {
"data": {
"eval_data": [
{
"name": "breast_b_test",
"namespace": "experiment"
}
]
}
}
},
"host": {
"args": {
"data": {
"eval_data": [
{
"name": "breast_a_test",
"namespace": "experiment"
}
]
}
}
}
}
}
3.3 提交测试job
python fate_flow/fate_flow_client.py -f submit_job -c ../examples/dsl/v1/hetero_logistic_regression/test_predict_conf.json
fateboard上predict的job如下:
点开guest的job,可以看到测试集上的输出结果: