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

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p