隐语训练营第 4 讲:SecretFlow与Secretnote的安装部署

一、SecretFlow安装

1. 运行要求

  • Python >= 3.8
  • 操作系统:
  • CentOS 7
  • Anolis8
  • Ubuntu 18.04/20.04
  • macOS 11.1+ (支持M1和M2芯片)
  • WSL2
  • 资源:≥ 8核16GB

2. SecretFlow安装包类型

SecretFlow

  • 包含secretflow所有的requirements
  • 体积较大

SecretFlow-lite

  • 仅包含基础功能(不包含深度学习等依赖库)
  • 体积较小

3. 多种安装方式 

(1) 方式一:docker镜像

Docker hub

docker run -it secretflow/secretflow-anolis8:latest

docker run –it secretflow/secretflow-lite-anolis8:latest

阿里云 

docker run -it secretflow-registry.cn-hangzhou.cr.aliyuncs.com/secretflow-anolis8:latest

docker run –it secretflow-registry.cn-hangzhou.cr.aliyuncs.com /secretflow-lite-anolis8:latest

(2) 方式二:pypi
pip install -U secretflow
pip install -U secretflow-lite
  • 要求pip >= 19.3

  • 建议使用conda管理python环境

(3) 方式三:源码
  1. 下载源码并建立Python虚拟环境

git clone https://github.com/secretflow/secretflow.git

cd secretflow

conda create -n secretflow python==3.8

conda activate secretflow

     2.安装secretflow

python setup.py bdist_wheel

pip install dist/*.whl

  • 要求pip >= 19.3
  • 建议使用conda管理python环境

二、SecretFlow部署—仿真模式 

  • 适合仿真实验,验证代码效果
  • 既支持单机仿真,也支持多机仿真
  • 只需要执行一次代码

 1.单机仿真

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

>>> 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)
<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>
>>> bob(lambda x : x - 1)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>

parties表示参与方是alice和bob

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

PYU为明文设备

2.集群仿真

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

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

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

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

​ address填写Ray主节点ip和port,形如ip:prot

ray start \
--address="{Ray主节点的通信地址}" \
--resources=' {"bob": 16} ' \
--include-dashboard=False \
--disable-usage-stats

c. 执行python代码

​ 在alice或者bob其中一台机器上执行即可,address填写实际Ray主节点ip和port。

>>> import secretflow as sf
>>> sf.init(parties=['alice', 'bob'], address=' {ip:port}')
>>> alice = sf.PYU('alice')
>>> bob = sf.PYU('bob')
>>> alice(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>
>>> bob(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>

 d.(可选) 创建密态设备SPU

     对于SPU,每个参与方都有对应的SPU进程,它需要相应的监听地址。

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

  • 注意不能和Ray的通信地址端口冲突

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)

总结 

三、SecretFlow部署—生产模式 

对仿真模式的极少量修改,安全增强

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

节点部署

​ 部署两个节点,分别模拟Alice、Bob两个参与方。

Alice节点

​ 在第一台机器上部署Ray主节点,模拟参与方Alice。

填写真的ip与port

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

​ 在第二台机器上部署Ray主节点,模拟参与方Bob。

填写真的ip与port

ray start –-head \
--node-ip-address="{ip}" --port="{port} " \
--resources='{"bob": 16} ' \
--include-dashboard=False \
--disable-usage-stats
 Alice执行Python代码
  • cluster_config中的address分别填写alicebob的通信地址 (注意不要和Ray的端口冲突) ,请指定新的端口。

  • 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代码
  • cluster_config中的address分别填写alicebob的通信地址 (注意不要和Ray的端口冲突) ,请指定新的端口。

  • 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': 'bob'}
 
sf.init(address='{Ray head node address of bob}', 
cluster_config=cluster_config) 

 创建密态设备SPU(可选)
  • 填写实际的alice和bob的通信地址,用于SPU通信
  • alice和bob都需要执行这段代码
  • 注意不要和Ray通信端口、SecretFlow通信端口冲突

​ Alice和Bob都需要加入以下内容:

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 

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

 五、SecretNote

https://github.com/secretflow/secretnote

  • 和jupyter notebook操作类似的使用方法

  • 单操作界面,多节点代码自动执行

  • 多节点代码运行跟踪

部署

(1)使用pypi方式下载安装

pip install secretnote

(2)启动

secretnote --ServerApp.port 8889

(3)在界面中添加节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值