(一)联邦学习FATE框架1.6.0版本单机部署和实战训练评估篇

FATE 1.6.0学习笔记

系统安装,环境搭建和fate框架搭建指南手册下载

链接:https://pan.baidu.com/s/1K-88uye6RN3tLHw6f_r9Ug

提取码:5y2u

注意看我标黄的注释,有改动。不然会出现安装失败或者资源下载失败等问题。

Centos7系统镜像去阿里云镜像仓库下载,好用,不用换源。注意安装的时候不要选最小安装,选安装GNOME桌面,兼容工具,系统工具和开发工具也打勾。有了图形化界面直接在终端输入命令比较方便。有文件路径不对的时候,去文件系统搜索这个文件名可以得到实际路径,和攻略比对后修改路径即可。

Vmvare安装centos7系统

设置虚拟机硬盘储存空间的时候建议设置100G,免得安装fate时空间不足。

网络连接方式选择NAT。

如果每次重启电脑后VM都连不上网络。那么应该是NAT服务问题,进入本人PC系统,打开 服务 ,找到

设置为开机自动启动即可,其他形式网络连接就开DHCP等。原理相同。

Jdk 8u201  linux版本下载

链接:https://pan.baidu.com/s/1IBWU226Uxnsx0-kkwpdxzg

提取码:ae2m

 

FATE单机部署

Fate1.6.0集成了前面的fate_python和fateboard镜像,所以单机部署完后只有一个fate镜像。

使用 docker fate ls 命令可以看到文件夹,有上述文件夹,所以说明是集成的。

进入容器命令 docker exec -it fate /bin/bash

进入容器可以查看容器的文件。容器相当于一个Linux系统,所以很多命令相似。如图

不知道为什么切换路径只能用绝对路径。或者前面加./

federatedml 这个文件夹在1.6.0版本中,在 python文件夹下

实战篇-横向学习训练评估

1.    编写上传数据配置

如果熟练了,可以用官方实战教程,采用外部数据集,自己写配置文件进行训练。具体资源参考:

https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter05_FATE_HFL

但刚入门就不给自己挑战了,本次测试的时候直接用fate给的测试数据集和配置。参考的文章为

https://blog.csdn.net/qq_28540443/article/details/104562797

1.6.0版本的fate和以往版本有所改动。其中脚本的路径和配置文件路径在1.6.0中都改了,加载配置文件时,我的命令如下。

python /fate/python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_host.json

python /fate/python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_guest.json

 

如果是自己编写配置文件,需要用到vim命令,要进入fate镜像安装vim功能,否则无法编辑配置文件。下面为在fate容器内安装vim步骤

首先更新容器的源

方法一:进入阿里云-容器镜像服务-镜像工具-镜像加速器  

获得个人专属加速链接

然后在虚拟机打开终端,

修改/etc/docker/daemon.json文件配置

vim /etc/docker /daemon.json

{

  "registry-mirrors": ["https://m3dz4myl.mirror.aliyuncs.com"]

}

重启daemon

systemctl daemon-reload

重启docker服务

systemctl  restart docker

方法二:直接输入命令换源

mv /etc/apt/sources.list /etc/apt/sources.list.bak

    echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list

    echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

    echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list

    echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

 

然后更新安装命令

apt-get update

然后更新依赖

apt-get install -y libtinfo5 --allow-remove-essential

然后安装vim

apt-get install -y vim

编辑配置文件

①    vim /fate/examples/dsl/v1/upload_data_host.json

内容替换为

{

"file":"examples/data/breast_homo_host.csv",

"head":1,

"partition":10,

"work_mode":0,

"table_name":"fuqlaihomo_breast_host",

"namespace":"fuqlaihomo_breast_host"

}

 

②    vim /fate/examples/dsl/v1/upload_data_guest.json

内容替换为

{

"file":"examples/data/breast_homo_guest.csv",

"head":1,

"partition":10,

"work_mode":0,

"table_name":"homo_breast_guest",

"namespace":"homo_breast_guest"

}

上传配置数据

python /fate/python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_host.json

出现下面的信息说明上传成功

