隐私计算实训营学习四:SecretFlow的安装和部署

文章目录

  • 一、SecretFlow安装
  • 二、SecretFolw部署模式简介
  • 三、SecretFlow部署-仿真模式
  • 四、SecretFlow部署-生产模式

一、SecretFlow安装

SecretFlow运行要求:

  • Python >= 3.8
  • 操作系统:CentOS7、Anolis8、Ubuntu 18.04/20.04、macOS 11.1+、WSL2
  • 资源:≥ 8核16GB

安装包:

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

安装方式:

1、docker镜像。

docker hub:
docker run -it secretflow/secretflow-anolis8:latest
docker run –it secretflow/secretflow-lite-anolis8:latest

阿里云:
docker run -it secretflow-registry.cnhangzhou.cr.aliyuncs.com/secretflow-anolis8:latest
docker run –it secretflow-registry.cnhangzhou.cr.aliyuncs.com /secretflow-lite-anolis8:latest

2、pypi安装:要求pip >= 19.3,建议使用conda管理python环境。

pip install –U secretflow #全版本
pip install –U secretflow-lite #lite版本

3、源码安装:要求pip >= 19.3,建议使用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 #生成python内容包
pip install dist/*.whl #安装

此处采用方式2利用conda构建虚拟环境安装(本想用源码编译安装,依赖环境太多,后续有空再尝试):

#conda构建一个虚拟环境
conda create -n sf python=3.8
conda activate sf

#pip安装SecretFlow,此处参考其他博主更换pip源
pip install -U secretflow -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成如图:
在这里插入图片描述
测试仿真单机部署:
在这里插入图片描述

二、SecretFolw部署模式简介

SecretFlow提供了仿真模式与生产模式两种部署方案:仿真模式用于快速验证代码效果,仅需在一台机器上部署代码即可;生产模式针对安全生产设计,主要作了安全增强,每一个参与方都是独立的Ray集群,所有参与方都需要执行代码。
SecretFlow与Ray关系:Ray为分布式计算框架,SecretFlow使用Ray作为分布式计算调度框架,Ray集群由一个主节点和零或若干个从节点组成。
在这里插入图片描述

三、SecretFlow部署-仿真模式

通信网络:
在这里插入图片描述
1、单机仿真:单个节点模拟alice、bob两个参与方。

#address='local':表示启动一个本地的Ray节点
>>> import secretflow as sf
>>> sf.init(parties=['alice', 'bob'], address='local') #parties参与方、address在当前启动一个Ray的节点
>>> alice = sf.PYU('alice') #PYU为明文计算设备
>>> bob = sf.PYU('bob')
>>> alice(lambda x : x + 1)(2) #alice进行计算
<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>
>>> bob(lambda x : x - 1)(2) #bob进行计算
<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>

2、集群仿真:部署两个节点,分别模拟alice、bob两个参与方。

  1. 在第一台机器上部署Ray主节点,模拟参与方alice(填写真的主节点ip和port),resources{“标记名”,计算资源数}。
ray start –-head \
--node-ip-address="{ip}" --port="{port} " \
--resources='{"alice": 16} ' \
--include-dashboard=False \
--disable-usage-stats
  1. 在第二台机器上部署Ray从节点,模拟参与方bob(address填写Ray主节点ip和port)。
ray start \
--address="{Ray主节点的通信地址}" \
--resources=' {"bob": 16} ' \
--include-dashboard=False \
--disable-usage-stats
  1. 执行python代码:在alice或者bob其中一台机器上执行即可,address填写实际Ray主节点ip和port。
>>> import secretflow as sf
>>> sf.init(parties=['alice', 'bob'], address=' {ip:port}') #主节点ip与端口
>>> alice = sf.PYU('alice')
>>> bob = sf.PYU('bob')
>>> alice(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>
>>> bob(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>
  1. 创建密态设备SPU(可选):通信是单独的,每一个参与方都有一个进程,需要先定义cluster_def结构包含nodes参与方地址,需要分配单独的监听地址与端口,此处地址与端口不能和Ray的通信地址端口冲突。
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)

四、SecretFlow部署-生产模式

生产模式: 部署两个节点,分别模拟alice、bob两个参与方。
通信网络:
在这里插入图片描述

  1. 在第一台机器上部署Ray主节点,模拟参与方alice(填写真的主节点ip和port)。
ray start –-head \
--node-ip-address="{ip}" --port="{port} " \
--resources='{"alice": 16} ' \
--include-dashboard=False \
--disable-usage-stats
  1. 在第二台机器上部署Ray主节点,模拟参与方bob(填写真的主节点ip和port)。
ray start –-head \
--node-ip-address="{ip}" --port="{port} " \
--resources='{"bob": 16} ' \
--include-dashboard=False \
--disable-usage-stats
  1. alice执行python代码:cliuster_config中的address分别填写alice/bob的通信地址(注意不要和Ray的端口冲突)
    cluster_config中的self_party为alice。
    sf.init中的address填写第一台机器(alice)的Ray主节点ip和port。
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)
  1. bob执行python代码:cliuster_config中的address分别填写alice/bob的通信地址(注意不要和Ray的端口冲突)。
    cluster_config中的self_party为bob。
    sf.init中的address填写第二台机器(bob)的Ray主节点ip和port。
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)
  1. 创建密态设备SPU(可选):通信是单独的,填写实际的alice和bob的通信地址,用于SPU通信;alice和bob都需要执行这段代码,注意不要和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)

生产模式 - 使用KUSCIA(SecretFlow调度框架)解决多端口问题。 屏蔽不同机构间基础设施的差异,为跨机构协作提供丰富且可靠的资源管理和任务调度能力。 KUSCIA可以自动将SPU、Ray通信做到归一。
在这里插入图片描述
生产模式 - 使用SecretNote提升体验, 一个页面上执行多方代码。
https://github.com/secretflow/secretnote

  1. 与Notebook一致的使用体验,可以在代码单元写代码,所见即所得去执行;
  2. 单操作界面,多节点代码自动执行;
  3. 多节点代码运行状况跟踪;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

共享打印机以及修复脱机状态打印机

title: 共享打印机以及修复脱机状态打印机 search: 2024-03-23 tags: “#共享打印机以及修复脱机状态打印机” 如何将打印机共享在局域网内 Tips&#xff1a;考虑将打印机共享&#xff0c;无非是要考虑两个问题&#xff0c;一个是将打印机作为外设的电脑怎么将打印机共享&…

随机密码生成器源码

源码简介 纯HTML&#xff0c;该去的已去掉&#xff0c;该简化的简化&#xff0c;最高支持32位混合随机密码生成 安装教程 纯HTML&#xff0c;直接将压缩包上传网站目录解压即可 首页截图 源码下载 随机密码生成器源码-小8源码屋源码简介 纯HTML&#xff0c;该去的已去掉&a…

阿里云4核16G服务器优惠价格26元1个月、149元半年

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年。2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也…

Java学习笔记 | JavaSE基础语法05 | 方法

文章目录 0.前言1. 方法概述2. 方法的定义和调用2.1 无参数方法定义和调用2.2 带参数方法定义和调用1 带参数方法定义和调用2 形参和实参3 带参数方法练习 2.3 带返回值方法的定义和调用1 带返回值方法定义和调用2 带返回值方法练习13 带返回值方法练习24 带返回值方法练习3 3.…

STM32学习笔记(6_2)- TIM定时器中断和定时器内外时钟源选择代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

浙大版《C语言程序设计(第4版)》题目集-习题3-5 三角形判断

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3)&#xff0c;检验它们能否构成三角形。 输入格式: 输入在一行中顺序给出六个[−100,100]范围内的数字&#xff0c;即三个点的坐标x1、y1、x2、y2、x3、y3。 输出格式: 若这3个点不能构成三角形&#xff0c;则在一行中输…

移植 Zephyr 到 Art-Pi

背景 ​ 最近工作中接触到了 Zephyr&#xff0c;不由觉得 Zephyr 是个很强大、全面、优秀的实时操作系统&#xff0c;但同时是有一定的上手难度的&#xff0c;其复杂的构建系统让小编倒吸一口凉气。为了深入研究并完全掌控 Zephyr&#xff0c;小编决定把它移植到手头的开发板上…

[leetcode] 240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,…

c高级 day3 shell脚本

1&#xff1a;输入数组&#xff0c;输出数组的所有元素&#xff0c;以及数组长度 37 read -a arr38 echo ${arr[*]}39 echo ${#arr[*]} 运行结果&#xff1a; 2&#xff1a;定义数组存储当前目录下的所有.sh文件&#xff0c;计算文件的个数 43 arr(ls *.sh)44 echo ${#arr…

大数据Spark--入门

文章目录 Spark 概述Spark 是什么Spark and HadoopSpark and HadoopSpark 核心模块 Spark 简单上手创建Maven项目增加 Scala 插件增加依赖关系WordCount异常处理 Spark 概述 Spark 所需资料 链接&#xff1a;https://pan.baidu.com/s/12iaW68vriL6i-xI1kmr0_g?pwdm4zc 提取码…

使能 Linux 内核自带的 FlexCAN 驱动

一. 简介 前面一篇文章学习了 ALPHA开发板修改CAN的设备树节点信息&#xff0c;并加载测试过设备树文件&#xff0c;文件如下&#xff1a; ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文是学习使能 IMX6ULL的 CAN驱动&#xff0c;也就是通过内核配置来实现。 二. 使能…

栅格地图路径规划:基于小龙虾优化算法(Crayfsh optimization algorithm,COA)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

目标检测上的diffusion

1 Title DiffusionDet: Diffusion Model for Object Detection&#xff08;Shoufa Chen,Peize Sun,Yibing Song,Ping Luo&#xff09;【ICCV 2023】 2 Conclusion This study proposes DiffusionDet, a new framework that formulates object detection as a denoisin…

Dynamo与Revit API之间的转换

今天来聊聊 Dynamo 与 Revit 之间图元转换的基础知识&#xff0c;这些需要你牢牢记住哦&#xff0c;不然在 Python script 中写代码&#xff0c;经常会报错的~ 通常来讲&#xff0c;所有来自 Dynamo 节点的几何图形都不是 Revit 的几何对象&#xff0c;所以它们需要与 Revit AP…

FreeCAD傻瓜教程之基准面的构建-在实体的表面上新建坐标、倾斜的平面、附加不同的台阶、旋转体等

目的&#xff1a;学会在已有模型的不同剖面上建立新的坐标系&#xff0c;并绘图&#xff1b;使得新图形仍然作为同一个零件实体的构件。 零、需求举例 在下列模型中&#xff0c;我们要在圆杆的顶部增加一个把手&#xff0c;如果点击圆杆顶部&#xff0c;则仅能在顶部圆形所在…

举4例说明Python如何使用正则表达式分割字符串

在Python中&#xff0c;你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法&#xff0c;但它允许你使用正则表达式作为分隔符。 示例 1: 使用单个字符作为分隔符 假设你有一个由逗号分隔的字符串&#xff0c;你可…

设计模式之状态模式(一)

设计模式专栏&#xff1a; http://t.csdnimg.cn/4Mt4u 目录 1.概述 2.结构 3.实现 4.总结 1.概述 状态模式( State Pattern)也称为状态机模式( State Machine pattern), 是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类, 属于行为型模式。 在状…

Vscode按键占用问题解决

Vscode按键占用 在使用vscode的过程中&#xff0c;官方按键 Ctrl . 按键可以提示修复代码中的问题&#xff0c;但是发现按了没有反应。 解决问题 首先确认vscode中是否设置了这个按键&#xff0c;默认设置了的系统输入法中是否有按键冲突了&#xff0c;打开输入法设置检查 …

AI在融媒体领域的应用探讨

AI在融媒体领域的应用探讨 ChatGPT是人工智能的一种应用形式&#xff0c;它属于自然语言处理&#xff08;NLP&#xff0c;Nature Language Process&#xff09;领域。 2022年11月30日&#xff0c;由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT一夜爆火&#xff0c;…

ETL数据倾斜与资源优化

1.数据倾斜实例 数据倾斜在MapReduce编程模型中比较常见&#xff0c;由于key值分布不均&#xff0c;大量的相同key被存储分配到一个分区里&#xff0c;出现只有少量的机器在计算&#xff0c;其他机器等待的情况。主要分为JOIN数据倾斜和GROUP BY数据倾斜。 1.1GROUP BY数据倾…