课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一致的使用体验;
单操作界面,多节点代码自动执行;
多节点代码运行跟踪。
相关文章
|
6月前
|
Ubuntu 调度 Docker
2024.3.21隐语训练营第4讲笔记:SecretFlow & SecretNote安装部署
本文介绍了SecretFlow和SecretNote的安装和部署
412 3
爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
Python (发音:[ 'paiθ(ə) n; (US) 'paiθɔn ] n. 蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 Python 语言的特点:
|
4月前
|
运维 安全 数据安全/隐私保护
隐语(SecretFlow)联邦学习实训营第一期笔记
**摘要:** 本文探讨了数据可信流通的概念,强调了数据来源确认、使用范围界定、流程追溯和风险防范的重要性。数据流通分为内循环(安全域内)和外循环(跨域),其中外循环面临黑客攻击、内部泄露和数据滥用等风险。为建立技术信任,提出了身份验证、利益对齐、能力预期和行为审计四点要求,涉及隐私计算、可信计算等技术。隐语作为隐私计算框架,提供服务以支持数据安全流通,通过开源降低接入门槛,并具备统一架构、原生应用、开放拓展、高性能和多轮安全验证等优势。开源隐语助力解决数据权属和信任问题,促进数据要素的安全流通。
|
5月前
|
Ubuntu 数据可视化 Docker
第4讲笔记:SecretFlow & SecretNote安装部署
安装SecretFlow需在Ubuntu虚拟机上用Anaconda创建Python 3.8环境,名称为secretflow,然后在环境中运行`conda create -n secretflow python=3.8`,`source activate secretflow`和`pip install -U secretflow`。SecretFlow部署可选仿真或生产模式。仿真模式包括单机(模拟Alice、Bob)和集群仿真,生产模式涉及多节点部署,注意各节点间的通信配置。SecretNote适合多节点代码的可视化执行,但不适用于生产环境。
|
6月前
|
SQL 存储 分布式计算
Kylin使用心得:从入门到进阶的探索之旅
【5月更文挑战第2天】Apache Kylin是开源大数据分析平台,提供亚秒级OLAP查询。本文深入解析Kylin的工作原理,包括预计算模型Cube、构建过程和查询引擎。常见问题涉及Cube设计、查询性能和资源管理,解决方案涵盖合理设计、性能监控和测试验证。文中还分享了Cube创建的JSON示例,并探讨了Cube构建优化、查询优化、与其他组件集成、监控维护及生产环境问题解决。通过学习和实践,读者能有效提升数据洞察力和决策效率。
368 5
|
6月前
|
数据可视化 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
165 1
|
6月前
|
人工智能 Python
隐私计算实训营 第1期-第4讲 快速上手隐语SecretFlow的安装和部署
文档改进建议:明确Ray, K3S, Kuscia与SecretFlow的关系;结构化部署文档,区分顺序步骤与选择分支;提供从零开始的详细部署教程,补充缺失的前置步骤说明。
|
6月前
|
Linux Docker 容器
隐私计算实训营第4讲-------快速上手隐语SecretFlow的安装和部署
考虑到很多小伙伴可能是初学者之前并没有安装docker 以及docker-compose的经验,本文记录如何在Linux系统上快速的部署docker以及更换国内镜像源。在部署完成以后展示了隐语从源码编译部署以及secretnote的安装,简单快速,非常实用。
223 1
|
6月前
|
运维 安全 数据安全/隐私保护
|
6月前
|
Ubuntu Docker 容器
隐语实训营 第四课 安装部署secretflow&secretnote
`secretflow`推荐使用Docker部署,尤其在WSL环境中。运行命令`docker run -it secretflow-registry.cn-hangzhou.cr.aliyuncs.com/secretflow-lite-anolis8:latest`启动。对于`secretnote`,编辑`docker-compose.yml`文件,配置Alice和Bob节点,然后执行`sudo docker-compose up -d`部署。访问http://localhost:8090/,设置Alice的IP为127.0.0.1:8888,Bob的IP为虚拟机以太网地址:8092,完成。
215 0