python /fate/python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_guest.json

导入训练数据

python /fate/python/fate_flow/fate_flow_client.py -f upload -c  /fate/examples/dsl/v1/homo_logistic_regression/upload_data_host.json

python /fate/python/fate_flow/fate_flow_client.py -f upload -c  /fate/examples/dsl/v1/homo_logistic_regression/upload_data_guest.json

python /fate/python/fate_flow/fate_flow_client.py -f upload -c  /fate/examples/dsl/v1/homo_logistic_regression/upload_data_test.json

出现上图则为导入成功,浏览器输入 虚拟机ip:8080 进入fateboard可以看到刚刚上传的两个任务

点击任务ID可以查看详细信息

2.    建模(第二节建模全部用测试用例,无需自己编写)

借助FATE,我们可以使用组件的方式来构建联邦学习,而不需要用户从新开始编码,FATE构建联邦学习Pipeline是通过自定义dsl和conf两个配置文件来实现:

·        dsl文件:用来描述任务模块,将任务模块以有向无环图(DAG)的形式组合在一起。

·        conf文件:设置各个组件的参数,比如输入模块的数据表名;算法模块的学习率、batch大小、迭代次数等。

 

2.1编写dsl配置

为了让任务模型的构建更加灵活,目前 FATE 使用了一套自定的领域特定语言 (DSL) 来描述任务。在 DSL 中,各种模块(例如数据读写 data_io,特征工程 feature-engineering, 回归 regression,分类 classification)可以通向一个有向无环图 (DAG) 组织起来。通过各种方式,用户可以根据自身的需要,灵活地组合各种算法模块。

为了尝试多一点的组件,我们的实践将涵盖训练以及评估模型。

Fate1.6.0中配置文件路径为

/fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_dsl.json

/fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_conf.json

配置文件在哪个目录,就在哪个目录下执行训练(为了方便),不然每条命令都要用绝对路径。

2.1.1建模数据流定义(以下仅仅列举使用外部数据集的时候应该做的步骤,我们测试用例并不需要自己编写)

组件结构体具体说明见:

https://github.com/FederatedAI/FATE/blob/master/doc/dsl_conf_v1_setting_guide_zh.rst

2.1.2训练输入输出定义

2.1.3评估输入输出定义

2.2编写运行配置

2.2.1guest角色参数

2.2.2host角色参数

2.3算法参数配置

3.开始训练评估任务

FATE1.6.0版本中命令为

python /fate/python/fate_flow/fate_flow_client.py -f submit_job -c /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_evaluate_job_conf.json  -d /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_evaluate_job_dsl.json

    出现下图则为成功开始运行

在fatebord中可以看到运行进度

 

3.    查看结果

点击job ID查看每个过程组成的DAG图

点击绿色的dataio_0,再点击右边的view the output

由于输出类型是data类型,可以在"data output"看到输入的数据列表项如上

点击log查看日志

3.1查看dataio_1执行结果

dataio_1是用于评估的数据,数据输出结果如下

3.2查看训练分析结果

homo_lr_0

homo_lr_0是分别在guest,host训练homo_breast_guest以及homo_breast_host得出最终模型,下面表格列出所有特征variable以及通过LR分类得出特征对应权值weight

下面表格列出所有特征variable以及通过LR分类得出特征对应权值weight

下面还有一个曲线图,表示LR损失函数值随着迭代次数的变化

 

查看data output

id:id

label: 标签值,真实结果

predict_result: 预测结果

predict_score: 预测得分

predict_detail:预测结果的细节

 

 

homo_lr_1

home_lr_1是基于homo_lr_0预测test数据集的结果。

输出模型结果如下:

查看data output 训练结果如下

3.3查看模型评估结果

3.3.1 homo_lr_0模型评估evalation_0 结果

这里的auc值、ks值显示训练数据集的正样本概率以及好坏样本累计差异率

3.3.2       homo_lr_1模型评估evalation_1 结果

homo_lr_1使用homo_lr_0训练的模型对test数据集进行预测,得出的结果如下图,相对evalation_0各部分指标略有下降。

  • 14
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值