密码:安全的机器学习在PyTorch。
crypten的Python项目详细描述
CrypTen是一个基于PyTorch的保护隐私的机器学习框架。 它的目标是让机器学习实践者能够使用安全计算技术。 它当前实现Secure Multiparty Computation 作为其安全计算后端,为ML研究人员提供了三大好处:
- 在
首先是机器学习。框架通过
在CrypTensor
呈现协议 对象,其外观和感觉都与PythorchTensor
完全相同。这允许用户使用 与Pythorch中类似的自动微分和神经网络模块。在 - 在
CrypTen是基于库的。它像PyTorch一样实现张量库。 这使得从业者更容易调试、试验和探索ML模型。在
在 - 在
该框架是基于现实世界的挑战而构建的。CrypTen不能缩小或 过度简化了安全协议的实现。在
在
这里有一点加密和解密张量并将它们相加的密码
importtorchimportcryptencrypten.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上运行,Python>;=3.7。 不支持Windows。我们目前也不支持gpu上的计算。在
用于Linux或Mac
^{pr2}$如果要运行examples
目录中的示例,还应执行以下操作
pip install -r requirements.examples.txt
示例
我们在examples
目录中提供了涵盖一系列模型的示例
- 线性支持向量机示例
mpc_linear_svm
,生成随机数据并训练a 基于加密数据的支持向量机分类器。在 - LeNet示例
mpc_cifar
,训练了LeNet在CIFAR上的一种适应性 明文并加密模型和数据以供推断。在 - TFE基准测试示例
tfe_benchmarks
训练了三个不同的网络 以明文形式在MNIST上构建,并对训练后的模型和数据进行加密 为了推断。在 - bandits示例
bandits
训练了一个上下文bandits模型 加密数据(MNIST)。在 - imagenet示例
mpc_imagenet
,对预训练的内容执行推理 来自torchvision
的模型。在
对于以明文形式培训的示例,我们还提供了
每个示例子目录的model
子目录中的明文。在
您可以通过执行以下操作来检查所有特定于示例的命令行选项;
此处显示tfe_benchmarks
:
$ python3 examples/tfe_benchmarks/launcher.py --help
CrypTen的工作原理
我们在tutorials
目录中有一组教程来演示如何
CrypTen起作用了。这些是作为Jupyter笔记本提供的,所以请安装
在你的conda环境中
conda install ipython jupyter pip install -r requirements.examples.txt
Introduction.ipynb
-安全多方计算简介;CrypTen's 底层安全计算协议;我们试图解决的用例和 我们假设的威胁模型。在Tutorial_1_Basics_of_CrypTen_Tensors.ipynb
-介绍{},CrypTen's 加密张量对象,并演示如何使用它对 这个物体。在 Tutorial_2_Inside_CrypTensors.ipynb
–深入研究CrypTensor
以显示 内部加工;特别是CrypTensor
如何使用MPCTensor
作为其 后端和两种不同类型的sharings,算术和二进制,是 用于两种不同的功能。它也显示了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如何 加载Pythorch模型,它们是如何加密的,以及数据如何通过多层结构移动 网络。在Tutorial_6_CrypTen_on_AWS_instances.ipynb
-演示如何使用scrips/aws_launcher.py
在AWS上启动我们的示例。它也可以与您编写的代码一起工作克里顿。在Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb
-介绍{}, 向 CrypTensor
添加自动区分功能的包装器。这个 允许你在CrypTen中训练神经网络。我们希望能移动这个功能 在将来的版本中添加到CrypTensor
对象中。在
文件
CrypTen被记录为here
加入CrypTen社区
请参阅CONTRIBUTING文件以获取帮助。在
许可证
CrypTen是麻省理工学院授权的,如许可文件中所示。在
- 项目
标签: