多方安全计算如何实现运算的?

多方安全计算如何实现运算的?

  1. 模型构建

    在FATE中构建一个算法模型,需要准备三种类型配置文件

    • 上传数据配置文件

      用于上传数据,主要由文件路径,标题header,分区数目,表名,工作模式。不要上传不同的数据使用相同的表名或命名空间

      属性值 描述
      file 文件路径
      head 指定是否需要header. 0 表示不需要 1 表示需要
      partition 指定需要多少分区来存储这些数据
      table_name 表示用于存储数据的表
      work_mode 表示是单机版还是集群版。 0 为单机;1位集
         
    • DSL配置文件

      用于定义模型任务,会有些组件被调用。如data_io,feature_engineering, 算法模型,评估等。但不同的任务,会有不同的组件组合。 因此FATE可以通过DSL配置文件(Domain-Specific Language)方式来定义用户需要的模型结构。组件组合成DAG(Directed Acylic Graph)有向无环图的方式进行任务调度和运行。

      DSL配置文件对每个组件既会定义输入数据及模型,也会定义输出数据及模型。作为下游组件会以上游组件的输出作为其输入。

      DSL配置文件主要由组件名,模块,输入,输出,是否需要部署等构成

       

      属性 描述
      component_name 一个组件的名称,后缀以下划线加数字方式,例如dataio_0,通常数字都以0开始
      module FATE支持的算法模块中可选项,选择其中一个(Dataio,Intersect,Federated sampling,Feature scale,Hetero Feature Binning,Onehout encoder,Hetero feature selection,union,Hetero-lr,local baseline,Hetero-LinR,Hetero-Poisson,Homo-LR,Homo-NN,Hetero Secure Boosting,Evaluation,Hetero Pearson,Hetero-NN)
      input 有两种类型的输入:一种是data(数据),一种是model(模型)。 data又分为三类:1. 普通数据。用于dataio,feature_engineering和evaluation的;2. 训练数据 。主要使用于一些逻辑回归模型中(如homo_lr,hetero_lr,secure_boost) ; 3. 测试评估数据。如果训练数据指定了,将会被作为测试集,如果训练数据没有制定,将会被作为预测或转换任务
      output 同样和输入一样有两种类型的输出:一种是data(数据) ,一种model(模型)
      need_deploy 两个可选值:true或false。 表示组件是否需要部署用于在线推理。这个字段仅用于在线推理【推理】DSL配置
         
  • 运行时配置文件

    用于对各方中所有组件设置参数。

    属性 描述
    initiator 指定发起人的角色和party_id
    rolerole 定义各种角色和其对应所属的party_id
    role_paramters 根据角色不同参数有所不同,
    algorithm_parameters 算法中的参数
       

     

  1. 启动模型任务

    • 数据上传

    python fate_flow_client.py -f upload -c upload_data.json
    • 模型任务运行

      基于dsl任务配置和submit runtime配置文件进行运行

    python fate_flow_client.py -f submit_job -d intersect\test_intersect_job_dsl.json -c test_intersect_job_raw_conf.json

     

     

  2. 查看执行日志或board上看执行结果

    cat logs/${jobid}/

     

  3. 基本流程图

    以参与三方数据应用方guest0,数据提供方host0,host1为例简单描述下执行过程

     

    参与各方dataiointersect上传guest0数据上传host0数据上传host1数据加载DSL配置文件和runtime配置文件dataio输出作为intersect输入guest0提交job任务计算结果参与各方dataiointersect

    PS:

    • 需要说明的如果希望运算在spark中执行,可以通过在runtime配置文件中,job_paramters中指定既可以支持 yarn方式部署,也可以支持standalone方式部署。
    • 日常多数据源运算支持intersect和union应该比较充分。如果需要支持机器模型构建,需要使用选择合适的LR,NN等模型算法
  4.  

你可能感兴趣的:(大数据&机器学习,算法,python,机器学习,大数据)