CrypTen项目实践

server/2025/1/24 16:56:54/

CrypTen是一个用于安全多方计算(MPC)的python库,基于PyTorch构建。

CrypTen

facebookresearch/CrypTen: A framework for Privacy Preserving Machine Learning

目录

一、实践准备

二、实践操作

1.下载WSL

2.下载代码

 3.创建虚拟环境,配置依赖项

4.运行示例


一、实践准备

一、系统与软件要求

·操作系统:Crypten 支持多种主流操作系统,包括 Linux、macOS以及 Windows(需安装 Windows Subsystem for Linux,WSL,推荐 Ubuntu 环境)。

·Python 版本:要求 Python 3.8 及以上版本。

二、安装依赖库

·PyTorch:Crypten 基于 PyTorch 构建,首先需安装合适版本的 PyTorch。

·加密库:Crypten 依赖一些加密相关的库,如 crypten-ckks(用于同态加密)、crypten-mpc(用于多方计算相关加密操作)等。

三、安装 Crypten

在确保依赖库安装正确后,通过 pip 安装 Crypten 主库。

二、实践操作

 本实践过程在VSCode+WSL:Ubuntu环境下进行,python版本在3.8及以上,基于pytorch、requirements.txt等相关依赖库(项)。

实践步骤:

1.下载WSL

WSL(Windows Subsystem for Linux)是一种在Windows操作系统上运行Linux环境的兼容层。

它允许用户在Windows系统上运行Linux二进制可执行文件,而无需使用传统的虚拟机或双系统设置。

安装配置:

在控制面版的程序模块,找到“启用或关闭Windows功能”,选择“适用于Linux的Windows子系统”选项。

等待电脑重启后,在Microsoft store商店中搜索Ubuntu。

 选择合适的版本下载安装,下载完成后输入账号密码即可使用。

2.下载代码

将CrypTen仓库的代码下载解压,解压后的文件夹移动到Linux子系统的用户目录中,

 3.创建虚拟环境,配置依赖项

打开VS Code,启动WSL,在终端上激活虚拟环境

创建虚拟环境:

python3 -m venv myenv

激活虚拟环境:

source myenv/bin/activate         #myenv为创建的虚拟环境名称

CrypTen 项目的配置文件主要是 requirements.txt 和 setup.py。以下是这些文件的介绍:

requirements.txt: 这个文件列出了项目运行所需的所有依赖项。可以通过运行 pip install -r requirements.txt 来安装这些依赖项。
setup.py: 这个文件不仅用于安装项目,还定义了项目的元数据和依赖项。通过运行 python setup.py install 可以安装项目及其依赖项。

4.运行示例

通过定位到相应的example,运行相应的模型。

下面是对给出例子的简要概述与解释:

We provide examples covering a range of models in the `examples` directory

1. The linear SVM example, `mpc_linear_svm`, generates random data and trains a
  SVM classifier on encrypted data.
2. The LeNet example, `mpc_cifar`, trains an adaptation of LeNet on CIFAR in
  cleartext and encrypts the model and data for inference.
3. The TFE benchmark example, `tfe_benchmarks`, trains three different network
  architectures on MNIST in cleartext, and encrypts the trained model and data
  for inference.
4. The bandits example, `bandits`, trains a contextual bandits model on
  encrypted data (MNIST).
5. The imagenet example, `mpc_imagenet`, performs inference on pretrained
  models from `torchvision`.

·mpc_linear_svm

该任务比较了pytorch和crypten在训练线性支持向量机(SVM)模型上的性能与准确性。其中使用pytorch在明文环境下训练SVM,使用crypten在MPC环境下训练模型。代码运行结果记录了使用PyTorch和CrypTen进行训练的一些信息,比较pytorch与crypten二者的差别。

·tfe_benchmarks

“tfe_benchmarks” 通常指的是基于 TensorFlow Encrypted(TFE)框架的基准测试。TFE 是在 TensorFlow 上构建的隐私计算框架,支持安全多方计算等隐私计算技术。这段代码是一个使用Crypten框架进行加密机器学习的Python脚本,主要目的是在MNIST数据集上训练和评估不同的神经网络模型。

·mpc_cifar

“mpc_cifar” 代表一个专门用于 CIFAR 数据集分类任务并且具有多方安全计算属性的模型。这个任务是一个基于多方计算(Multi-Party Computation,MPC)的CIFAR图像分类项目。多方计算是一种密码学技术,允许多个参与方在不泄露各自数据的情况下共同计算某个函数的结果。在机器学习领域,MPC可以用于在保护数据隐私的前提下进行模型训练和推理。

·mpc_autograd_cnn

“mpc_autograd_cnn” 是一个与深度学习相关的概念组合。它代表基于crypten多方安全计算,利用自动求导机制训练的卷积神经网络。

 


 通过对CrypTen的进一步实践,理解示例的内容含义,分析实验结果,对理解CrypTen有着很大的帮助。同时,也更加体会到作为隐私计算深度学习新范式,CrypTen有着更加光明的前景!

上述借鉴来源于:

CrypTen 项目使用教程-CSDN博客

Kimi 是一个有着超大“内存”的智能助手,可以一口气读完二十万字的小说,还会上网冲浪,快来跟他聊聊吧


http://www.ppmy.cn/server/161066.html

相关文章

(Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计

源码 论文 下载地址: ​​​​c​​​​​​c基于JAVA的网络通讯系统设计与实现(源码系统论文)https://download.csdn.net/download/weixin_39682092/90299782https://download.csdn.net/download/weixin_39682092/90299782 第1章 绪论 1.1 课题选择的…

谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计

技术背景 我们在做RTMP|RTSP播放器的时候,有这样的技术诉求,有的摄像头出来的数据是有角度偏差的,比如“装倒了”,或者,图像存在上下或者左右反转,这时候,就需要播放器能做响应的处理&#xff…

【分布式知识】Spring Cloud Gateway实现跨集群应用访问

SpringCloud Gateway实现跨集群应用访问 1. 设置服务注册中心配置 Eureka Server(示例)配置服务实例(示例) 2. 配置 Spring Cloud Gateway引入依赖配置 Gateway 3. 配置路由规则4. 服务实例配置(跨集群)5. …

数据结构学习记录-树和二叉树

1、树的概念 关于树的定义和基本术语 1、是一种非线性的数据结构,又叫做树型数据结构。 2、树是n(n >0)个节点的有限集合,当n0时,叫空树 3、非空树必须满足两个条件: 1、有且仅有一个特定的称为根的节点, 2、其余的节点可以…

【豆包MarsCode蛇年编程大作战】花样贪吃蛇

目录 引言 展示效果 prompt提示信息 第一次提示(实现基本功能) 初次实现效果 第二次提示(美化UI) 第一次美化后的效果 第二次美化后的效果 代码展示 实现在线体验链接 码上掘金使用教程 体验地址: 花样贪吃蛇…

java springboot 刷新 token 前后端 逻辑是啥 前端 vue

java springboot 刷新 token 前后端 逻辑是啥 前端 vue 在使用 Java Spring Boot 和 Vue.js 构建的前后端分离架构中,刷新 token 的逻辑通常涉及到以下几个方面: 后端(Spring Boot) Token 生成和验证: 使用如 JWT (JSON Web Tok…

python-leetcode-逆波兰表达式求值

150. 逆波兰表达式求值 - 力扣(LeetCode) class Solution:def evalRPN(self, tokens: List[str]) -> int:stack []for token in tokens:if token not in {, -, *, /}: # 如果是数字stack.append(int(token))else: # 如果是操作符b stack.pop()a …

【R语言】数学运算

一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…