【隐私计算实训营——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

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <