项目介绍:Opacus
Opacus 是一个用来在 PyTorch 中进行差分隐私训练的库。这个工具旨在帮助机器学习实践者和差分隐私研究者在不做复杂代码改动的情况下,为模型训练提供隐私保护。同时,它对训练性能的影响较小,并允许实时跟踪隐私预算的消耗情况。
目标用户
Opacus 的目标用户主要有两个群体:
-
机器学习实践者:对他们来说,Opacus 提供了一种简便的差分隐私训练模型的入门方法,只需进行极少的代码改动。
-
差分隐私研究者:对于研究者,该工具容易进行实验和调整,使其能专注于更加重要的研究内容。
安装指南
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()
方法将模型、数据加载器和优化器转换为支持隐私保护的版本。以下是简要示例:
# 定义组件
model = Net()
optimizer = SGD(model.parameters(), lr=0.05)
data_loader = torch.utils.data.DataLoader(dataset, batch_size=1024)
# 进入 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,
)
# 然后按常规方式运行
Opacus 提供了完整的 MNIST 示例,以及更多的示例,用户可以在 Opacus 的 GitHub 仓库中找到。
迁移到 Opacus 1.0
Opacus 1.0 对库进行了许多改进,同时也带来了一些重大变化。如果用户以前使用的是 Opacus 0.x 版本,并希望更新到最新版本,可以参考项目的迁移指南。
学习更多
Opacus 提供了一系列的互动教程,帮助用户入门差分隐私模型训练和学习 Opacus 的各种功能。例如:
- 构建使用差分隐私的图像分类器
- 训练用于姓名分类的差分隐私LSTM模型
- 在 BERT 上构建使用差分隐私的文本分类器
技术报告及引用
关于 Opacus 的技术报告详细描述了其设计原则、数学基础以及基准测试。如果在论文中使用 Opacus,希望用户能引用这份报告。
贡献及许可
Opacus 的代码在 Apache 2.0 许可证下发布,欢迎社区用户参与贡献及改进。有关如何贡献的详细信息可以在项目的 CONTRIBUTING 文件中找到。