隐私计算实训营第四讲-SecretFlow 环境安装与部署

SecretFlow 环境安装与部署

SecretFlow环境的安装和部署指南,包括仿真模式和生产模式的配置方法。

1. 环境安装

要安装SecretFlow环境,请按照以下步骤操作:

1.1 创建并激活Conda环境

  1. 创建名为 sf 的新Conda环境,并指定Python版本为3.8:

    conda create -n sf python==3.8
    
  2. 激活新创建的 sf 环境:

    conda activate sf
    

1.2 安装SecretFlow库

在激活的Conda环境中,使用pip安装SecretFlow库:

pip install -U secretflow

2. 部署模式

SecretFlow支持两种部署模式:仿真模式和生产模式。两者的对比如下表所示。

部署模式场景如何部署Ray如何运行代码代码差异
仿真模式单机构内部局域网环境下的仿真实验。由多个仿真节点组成的单个Ray集群。选择任一节点执行一遍代码。sf.init 中填写 parties 参数。
生产模式正式生产环境,比如多个机构协作。每个机构都需要独立部署各自的Ray集群。每个机构都需要同时执行代码。sf.init 中填写 cluster_config 参数,剩余代码与仿真模式完全一样。

2.1 仿真模式

仿真模式适用于单机构内部局域网环境下进行仿真实验,包括单机仿真和集群模式仿真。

2.1.1 单机仿真

单机仿真模式下,使用以下代码在本地环境启动SecretFlow仿真:

在这里插入图片描述

2.1.2 集群模式仿真

在隐语的集群仿真模式下,每个Ray节点模拟一个机构,具体做法是通过给每个Ray节点添加机构名称标记,从而保证机构的计算被调度到相应的Ray节点上。 整体通信网络如下。

在这里插入图片描述

集群模式仿真允许在多个节点上进行仿真,模拟多机构环境。首先,在一台机器上启动主节点,然后在其他机器上启动更多节点并加入主节点构成的集群。

启动主节点

在第一台机器上,执行以下命令启动带有“alice”标识的主节点:

ray start --head --node-ip-address="127.0.0.1" --port="9001" --resources='{"alice": 16}' --include-dashboard=False --disable-usage-stats
启动其他节点

在另一台机器上,执行以下命令启动带有“bob”标识的节点,该节点会自动连接到主节点并加入集群:

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

当屏幕输出中出现 “Ray runtime started.” 意味着节点启动成功。现在由两个Ray节点构成的Ray集群已经搭建完毕。其中,头节点模拟机构alice,从节点模拟机构bob。你也可以继续重复上述步骤以启动带有其他参与方标识的节点

在这里插入图片描述

启动SecretFlow

现在你可以启动SecretFlow。下面这段代码表示alice和bob分别执行了一个返回输入值的函数。

提示

  1. 请使用主节点的 node-ip-addressport 填充 sf.initaddress 参数。
  2. 如果你启动了更多的节点(比如carol、davy等),记得在parties=['alice', 'bob']参数中添加新的参与方名称。

在这里插入图片描述

2.2 生产模式

生产模式适用于正式的生产环境,尤其是多个机构需要协作的场景。在生产模式下,每个参与方都需要独立部署自己的Ray集群,并且所有参与方需要同时运行代码。 与此同时,每一个参与方都要同时执行代码,才能完成任务的协作 。生产模式的架构如下图所示。

在这里插入图片描述

2.2.1 创建跨机构的SecretFlow集群

提示

  1. 请使用主节点的 node-ip-addressport 填充 sf.initaddress 参数。
  2. aliceaddress 请填写可以被bob访通的地址,并且选择一个 未被占用的端口 ,注意不要和Ray和SPU的端口冲突。
  3. bobaddress 请填写可以被alice访通的地址,并且选择一个 未被占用的端口 ,注意不要和Ray和SPU的端口冲突。
  4. 注意 self_party 为 自己 。
  5. 请注意sf.init不需要提供 parties 参数,而是需要提供 cluster_config 来描述两个机构之间的通信地址和端口。
  6. 为了确保alice和bob的端口能够被对方访问同时系统的防火墙不被关闭,您应该把alice和bob的IP地址加入到对方的IP白名单
  7. telnet 命令通常用于测试端口的可访问性。
在alice节点上启动SecretFlow
  1. Alice首先启动自己的Ray集群。
  2. 使用集群配置初始化SecretFlow,self_party字段修改为alice并运行代码。确保cluster_config参数正确配置,包括各参与方的通信地址和端口。
cluster_config = {
    'parties': {
        'alice': {'address': 'ip:port of alice', 'listen_addr': '0.0.0.0:port'},
        'bob': {'address': 'ip:port of bob', 'listen_addr': '0.0.0.0:port'}
    },
    'self_party': 'alice'
}
sf.init(address='alice ray head node address', cluster_config=cluster_config)
# 在这里运行你的代码

在bob节点上启动SecretFlow
  1. Bob首先启动自己的Ray集群,使用类似于alice节点的命令。
  2. Bob使用和Alice类似的集群配置初始化SecretFlow,self_party字段修改为bob,然后运行代码。
cluster_config = {
    'parties': {
        'alice': {'address': 'ip:port of alice', 'listen_addr': '0.0.0.0:port'},
        'bob': {'address': 'ip:port of bob', 'listen_addr': '0.0.0.0:port'}
    },
    'self_party': 'bob'
}
sf.init(address='bob ray head node address', cluster_config=cluster_config)

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值