一个基于PyTorch的隐私保护机器学习框架

电子说

1.2w人已加入

描述

CrypTen

CrypTen是一个基于PyTorch的隐私保护机器学习框架。其目标是使机器学习从业人员可以访问安全的计算技术。它目前将Secure Multiparty Computation 作为其安全计算后端来实现,并为ML研究人员提供了三个主要好处:

首先是机器学习。该框架通过CrypTensor 外观与感觉完全像PyTorch 的对象来呈现协议Tensor。这使用户可以使用类似于PyTorch中的自动区分和神经网络模块。CrypTen基于库。就像PyTorch一样,它实现了张量库。这使从业人员更容易调试,试验和探索ML模型。该框架的构建考虑了现实世界中的挑战。CrypTen不会缩减规模或简化安全协议的实现。这是一些CrypTen代码,用于加密和解密张量并添加它们

import torchimport cryptencrypten.init()x = torch.tensor([1.0, 2.0. 3.0])x_enc = crypten.cryptensor(x) # encryptx_dec = x_enc.get_plain_text() # decrypty_enc = crypten.cryptensor([2.0, 3.0, 4.0])sum_xy = x_enc + y_enc # add encrypted tensorssum_xy_dec = sum_xy.get_plain_text() # decrypt sum它目前尚未量产,其主要用途是作为研究框架。

安装CrypTen

CrypTen当前在Linux和Mac上运行。它还需要每晚进行一次PyTorch构建。不支持Windows。我们目前还不支持在GPU上进行计算。

安装Anaconda 2019.07或更高版本,然后执行以下操作:

对于Linux或Mac

conda create -n crypten-env python=3.7conda activate crypten-envconda install pytorch torchvision -c pytorchgit clone github.com/facebookresearch/CrypTen.gitcd CrypTenpip install -e .如果要在examples目录中运行示例,还应该执行以下操作

pip install -r requirements.examples.txt例子

我们在examples目录中提供了涵盖各种模型的示例

线性SVM示例mpc_linear_svm生成随机数据,并在加密数据上训练SVM分类器。LeNet示例mpc_cifar以明文形式在CIFAR上训练LeNet的改编,并加密模型和数据以进行推理。TFE基准示例,tfe_benchmarks以明文形式在MNIST上训练了三种不同的网络体系结构,并对经过训练的模型和数据进行加密以进行推理。土匪示例,bandits在加密数据(MNIST)上训练了上下文土匪模型。imagenet示例mpc_imagenet对的预训练模型进行推断torchvision。对于以明文形式训练的示例,我们还在model每个示例子目录的子目录中以明文形式提供了预先训练的模型。

您可以通过执行以下操作检查所有示例特定的命令行选项;此处显示的是tfe_benchmarks:

$ python3 examples/tfe_benchmarks/launcher.py --helpCrypTen如何工作

tutorials目录中有一组教程,展示了CrypTen的工作方式。这些作为Jupyter笔记本电脑出现,因此请在conda环境中安装以下内容

conda install ipython jupyterpip install -r requirements.examples.txtIntroduction.ipynb-安全多方计算简介;CrypTen的基础安全计算协议;我们尝试解决的用例以及我们假设的威胁模型。Tutorial_1_Basics_of_CrypTen_Tensors.ipynb-引入了CrypTensorCrypTen的加密张量对象,并展示了如何使用它对该对象执行各种操作。Tutorial_2_Inside_CrypTensors.ipynb–深入研究CrypTensor以显示内部工作原理;具体来说,如何CrypTensor将MPCTensor其后端以及两种不同类型的共享(算术和二进制)用于两种不同类型的函数。它还显示了CrypTen的MPI启发式 编程模型。Tutorial_3_Introduction_to_Access_Control.ipynb -显示如何使用CrypTen训练线性模型,并在适用的情况下显示数据标记,特征聚合,数据集扩充和模型隐藏的各种场景。Tutorial_4_Classification_with_Encrypted_Neural_Networks.ipynb –显示CrypTen如何加载预先训练的PyTorch模型,对其进行加密,然后对加密数据进行推断。Tutorial_5_Under_the_hood_of_Encrypted_Networks.ipynb -检查CrypTen如何加载PyTorch模型,如何对其进行加密以及数据如何通过多层网络传输。Tutorial_6_CrypTen_on_AWS_instances.ipynb-显示了如何scrips/aws_launcher.py 在AWS上启动我们的示例。它也可以与您用CrypTen编写的代码一起使用。Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb-引入AutogradCrypTensor了一个包装器,该包装器将自动区分功能添加到CrypTensor。这使您可以在CrypTen中训练神经网络。我们希望CrypTensor在将来的版本中将此功能移至对象中。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分