第4课,SecretFlow与Secretnote的安装部署

第4课,SecretFlow与Secretnote的安装部署

SecretFlow安装

环境要求

  • Python >= 3.8
  • 操作系统
    • CentOS 7
    • Anolis8
    • Ubuntu 18.04/20.04
    • macOS 11.1+
    • WSL2
  • 资源:≥ 8核16GB

这里我使用的环境是 Ubuntu 20,Python == 3.10.11

安装方式

  • 方式一:docker镜像
  • 方式二:pypi
  • 方式三:源码

这里我使用pypi安装,因为比较方便,其他安装方式 见隐语 · 实训社区 (secret-flow.com)

使用pip直接安装即可

pip install secretflow

SecretFlow部署模式

一个由快速验证到安全生产的过程

请添加图片描述

SecretFlow使用Ray作为分布式计算调度框架。Ray集群由一个主节点和零或若干个从节点组成

仿真模式 – 单机仿真

单个节点模拟alice、bob两个参与方

address=‘local’:表示启动一个本地的Ray节点

import secretflow as sf
sf.init(parties=['alice', 'bob'], address='local')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
alice(lambda x : x + 1)(2)
bob(lambda x : x - 1)(2)

实机执行结果

请添加图片描述

仿真模式 – 集群仿真

部署两个节点,分别模拟alice、bob两个参与方

  1. 在第一台机器上部署Ray主节点,模拟参与方alice

填写真的主节点ip和port, 因为只有一台服务器,所以填本地的

ray start --head \
--node-ip-address="127.0.0.1" --port="65534" \
--resources='{"alice": 16} ' \
--include-dashboard=False \
--disable-usage-stats

运行结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在第二台机器上部署Ray从节点,模拟参与方bob

address填写Ray主节点ip和port

ray start \
--address="127.0.0.1:65534" \
--resources=' {"bob": 16} ' \
--disable-usage-stats

运行结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 执行python代码

在alice或者bob其中一台机器上执行即可。

import secretflow as sf
sf.init(parties=['alice', 'bob'], address='127.0.0.1:65534')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
alice(lambda x : x)(2)
bob(lambda x : x)(2)

运行结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 创建密态设备SPU

填写实际的alice和bob的通信地址

import spu
cluster_def = {
'nodes': [{
'party': 'alice',
'address': '127.0.0.1:65534',
}, {
'party': 'bob',
'address': '127.0.0.1:65534',
},
],
'runtime_config': {
'protocol': spu.spu_pb2.SEMI2K,
'field': spu.spu_pb2.FM128,
'sigmoid_mode': spu.spu_pb2.RuntimeConfig.SIGMOID_REAL,
}
}
spu = sf.SPU(cluster_def=cluster_def)

运行结果

在这里插入图片描述

通信网路示意图

在这里插入图片描述

SecretFlow部署 – 生产模式

相比仿真模式,生产模式主要不同:安全增强

  • 每一个参与方都是独立的Ray集群
  • 所有参与方都需要执行代码

部署两个节点,分别模拟alice、bob两个参与方,此步骤与集群仿真相同,然后需要Alice 和Bob 分别执行代码

alice执行python代码

  • cliuster_config中的address分别填写alice/bob的通信地址
  • cluster_config中的self_party为alice
  • sf.init中的address填写第一台机器(alice)的Ray主节点ip和port。
import secretflow as sf
cluster_config ={
'parties': {
'alice’: {'address': 'ip:port of alice'},
'bob': {'address': 'ip:port of bob'},
},
'self_party': 'alice',
}
sf.init(address='{Ray head node address of alice}',
cluster_config=cluster_config)

bob执行python代码

  • cliuster_config中的address分别填写alice/bob的通信地址
  • cluster_config中的self_party为bob
  • sf.init中的address填写第二台机器(bob)的Ray主节点ip和port。
import secretflow as sf
cluster_config ={
'parties': {
'alice’: {'address': 'ip:port of alice'},
'bob': {'address': 'ip:port of bob'},
},
'self_party': 'bob',
}
sf.init(address='{Ray head node address of bob}',
cluster_config=cluster_config)

创建密态设备SPU

  • 填写实际的alice和bob的通信地址,用于SPU通信
  • alice和bob都需要执行这段代码
  • 注意不要和Ray通信端口、SecretFlow通信端口冲突
import spu
cluster_def = {
'nodes': [{
'party': 'alice',
'address': '{ip:port of alice}',
}, {
'party': 'bob',
'address': '{ip:port of bob}',
},
],
'runtime_config': {
'protocol': spu.spu_pb2.SEMI2K,
'field': spu.spu_pb2.FM128,
'sigmoid_mode': spu.spu_pb2.RuntimeConfig.SIGMOID_REAL,
}
}
spu = sf.SPU(cluster_def=cluster_def)

通信网络示意图

在这里插入图片描述

使用KUSCIA解决多端口问题

KUSCIA定位 屏蔽不同机构间基础设施的差异,为跨机构协作提供丰富且可靠的资源管理和任务调度能力。

在这里插入图片描述

使用SecretNote提升体验

所有参与方都需要执行代码, 能否像Jupyter Notebook一样在 一个页面上执行多方代码?

使用SecretNote
在这里插入图片描述

SecretFlow是一个用于保护机密信息的Python库。它提供了下载工具源码和配置Python虚拟环境的步骤,可以通过克隆GitHub仓库、创建虚拟环境和激活虚拟环境来获取SecretFlow的源码。在SecretFlow的官方文档中,你可以找到更详细的教程和说明。在使用SecretFlow时,你可以使用secretflow.init函数以独立模式运行它,并传入一些参数,如'alice', 'bob', 'carol'作为参与者和8个CPU核心的数量。通过这种方式,SecretFlow可以在集群模式下运行,以更高效地保护你的机密信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SecretFlow:一款功能强大的隐私保护数据分析和机器学习统一框架](https://blog.csdn.net/qq_69775412/article/details/127191864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SecretFlow隐语-简介](https://blog.csdn.net/lucklilili/article/details/126409906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值