密码:安全的机器学习在PyTorch。

crypten的Python项目详细描述


CrypTen logo

GitHub licenseCircleCIPRs Welcome


CrypTen是一个基于PyTorch的保护隐私的机器学习框架。 它的目标是让机器学习实践者能够使用安全计算技术。 它当前实现Secure Multiparty Computation 作为其安全计算后端,为ML研究人员提供了三大好处:

  1. 首先是机器学习。框架通过CrypTensor呈现协议 对象,其外观和感觉都与PythorchTensor完全相同。这允许用户使用 与Pythorch中类似的自动微分和神经网络模块。在

  2. CrypTen是基于库的。它像PyTorch一样实现张量库。 这使得从业者更容易调试、试验和探索ML模型。在

  3. 该框架是基于现实世界的挑战而构建的。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目录中提供了涵盖一系列模型的示例

  1. 线性支持向量机示例mpc_linear_svm,生成随机数据并训练a 基于加密数据的支持向量机分类器。在
  2. LeNet示例mpc_cifar,训练了LeNet在CIFAR上的一种适应性 明文并加密模型和数据以供推断。在
  3. TFE基准测试示例tfe_benchmarks训练了三个不同的网络 以明文形式在MNIST上构建,并对训练后的模型和数据进行加密 为了推断。在
  4. bandits示例bandits训练了一个上下文bandits模型 加密数据(MNIST)。在
  5. 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
  1. Introduction.ipynb-安全多方计算简介;CrypTen's 底层安全计算协议;我们试图解决的用例和 我们假设的威胁模型。在
  2. Tutorial_1_Basics_of_CrypTen_Tensors.ipynb-介绍{},CrypTen's 加密张量对象,并演示如何使用它对 这个物体。在
  3. Tutorial_2_Inside_CrypTensors.ipynb–深入研究CrypTensor以显示 内部加工;特别是CrypTensor如何使用MPCTensor作为其 后端和两种不同类型的sharings,算术和二进制,是 用于两种不同的功能。它也显示了CrypTen的 MPI-灵感 编程模型。在
  4. Tutorial_3_Introduction_to_Access_Control.ipynb-演示如何训练线性 模型使用CrypTen和显示各种场景的数据标记,功能 聚合、数据集扩充和模型隐藏。在
  5. Tutorial_4_Classification_with_Encrypted_Neural_Networks.ipynb演示如何 CrypTen可以加载预先训练好的PyTorch模型,对其进行加密,然后进行推理 加密数据。在
  6. Tutorial_5_Under_the_hood_of_Encrypted_Networks.ipynb-检查CrypTen如何 加载Pythorch模型,它们是如何加密的,以及数据如何通过多层结构移动 网络。在
  7. Tutorial_6_CrypTen_on_AWS_instances.ipynb-演示如何使用scrips/aws_launcher.py 在AWS上启动我们的示例。它也可以与您编写的代码一起工作克里顿。在
  8. Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb-介绍{}, 向CrypTensor添加自动区分功能的包装器。这个 允许你在CrypTen中训练神经网络。我们希望能移动这个功能 在将来的版本中添加到CrypTensor对象中。在

文件

CrypTen被记录为here

加入CrypTen社区

请联系us加入Slack上的CrypTen社区

请参阅CONTRIBUTING文件以获取帮助。在

许可证

CrypTen是麻省理工学院授权的,如许可文件中所示。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
测试偶数/奇数Java的测试   java如何编写在请求体中接受XML的swagger API   java PrimeTable面临奇怪的错误   java如何检查数组中输入的用户是否为回文?   java如何删除JButton中文本周围的框?   java阻止直接访问JSF2中的xhtml文件   java如何获取定义方法的类的名称?   while loop如何让用户只需输入数字,然后在Java中重试?   从应用程序注册中列出azure存储帐户容器时,java受众验证失败   Java线程之间的多线程数据交换   java检查数组中是否存在重复的索引值?   java正则表达式从字符串中复制第二个URL   java如何从gradle项目依赖项中排除METAINF?   java如何将JLabel[]添加到JTable?   使用kotlin播放java音频(位于internet上的文件)