跳转到主要内容

使用差分隐私训练PyTorch模型

项目描述

Opacus


CircleCI Coverage Status PRs Welcome License

Opacus 是一个库,它使PyTorch模型使用差分隐私进行训练成为可能。它支持对客户端进行最小代码更改的训练,对训练性能影响很小,并允许客户端在线跟踪在任何给定时刻消耗的隐私预算。

目标受众

本代码发布针对两个目标受众

  1. 机器学习从业者会发现,这是以差分隐私训练模型为目标的温和引入,因为它只需要最小的代码更改。
  2. 差分隐私研究人员会发现,这很容易进行实验和调整,使他们能够专注于关键任务。

安装

Opacus的最新版本可以通过pip安装

pip install opacus

或者,也可以通过conda安装

conda install -c conda-forge opacus

您也可以直接从源代码安装以获得最新功能(包括其特性、怪癖和可能偶尔的bug)

git clone https://github.com/pytorch/opacus.git
cd opacus
pip install -e .

入门

要使用差分隐私训练您的模型,您只需要实例化一个PrivacyEngine,并将您的模型、数据加载器和优化器传递给引擎的make_private()方法,以获取它们的私有副本。

# define your components as usual
model = Net()
optimizer = SGD(model.parameters(), lr=0.05)
data_loader = torch.utils.data.DataLoader(dataset, batch_size=1024)

# enter PrivacyEngine
privacy_engine = PrivacyEngine()
model, optimizer, data_loader = privacy_engine.make_private(
    module=model,
    optimizer=optimizer,
    data_loader=data_loader,
    noise_multiplier=1.1,
    max_grad_norm=1.0,
)
# Now it's business as usual

MNIST示例展示了使用Opacus的端到端运行。示例文件夹包含更多此类示例。

迁移到1.0

Opacus 1.0对库进行了许多改进,但也带来了一些破坏性的更改。如果您一直在使用Opacus 0.x并希望更新到最新版本,请使用此迁移指南

了解更多信息

交互式教程

我们构建了一系列基于IPython的教程,作为对使用隐私训练模型和Opacus各种功能的温和引入。

技术报告和引用

介绍Opacus、其设计原则、数学基础和基准的技术报告可以在这里找到。

如果您在论文中使用Opacus,请考虑引用此报告,如下所示

@article{opacus,
  title={Opacus: {U}ser-Friendly Differential Privacy Library in {PyTorch}},
  author={Ashkan Yousefpour and Igor Shilov and Alexandre Sablayrolles and Davide Testuggine and Karthik Prasad and Mani Malek and John Nguyen and Sayan Ghosh and Akash Bharadwaj and Jessica Zhao and Graham Cormode and Ilya Mironov},
  journal={arXiv preprint arXiv:2109.12298},
  year={2021}
}

博客文章和演讲

如果您想了解更多关于DP-SGD和相关主题的信息,请查看我们的一系列博客文章和演讲

常见问题解答

查看常见问题解答页面,了解有关差分隐私和Opacus的一些最常见问题的答案。

贡献

有关如何帮忙的更多信息,请参阅CONTRIBUTING文件。同时,请检查存储库中的README文件,以了解代码的组织方式。

许可协议

此代码根据Apache 2.0许可证发布,如LICENSE文件所示。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

opacus-1.5.2.tar.gz (143.4 kB 查看哈希值)

上传时间 源代码

构建发行版

opacus-1.5.2-py3-none-any.whl (239.9 kB 查看哈希值)

上传时间 Python 3

由以下支持