【隐私计算实训营——004上手隐语SecretFlow和SecretNote安装部署】

1. SecretFlow安装

1.1 环境要求

  • Python>=3.8
  • 操作系统
    • Ubuntu18+
  • 资源:>=8核16GB
  • 安装包
    • secretflow-lite

安装方式

  • docker(推荐)

2. SecretFlow部署模式

在这里插入图片描述
SecretFlow使用Ray作为分布式计算调度框架。
Ray集群由一个主节点和零或若干个从节点组成。

3 仿真模式

在这里插入图片描述

3.1单机仿真

我们通过docker来启动secretflow,这里我安装的是secretflow/secretflow-lite-anolis8

# 运行secretflow
docker run secretflow/secretflow-lite-anolis8
# 查看containerId
docker ps
# 进入容器
docker exec -it [containerId] /bin/bash
# 进入python环境
python

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

import secretflow as sf
sf.init(parties=['alice','bob'],address='local')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
# 将明文值2通过密文计算加一的操作,得到一个密文结果
alice(lambda x:x+1)(2)
# <secretflow.device.device.pyu.PYUObject object at 0x7f7e75208880>
# 将明文值2通过密文计算减一的操作,得到一个密文结果
alice(lambda x:x-1)(2)
# <secretflow.device.device.pyu.PYUObject object at 0x7f7e75131f30>

3.2 集群仿真

这里我是用docker来进行集群模式的仿真,所以我需要了解一下docker网络的概念。
在这里我采用的是Host网络模式,该模式下容器和docker主机共享网络IP和端口。

3.2.1 启动主alice节点

#启动docker
docker run --rm -d -it --network host --name alice secretflow/secretflow-lite-anolis8:latest
# 查看containerId
docker ps
# 进入容器
docker exec -it [containerId] /bin/bash
#启动ray主节点
ray start --head --node-ip-address=127.0.0.1 --port=9001 --resources='{"alice": 16}' --include-dashboard=False --disable-usage-stats

注意:

  1. 请使用真实的ip地址和端口。
  2. {“alice”: 16} 意味着alice最多可以同时运行16个worker。 您可以按需要自行调整。
  3. 当屏幕中输出 “Ray runtime started.” 意味着主节点成功启动。

3.2.2 启动bob从节点

#启动docker
docker run --rm -d -it --network host --name bob secretflow/secretflow-lite-anolis8:latest
# 查看containerId
docker ps
# 进入容器
docker exec -it [containerId] /bin/bash
#启动ray从节点
ray start --address=127.0.0.1:9001 --resources='{"bob": 16}' --disable-usage-stats
  1. 请使用主节点的ip地址和端口。
  2. {“bob”: 16} 意味着alice最多可以同时运行16个worker。 您可以按需要自行调整。
  3. 当屏幕中输出 “Ray runtime started.” 意味着主节点成功启动。

3.2.3 运行代码

在任一台机器上运行代码,最后会发送到主节点进行计算。

import secretflow as sf
sf.init(parties=['alice','bob'],address='127.0.0.1:9001')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
# 将明文值2通过密文计算加一的操作,得到一个密文结果
alice(lambda x:x+1)(2)
# <secretflow.device.device.pyu.PYUObject object at 0x7f7e75208880>
# 将明文值2通过密文计算减一的操作,得到一个密文结果
alice(lambda x:x-1)(2)
# <secretflow.device.device.pyu.PYUObject object at 0x7f7e75131f30>

3.2.4 创建密态设备SPU

我们设置通信地址如下:(注意不能和Ray的通信地址端口冲突)

  • alice的通信地址:127.0.0.1:9101
  • bob的通信地址:127.0.0.1:9102
    同时设置SPU的端口:
  • alice的SPU监听端口地址:9101
  • bob的SPU监听端口地址:9102

执行以下代码

import spu
import secretflow as sf
# Use ray head adress please.
sf.init(parties=['alice', 'bob'], address='127.0.0.1:9001')
cluster_def={
    'nodes': [
        {
            'party': 'alice',
            # Please choose an unused port.
            'address': '127.0.0.1:9101',
            'listen_addr': '0.0.0.0:9101'
        },
        {
            'party': 'bob',
            # Please choose an unused port.
            'address': '127.0.0.1:9102',
            'listen_addr': '0.0.0.0:9102'
        },
    ],
    '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)
# 利用SPU来进行运算
spu(lambda x:x+1)(2)

4. 生产模式

相比仿真模式,生产模式主要是进行了安全增强:

  • 每个参与方都是独立的Ray集群
  • 所有参与方都需要执行代码
    注意:请牢记alice和bob需要同时运行代码。
    在这里插入图片描述
    通过了解:
    我们发现存在三套地址
  • Ray头节点的监听地址
    • alice 127.0.0.1:9001
    • bob 127.0.0.1:9002
  • Proxy的通信地址
    • alice 127.0.0.1:9101
    • bob 127.0.0.1:9102
  • SPU的通信端口
    • alice 9201
    • bob 9202

4.1 部署步骤

在alice节点中运行如下python代码

import secretflow as sf
cluster_config ={
    'parties': {
        'alice': {
            # replace with alice's real address.
            'address': '127.0.0.1:9101',
            'listen_addr': '0.0.0.0:9201'
        },
        'bob': {
            # replace with bob's real address.
            'address': '127.0.0.1:9102',
            'listen_addr': '0.0.0.0:9202'
        },
    },
    'self_party': 'alice'
}
sf.init(address='127.0.0.1:9001', cluster_config=cluster_config)
# your code to run.

之前我们的bob节点为从节点,所以需要关闭后重启为主节点。

# 关闭集群 
ray stop
# 启动bob为主节点
ray start --head --node-ip-address=127.0.0.1 --port=9002 --resources='{"bob": 16}' --include-dashboard=False --disable-usage-stats

在alice节点中运行如下python代码

import secretflow as sf
cluster_config ={
    'parties': {
        'alice': {
            # replace with alice's real address.
            'address': '127.0.0.1:9101',
            'listen_addr': '0.0.0.0:9201'
        },
        'bob': {
            # replace with bob's real address.
            'address': '127.0.0.1:9102',
            'listen_addr': '0.0.0.0:9202'
        },
    },
    'self_party': 'bob'
}
sf.init(address='127.0.0.1:9002', cluster_config=cluster_config)
# your code to run.

4.2 生产模式——KUSCIA解决多端口问题

在这里插入图片描述

5. SecretNote和SCQL安装与使用

SecretNote是专为隐语开发者打造的高级工具套件。以notebook的形式呈现,支持多节点代码执行和文件管理,同时执行运行状态追踪功能,极大地提升开发者的效率和工作体验。
https://github.com/secretflow/secretnote?spm=a2c6h.12873639.article-detail.8.20d665253mLsK9

  • 33
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值