FATE服务的场景是各方上传数据,各方取得数据且能交融数据取得独特训练的模型。

官网文档就是以这个程序来写的,然而吧upload data和模型取得数据和模型训练离开来写了。

整顿下数据集

文档中的file path其实是FATE联邦学习github我的项目的绝对目录,所波及到的数据集能够从github取得。你能够间接从github上下载,也能够复制粘贴,然而要留神,查看最初一行是否空行!,如果是空行,删掉,不然FATE会报错。能够具体看我这个亲自踩坑的博客。

Python例子

下载解决好数据集后,记得批改上面代码中的门路。代码大部分是复制粘贴人家官网文档的,我只是把改放到一起的中央放到了一起,所以不必放心有谬误。【记得改数据集的门路和名字】。

代码是在Linux上运行的。
默认你曾经胜利启动FATE服务了,如何启动FATE服务?
首先在终端把pipeline下载和初始化好

pip install fate_clientpipeline init --ip=127.0.0.1 --port=9380

另外记得check FATE服务是否失常运行pipeline config check
记得看代码正文,我要更加具体的教程。

from pipeline.backend.pipeline import PipeLinefrom pipeline.component import Reader, DataTransform, Intersection, HeteroSecureBoost, Evaluationfrom pipeline.interface import Data# pipeline能够了解为一个工作,这个工作是上传数据pipeline_upload = PipeLine().set_initiator(role='guest', party_id=9999).set_roles(guest=9999)partition = 4dense_data_guest = {"name": "breast_hetero_guest", "namespace": f"experiment"}dense_data_host = {"name": "breast_hetero_host", "namespace": f"experiment"}tag_data = {"name": "breast_hetero_host", "namespace": f"experiment"}import osdata_base = "/root/Downloads/"pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_guest.csv"),                                table_name=dense_data_guest["name"],             # table name                                namespace=dense_data_guest["namespace"],         # namespace                                head=1, partition=partition)               # 每一个数据集由table name和namespace标识pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_host.csv"),                                table_name=dense_data_host["name"],                                namespace=dense_data_host["namespace"],                                head=1, partition=partition)pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_host.csv"),                                table_name=tag_data["name"],                                namespace=tag_data["namespace"],                                head=1, partition=partition)# drop=1的意思是笼罩掉先前的同名tablepipeline_upload.upload(drop=1)# 开始取得数据并且训练,新实例化一个pipelinepipeline = PipeLine() \        .set_initiator(role='guest', party_id=9999) \        .set_roles(guest=9999, host=10000)    # 想要取得FATe中的数据,必须通过Readerreader_0 = Reader(name="reader_0")# set guest parameter# 留神reader所绑定的身份和id,想要胜利获取到数据,# 要绑定数据起源的身份和id,而非数据需求方的reader_0.get_party_instance(role='guest', party_id=9999).component_param(    table={"name": "breast_hetero_guest", "namespace": "experiment"})# set host parameterreader_0.get_party_instance(role='host', party_id=10000).component_param(    table={"name": "breast_hetero_host", "namespace": "experiment"})# 想要用取得的数据进行训练,必须通过datatransformer。data_transform_0 = DataTransform(name="data_transform_0")# set guest parameterdata_transform_0.get_party_instance(role='guest', party_id=9999).component_param(    with_label=True,missing_fill=True)data_transform_0.get_party_instance(role='host', party_id=[10000]).component_param(    with_label=False,missing_fill=True)# 交融(纵向)数据intersect_0 = Intersection(name="intersect_0")# 定义模型,FATE提供了一些模型,当然也能够本人开发模型hetero_secureboost_0 = HeteroSecureBoost(name="hetero_secureboost_0",                                         num_trees=5,                                         bin_num=16,                                         task_type="classification",                                         objective_param={"objective": "cross_entropy"},                                         encrypt_param={"method": "paillier"},                                         tree_param={"max_depth": 3})evaluation_0 = Evaluation(name="evaluation_0", eval_type="binary")pipeline.add_component(reader_0)pipeline.add_component(data_transform_0, data=Data(data=reader_0.output.data))pipeline.add_component(intersect_0, data=Data(data=data_transform_0.output.data))pipeline.add_component(hetero_secureboost_0, data=Data(train_data=intersect_0.output.data))pipeline.add_component(evaluation_0, data=Data(data=hetero_secureboost_0.output.data))pipeline.compile()# 后面的代码其实是结构了一个计算图,fit才算开始真正执行pipeline.fit()

胜利的话,terminal有五光十色的提醒。
如果失败,须要通过Fateboard进行debug,Python 处的代码不会给出具体的提醒。怎么应用Fateboard进行debug?