课4-隐语SecretFlow、SecretNote安装部署

简介: SecretFlow是支持Python 3.8及以上版本的隐私计算框架,兼容CentOS 7、Anolis8、Ubuntu 18.04等等。它提供两种安装包:所有需求的大体积`secretflow`和仅含基础功能的小体积`secretflow-lite`。用户可通过Docker、pip或源码安装。安装后,可使用Docker镜像在本地部署,并通过Ray进行集群仿真。更多详细信息和部署指南可在官方手册中找到。此外,SecretFlow还提供了类似Jupyter Notebook的SecretNote工具,实现多节点代码自动执行和跟踪。

SecretFlow

SecretFlow运行要求

  • Python >= 3.8
  • 操作系统:

    • CentOS 7 
    • Anolis8 
    • Ubuntu 18.04/20.04 
    • macOS 11.1+ 
    • WSL2
    
  • 资源:≥ 8核16GB

SecretFlow安装包

  • secretflow
    • 包含secretflow所有的requirements 
    • 体积较大
    
  • secretflow-lite
    • 仅包含基础功能(不包含深度学习等依赖库) 
    • 体积较小
    

SecretFlow安装方式

  • 方式一: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
    
  • 方式二:pypi

    pip install –U secretflow 
    pip install –U secretflow-lite
    1.要求pip >= 19.3 
    2.建议使用conda管理python环境
    
  • 方式三:源码

  1. 下载源码并建立Python虚拟环境

    git clone https://github.com/secretflow/secretflow.git 
    cd secretflow 
    conda create -n secretflow python==3.8 
    conda activate secretflow
    
  2. 安装secretflow

    # 涉及到C++编译,建议使用镜像secretflow/release-ci:latest 
    python setup.py bdist_wheel 
    pip install dist/*.whl
    1.要求pip >= 19.3 
    2.建议使用conda管理python环境
    

SecretFlow部署

  • 本地docker镜像中心
    image.png

  • 后台运行隐语docker容器
    image.png

  • 查看容器进程
    image.png

  • 进入隐语容器
    image.png

仿真模式

单机仿真

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

# local.py
import secretflow as sf

sf.init(parties=['alice', 'bob'], address='local')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
a = alice(lambda x : x + 1)(2)
print(a)
b = bob(lambda x : x - 1)(2)
print(b)

image.png

集群仿真

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

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

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

    image.png

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

    ray start --address="172.17.0.3:8001" --resources=' {"bob": 3} ' --disable-usage-stats
    

    image.png

    PPT错误
    image.png
    image.png
    详见手册:
    https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/getting_started/deployment
    image.png

address='172.17.0.3:8001'

# local2.py
import secretflow as sf

sf.init(parties=['alice', 'bob'], address='172.17.0.3:8001')
alice = sf.PYU('alice')
bob = sf.PYU('bob')
a = alice(lambda x : x + 1)(2)
print(a)
b = bob(lambda x : x - 1)(2)
print(b)

image.png

创建密态设备SPU
# test_spu.py
import spu
import secretflow as sf

# Use ray head adress please.
sf.init(parties=['alice', 'bob'], address='172.17.0.3:8001')

cluster_def={
   
    'nodes': [
        {
   
            'party': 'alice',
            # Please choose an unused port.
            'address': 'ip:port of alice',
            'listen_addr': '172.17.0.3:9001'
        },
        {
   
            'party': 'bob',
            # Please choose an unused port.
            'address': 'ip:port of bob',
            'listen_addr': '172.17.0.4:9001'
        },
    ],
    '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)
print(spu)

image.png

仿真集群通信网络

image.png

生产模式

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

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

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

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

两台机器上分别执行代码

  • alice执行python代码
    cliuster_config中的address分别填写alice/bob的通信地址(注意不要和Ray的端口冲突)
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代码
    cliuster_config中的address分别填写alice/bob的通信地址(注意不要和Ray的端口冲突)
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)

image.png

创建密态设备SPU

cluster_def注意不要和Ray通信端口、SecretFlow通信端口冲突

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)
生产模式的通信网络

image.png

使用KUSCIA解决多端口问题
KUSCIA定位:屏蔽不同机构间基础设施的差异,为跨机构协作提供丰富且 可靠的资源管理和任务调度能力。
SPU、Ray通信多端口  》 统一网络基础设施 》 KUSCIA

SecretNote

https://github.com/secretflow/secretnote

类Jupyter Notebook,与Notebook一致的使用体验;
单操作界面,多节点代码自动执行;
多节点代码运行跟踪。
相关文章
|
Ubuntu 调度 Docker
2024.3.21隐语训练营第4讲笔记:SecretFlow & SecretNote安装部署
本文介绍了SecretFlow和SecretNote的安装和部署
1214 3
|
SQL 安全 数据挖掘
课7-隐语SCQL的架构详细拆解
SCQL是安全协作查询语言,针对多⽅隐私保护的数据分析。它在不泄露数据隐私的情况下,允许互不信任的参与⽅联合分析数据。SCQL采用半诚实安全模型,支持多⽅协作(N大于等于2方),并提供MySQL兼容的SQL接口。关键特性包括列级别授权(CCL)、多种密态协议支持和跨多种数据源接入。CCL是列控制列表,定义数据使用约束。SCQL架构包括SCDB(不参与计算)和SCQLEngine(部署在数据参与⽅),通过流程图和架构图展示其工作原理,适用于医疗研究、联合营销和保险理赔等场景。
|
机器学习/深度学习 算法 安全
隐私计算训练营第三讲-详解隐私计算的架构和技术要点
SecretFlow 是一个隐私保护的统一框架,用于数据分析和机器学习,支持MPC、HE、TEE等隐私计算技术。它提供设备抽象、计算图表示和基于图的ML/DL能力,适应数据水平、垂直和混合分割场景。产品层包括SecretPad(快速体验核心能力)和SecretNote(开发工具)。算法层涉及PSI、PIR、数据分析和联邦学习(水平、垂直、混合)。此外,SecretFlow还有YACL密码库和Kusica任务调度框架,Kusica提供轻量化部署、跨域通信和统一API接口。
1265 0
|
Kubernetes Ubuntu 网络安全
Ubuntu系统关闭防火墙的正确方式
Ubuntu系统关闭防火墙的正确方式
2752 2
|
缓存 运维 监控
vLLM推理加速指南:7个技巧让QPS提升30-60%
GPU资源有限,提升推理效率需多管齐下。本文分享vLLM实战调优七招:请求塑形、KV缓存复用、推测解码、量化、并行策略、准入控制与预热监控。结合代码与数据,助你最大化吞吐、降低延迟,实现高QPS稳定服务。
3045 7
vLLM推理加速指南:7个技巧让QPS提升30-60%
|
canal 关系型数据库 MySQL
数据同步神器-Canal
Canal是阿里巴巴开源的MySQL增量日志解析工具,通过模拟MySQL主从复制机制,实时捕获数据库变更,实现数据同步至Kafka、Elasticsearch等系统,广泛应用于数据同步、监控、备份与迁移场景。
8615 5
|
算法 安全 大数据
隐私计算实训营第5讲-------隐私求交和隐语PSI介绍以及开发实践
隐私求交(Private Set Intersection, PSI)是利用密码学技术在不暴露数据集以外信息的情况下找到两集合的交集。隐语SPU支持三种PSI算法:ECDH(适合小数据集)、KKRT(基于Cuckoo Hashing和OT Extension,适合大数据集)和BC22PCG(使用伪随机相关生成器)。ECDH基于椭圆曲线 Diffie-Hellman,KKRT利用OT Extension实现高效处理,而BC22PCG通过压缩满足特定相关性的随机数减少通信量。此外,还有基于Oblivious Pseudo-Random Function (OPRF)的PSI协议。
2321 0
|
安全 物联网 API
TEE是什么?现有TEE解决方案
TEE是什么?现有TEE解决方案
2749 0
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
23556 5
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
数据可视化 Docker 容器
隐语实训营-第4讲:SecretFlow和SecretNote的安装
介绍secretflow及其可视化工具secretfNote的安装,课程链接:https://www.bilibili.com/video/BV161421S7xY/?spm_id_from=333.999.0.0 下:https://www.bilibili.com/video/BV12r421t77V/?spm_id_from=333.999.0.0
693 1