隐私计算(四):SecretFlow隐语安装部署

SecretFlow安装

环境要求:

  • Python >=3.8

  • OS

    • CentOS 7

    • Anolis8

    • Ubuntu 18.04/20.04

    • MacOS 11.1+

    • WSL2

  • 资源:>=8核16GB

SecretFlow

  • 包含secretflow所有的requirements

  • 体积较大

SecretFlow-lite

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

  • 体积较小

三种安装方式

  • Docker镜像

#完全版
docker run -it secretflow/secretflow-anolis8:latest
#lite版
docker run -it secretflow/secretflow-lite-anolis8:latest
  • pypi

pip install -U secretflow
pip install -U secretflow-lite
  1. pip>=19.3

  2. 建议使用conda管理python环境

  • 源码

#下载源码建立Python虚拟环境
git clone https://github.com/secretflow/secretflow.git
cd secretflow
​
conda create -n secretflow python=3.8
conda activate secretflow
#安装SecretFlow
#完整版
python setup.py bdist_wheel
pip install dist/*.whl
#lite版
python setup.py bdist_wheel --lite
pip install dist/*.whl

SecretFlow部署-仿真模式

  • 适合仿真实验,验证代码效果

  • 既支持单机仿真,也支持多机仿真

  • 只需要执行一次代码

单机仿真

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

import secret flow as sf
#address='local' 表示启动一个本地Ray节点
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

    ray start --head\
    #ip、port对应于主机的ip与port
    --node-ip-address="{ip}" --port="port"\
    --resources='{"alice":16}'\
    --include-dashboard=False\
    --disable-usage-stats
  2. 在第二台机器上部署Ray从节点,模拟参与方bob

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

    任意一方执行即可

    import secretflow as sf
    #address填写实际Ray主节点ip和port
    sf.init(parties=['alice','bob'],address='ip:port') 
    alice=sf.PYU('alice')
    bob=sf.PYU('bob')
    alice(lambda x:x)(2)
    bob(lambda x:x)(2)
  4. (可选)创建密态设备SPU

    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.SIGMOD_REAL
        }
    }
    spu=sf.SPU(cluster_def=cluster_def)

SecretFlow部署-生产模式

与仿真模式相比:

  • 每一个参与方都是独立的Ray集群

  • 所有参与方都需要执行代码

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

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

    ray start --head\
    #ip、port对应于主机的ip与port
    --node-ip-address="{ip}" --port="port"\
    --resources='{"alice":16}'\
    --include-dashboard=False\
    --disable-usage-stats
  2. 在第二台机器上部署Ray从节点,模拟参与方bob

    ray start\
    --address="{Ray主节点的通信地址}"\
    --resources='{"bob":16}'\
    --include-dashboard=False\
    --disable-usage-stats
  3. alice执行python代码

    import secretflow as sf
    cluster_config={
        'parties':{
            'alice':{'address':'ip:port of alice'},
            'bob':{'address':'ip:port of bob'}
        },
        'self_party':'alice'
    }
    sf.init(
        #填写Alice的ray主节点ip和port
        address='{Ray head node address of bob}',
        cluster_config=cluster_config
    )
  4. bob执行Python代码

    import secretflow as sf
    cluster_config={
        'parties':{
            'alice':{'address':'ip:port of alice'},
            'bob':{'address':'ip:port of bob'}
        },
        'self_party':'bob'
    }
    sf.init(
        #填写bob的ray主节点ip和port
        address='{Ray head node address of alice}',
        cluster_config=cluster_config
    )
  5. (可选)创建密态设备SPU

    aliceh和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.SIGMOD_REAL
        }
    }
    spu=sf.SPU(cluster_def=cluster_def)

使用KUSCIA解决多端口问题

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

SecretNote使用

GitHub - secretflow/secretnote

下载到本地

secretnote-main/docker/sim下使用docker启动secretnote服务

docker compose up

在浏览器使用公网ip连接secretflow

查看公网ip:

ifconfig

找到对应于docker的公网ip

添加alice节点(使用自己主机的公网ip地址)

添加bob节点

我们需要一个数据集来构建垂直分区的场景。可以点击下面的两个链接下载数据集。

iris_alice.csv

iris_bob.csv

对应参与方上传文件

我们继

继续点击下面的链接下载一份示例代码,然后导入到 Notebook 列表中。

psi.ipynb

逐个运行实例程序,得到psi结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值