fate隐私求交案例

2024-03-13 22:12
文章标签 案例 隐私 fate 求交

本文主要是介绍fate隐私求交案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

intersect组件是解决纵向联邦学习中的隐私求交问题

fate隐私求交的方式有三种:raw,rsa,dh。raw方式不安全,rsa和dh方式是安全的,dh是基于对称加密的安全交集 rsa是基于RSA(非对称加密)的安全交集,,dh方法也用于安全的信息检索(SIR),fate intersect 支持多主机模式即(1个guest与多个host进行求交集)

可配置的hash方法有sha256、md5 和 sm3。raw交集支持base64编码,支持与缓存的交集。

统案例脚本文件:/data/projects/fate/examples/dsl/v2/

1、 1v1案例:

本次案例在guest执行任务,求交host

host

guest

数据文件名称

xxl_test_host.csv

xxl_test_guest.csv

表空间名称

sp_host

sp_guest

表名称

tb_host

tb_guest

/data/projects/fate/examples 目录创建测试目录,并拷贝系统配置

cd /data/projects/fate/examples/mytest
cp /data/projects/fate/examples/dsl/v2/intersect/test_intersect_job_dsl.json ./
cp /data/projects/fate/examples/dsl/v2/intersect/test_intersect_job_raw_conf.json ./

1.1上传文件

1.1.1、host创建上传脚本:

upload_xxl_host.json

{"file": "/data/projects/fate/examples/mytest/xxl_test_host.csv","head": 1,"partition": 10,"work_mode": 0,"namespace": "sp_host","table_name": "tb_host"
}

xxl_test_host.csv 是数据文件(需要有表头)

namespace 表空间名称

table_name 表名称

 1.1.2、guest创建脚本:

upload_xxl_guest.json

{"file": "/data/projects/fate/examples/mytest/xxl_test_guest.csv","head": 1,"partition": 10,"work_mode": 0,"namespace": "sp_guest","table_name": "tb_guest"
}
1.1.3上传文件

# host 端:
source /data/projects/fate/bin/init_env.sh
flow data upload -c upload_xxl_host.json

# guest端:
source /data/projects/fate/bin/init_env.sh
flow data upload -c upload_xxl_guest.json

1.2创建任务脚本

1.2.1、创建dsl文件

test_intersect_job_dsl.json

{"components": {"reader_0": {"module": "Reader","output": {"data": ["data"]}},"data_transform_0": {"module": "DataTransform","input": {"data": {"data": ["reader_0.data"]}},"output": {"data": ["data"],"model": ["model"]}},"intersect_0": {"module": "Intersection","input": {"data": {"data": ["data_transform_0.data"]}},"output": {"data": ["data"]}}}
}
1.2.2、创建任务配置文件

test_intersect_job_rsa_conf.json

{"dsl_version": 2,"initiator": {"role": "guest","party_id": 9999},"role": {"guest": [9999],"host": [10000]},"component_parameters": {"common": {"intersect_0": {"intersect_method": "rsa","sync_intersect_ids": false,"only_output_key": true,"rsa_params": {"hash_method": "sha256","final_hash_method": "sha256","split_calculation": false,"key_length": 2048}}},"role": {"guest": {"0": {"reader_0": {"table": {"name": "tb_guest","namespace": "sp_guest"}},"data_transform_0": {"with_label": false,"output_format": "dense"}}},"host": {"0": {"reader_0": {"table": {"name": "tb_host","namespace": "sp_host"}},"data_transform_0": {"with_label": false,"output_format": "dense"}}}}}
}

1.3执行任务(guest端执行)

cd /data/projects/fate/examples/mytest
source /data/projects/fate/bin/init_env.sh
flow job submit -d test_intersect_job_dsl.json -c test_intersect_job_raw_conf.json

2、1v2案例

本次案例在guest上执行求交任务,求交host2个文件

2.1 上传文件

2.1.1 host创建上传脚本(2个):

upload_xxl_host.json

# 上传第一个文件:upload_xxl_host1.json
{"file": "/data/projects/fate/examples/mytest/1v2/xxl_test_host1.csv","head": 1,"partition": 10,"work_mode": 0,"namespace": "sp_host1","table_name": "tb_host1"
}# 上传第二个文件:upload_xxl_host2.json
{"file": "/data/projects/fate/examples/mytest/xxl_test_host2.csv","head": 1,"partition": 10,"work_mode": 0,"namespace": "sp_host2","table_name": "tb_host2"
}
2.1.2 guest创建脚本:

upload_xxl_guest.json

{"file": "/data/projects/fate/examples/mytest/1v2/xxl_test_guest.csv","head": 1,"partition": 10,"work_mode": 0,"namespace": "sp_guest1","table_name": "tb_guest1"
}
2.1.3 上传文件

# host 端:
source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/mytest/1v2

flow data upload -c upload_xxl_host1.json

flow data upload -c upload_xxl_host2.json

# guest端:
source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/mytest/1v2

flow data upload -c upload_xxl_guest.json

2.2 创建任务脚本

本次任务在guest上执行,任务脚本在guest端

2.2.1 创建dsl文件

test_union_job_dsl.json

{"components": {"reader_0": {"module": "Reader","output": {"data": ["data"]}},"reader_1": {"module": "Reader","output": {"data": ["data"]}},"intersection_0": {"module": "Intersection","input": {"data": {"data": ["reader_0.data"]}},"output": {"data": ["data"]}},"intersection_1": {"module": "Intersection","input": {"data": {"data": ["reader_1.data"]}},"output": {"data": ["data"]}},"union_0": {"module": "Union","input": {"data": {"data": ["intersection_0.data","intersection_1.data"]}},"output": {"data": ["data"]}}}
}
2.2.2 创建任务配置文件

test_union_job_conf.json

注意:因为 guest 只有1个文件,host 有2个文件,guest 1个文件求交 host 2个文件,所以这里 guest 角色的 reader_ 和 reader_1 读取的数据都是 guest 同一个表的同一份数据

{"dsl_version": 2,"initiator": {"role": "guest","party_id": 9999},"role": {"host": [10000],"guest": [9999]},"component_parameters": {"common": {"union_0": {"allow_missing": false,"need_run": true}},"role": {"guest": {"0": {"reader_0": {"table": {"name": "tb_guest1","namespace": "sp_guest1"}},"reader_1": {"table": {"name": "tb_guest1","namespace": "sp_guest1"}}}},"host": {"0": {"reader_0": {"table": {"name": "tb_host1","namespace": "sp_host1"}},"reader_1": {"table": {"name": "tb_host2","namespace": "sp_host2"}}}}}}
}

2.3 执行任务(guest端执行)

cd /data/projects/fate/examples/mytest/1v2
source /data/projects/fate/bin/init_env.sh

flow job submit -d test_intersect_job_dsl.json -c test_intersect_job_raw_conf.json

正确求交页面显示:

这篇关于fate隐私求交案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806358

相关文章

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多