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

本文主要是介绍【隐私计算实训营——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

这篇关于【隐私计算实训营——004上手隐语SecretFlow和SecretNote安装部署】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841602

相关文章

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

2025最新版Python3.13.1安装使用指南(超详细)

《2025最新版Python3.13.1安装使用指南(超详细)》Python编程语言自诞生以来,已经成为全球最受欢迎的编程语言之一,它简单易学易用,以标准库和功能强大且广泛外挂的扩展库,为用户提供包罗... 目录2025最新版python 3.13.1安装使用指南1. 2025年Python语言最新排名2.

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar