使用差分隐私训练PyTorch模型
项目描述
Opacus 是一个库,它使PyTorch模型使用差分隐私进行训练成为可能。它支持对客户端进行最小代码更改的训练,对训练性能影响很小,并允许客户端在线跟踪在任何给定时刻消耗的隐私预算。
目标受众
本代码发布针对两个目标受众
- 机器学习从业者会发现,这是以差分隐私训练模型为目标的温和引入,因为它只需要最小的代码更改。
- 差分隐私研究人员会发现,这很容易进行实验和调整,使他们能够专注于关键任务。
安装
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各种功能的温和引入。
- 使用差分隐私构建图像分类器
- 为姓名分类训练一个差分隐私LSTM模型
- 在BERT上使用差分隐私构建文本分类器
- Opacus指南:高级功能简介
- Opacus指南:梯度采样器
- 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和相关主题的信息,请查看我们的一系列博客文章和演讲
- 差分隐私系列第1部分 | DP-SGD算法解释
- 差分隐私系列第2部分 | Opacus中的高效逐样本梯度计算
- PriCon 2020教程:使用Opacus进行差分隐私模型训练
- PyTorch上的差分隐私 | PyTorch开发者日2020
- Opacus v1.0亮点 | PyTorch开发者日2021
常见问题解答
查看常见问题解答页面,了解有关差分隐私和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 查看哈希值)