隐语安装环境:
- Python>=3.8
- Ubuntu18+
- 硬件资源:>=8核16G
隐语安装包:
- secretflow-lite
隐语推荐安装方式:
- docker
隐语部署模式:
1) 仿真模式:验证效果
- 单机仿真:
import secretflow as sf
sf.init(parties=['alice', 'bob'], address='local')
- 集群仿真
一个机器执行:
ray start --head --node-ip-address="ip" --port="port" --resources='{"alice": 16}' --include-dashboard=False --disable-usage-stats
另一个机器执行:
注意:
ip:port
为主节点的node-ip-address
和port
。ray start --address="ip:port" --resources='{"bob": 16}' --disable-usage-stats
启动Secretflow, 仅仅PYU:
>>> import secretflow as sf
# Replace with the `node-ip-address` and `port` of head node.
>>> sf.init(parties=['alice', 'bob'], address='112.134.32.5:8888')
>>> alice = sf.PYU('alice')
>>> bob = sf.PYU('bob')
>>> alice(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x9fe932a1a645>
>>> bob(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x9fe6fef03252>
启动SPU:
import spu
import secretflow as sf
# Use ray head adress please.
sf.init(parties=['alice', 'bob'], address='Ray head node address')
cluster_def={
'nodes': [
{
'party': 'alice',
# Please choose an unused port.
'address': 'ip:port of alice',
'listen_addr': '0.0.0.0:port'
},
{
'party': 'bob',
# Please choose an unused port.
'address': 'ip:port of bob',
'listen_addr': '0.0.0.0:port'
},
],
'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)
注意:
- 请使用主节点的
node-ip-address
和port
填充sf.init
的address
参数。alice
的address
请填写可以被bob访通的地址,并且选择一个 未被占用的端口 ,注意不要和Ray端口冲突。alice
的listen_addr
可以和aliceaddress
里的端口一样。bob
的address
请填写可以被alice访通的地址,并且选择一个 未被占用的端口 ,注意不要和Ray端口冲突。bob
的listen_addr
可以和bobaddress
里的端口一样。
2) 生产模式:安全增强
Alice的启动Ray网络:
ray start --head --node-ip-address="ip" --port="port" --include-dashboard=False --disable-usage-stats
配置为:
cluster_config ={
'parties': {
'alice': {
# replace with alice's real address.
'address': 'ip:port of alice',
'listen_addr': '0.0.0.0:port'
},
'bob': {
# replace with bob's real address.
'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)
# your code to run.
Bob启动Ray网络:
ray start --head --node-ip-address="ip" --port="port" --include-dashboard=False --disable-usage-stats
配置为:
cluster_config ={
'parties': {
'alice': {
# replace with alice's real address.
'address': 'ip:port of alice',
'listen_addr': '0.0.0.0:port'
},
'bob': {
# replace with bob's real address.
'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)
# your code to run.
如何启动SPU: 同仿真模式