关于pytorch:Opacus一款用于训练具有差分隐私的PyTorch模型的高速库

38次阅读

共计 2736 个字符,预计需要花费 7 分钟才能阅读完成。


原作者:Davide Testuggine、Ilya Mironov,均为 Facebook AI 利用钻研科学家
原文链接:https://ai.facebook.com/blog/…

Opacus 是一个可能训练 PyTorch 模型的差分隐衷的库。它反对在客户端上以最小的代码改变进行训练,对训练性能影响不大,并容许客户端在线跟踪任何给定时刻的隐衷估算收入。
这个代码版本是针对两个指标受众:
ML 从业者会发现这是一个温和的介绍,以训练一个具备微分隐衷的模型,因为它须要最小的代码变动。
差分隐衷科学家会发现这很容易进行试验和修整,让他们专一于重要的事件。

Opacus 是一种新的高速库,用于应用差分隐衷(DP)训练 PyTorch 模型,该库比现有的最新办法更具可扩展性。差别隐衷是用于量化敏感数据匿名化的严格数学框架。它通常用于剖析中,并且对机器学习(ML)社区的趣味日益浓重。随着 Opacus 的公布,咱们心愿为钻研人员和工程师提供一条更轻松的路径,以在 ML 中采纳差别隐衷,并减速该畛域的 DP 钻研。

Opacus 提供:

  • 速度:通过利用 PyTorch 中的 Autograd 挂钩,Opacus 能够计算成批的每个样本的梯度,与依赖微批处理的现有 DP 库相比,可将数量级的速度提速。
  • 平安:Opacus 应用 明码平安的伪随机数生成器
  • 对其安全性至关重要的代码。这在 GPU 上高速解决了整批参数。
  • 灵活性:多亏了 PyTorch,工程师和钻研人员能够通过将咱们的代码与 PyTorch 代码和纯 Python 代码进行混合和匹配来疾速创立他们的想法的原型。
  • 生产力:Opacus 随附教程,辅助性能,这些性能甚至能够在你开始培训之前就正告不兼容的图层以及主动重构机制。
  • 交互性:Opacus 会跟踪你在任何给定工夫点破费了多少隐衷估算(DP 中的外围数学概念),从而可能提前进行和实时监控。

Opacus 通过引入 PrivacyEngine 形象定义了一个轻量级的 API,该形象既能够跟踪你的隐衷估算,也能够解决模型的突变。你无需间接调用它即可运行,因为它已连贯到规范 PyTorch 优化器。它在后盾运行,使应用 Opacus 进行培训就像在培训代码的结尾增加以下代码行一样容易:

model = Net()

optimizer = torch.optim.SGD(model.parameters(), lr=0.05)

privacy_engine = PrivacyEngine(

 model,

 batch_size=32,

 sample_size=len(train_loader.dataset),

 alphas=range(2,32),

 noise_multiplier=1.3,

 max_grad_norm=1.0,

)

privacy_engine.attach(optimizer)

That's it! Now it's business as usual

训练后,生成的工件是规范的 PyTorch 模型,没有额定的步骤或部署公有模型的阻碍:如果你明天能够部署模型,则能够在应用 DP 对其进行了训练之后进行部署,而无需更改任何代码。

Opacus 库还包含通过事后训练和微调的模型,针对大型模型的教程以及为隐衷钻研试验而设计的根底构造。

应用 Opacus 实现高速隐衷培训

咱们与 Opacus 的指标是保留每个训练样本的隐衷,同时限度对最终模型准确性的影响。

Opacus 通过批改规范的 PyTorch 优化器来做到这一点,以便在训练过程中施行(和测量)DP。

更具体地说,咱们的办法集中在差分公有随机梯度降落(DP-SGD)上。

该算法背地的核心思想是,咱们能够通过干涉模型用来更新权重的参数梯度(而不是间接获取数据)来爱护训练数据集的隐衷。通过在每次迭代中将噪声增加到梯度中,咱们能够避免模型记住其训练示例,同时仍可进行汇总学习。(无偏的)噪声天然会在训练过程中看到的许多批次中对消。

然而,减少噪声须要奥妙的均衡:过多的噪声会毁坏信号,而过少的噪声将无奈保障隐衷。为了确定适合的比例,咱们看一下梯度的范数。限度每个样本对梯度的奉献很重要,因为离群值比大多数样本具备更大的梯度。咱们须要确保这些异样值的私密性,尤其是因为它们极有可能被模型记住。为此,咱们在一个小批处理中计算每个样本的梯度。咱们别离裁剪梯度,将其累积回单个梯度张量,而后将噪声增加到总和中。

这种基于样本的计算是构建 Opacus 的最大阻碍之一。与 PyTorch 的典型操作相比,它更具挑战性,主动毕业计算整个批次的梯度张量,因为这对于所有其余 ML 用例都是有意义的,并且能够优化性能。为了克服这个问题,咱们应用了高效技术训练规范神经网络时取得所有所需的梯度向量。对于模型参数,咱们独自返回给定批次中每个示例的损失梯度,如下所示:

这是 Opacus 工作流程的图表,咱们在其中计算每个样本的梯度。

通过在运行各层时跟踪一些两头数量,咱们能够应用适宜内存的任何批次大小进行训练,从而使咱们的办法比其余软件包中应用的代替微批次办法快一个数量级。

隐衷爱护机器学习的重要性

平安社区激励平安要害代码的开发人员应用大量通过认真审查和业余保护的库。通过容许应用程序开发人员专一于他们最理解的事件:构建杰出的产品,这种“不自行加密”的准则有助于最大水平地缩小攻击面。随着 ML 的利用和钻研一直减速,对于 ML 钻研人员而言,重要的是应用易于应用的工具来取得数学上严格的隐衷保障,而不会拖慢培训过程。

咱们心愿通过开发 Opacus 等 PyTorch 工具,使对此类隐衷爱护资源的拜访民主化。咱们正在应用 PyTorch 更快,更灵便的平台弥合平安社区和个别 ML 工程师之间的鸿沟。

修建社区

在过来的几年中,隐衷爱护机器学习(PPML)社区失去了疾速倒退。咱们为 Opacus 四周曾经造成的生态系统感到兴奋,咱们的次要贡献者之一是 OpenMined,这是一个由数千名开发人员组成的社区,他们正在构建以隐衷为核心的利用。并利用许多 PyTorch 构建块为 PySyft 和 PyGrid 提供根底,以实现差异化隐衷和联结学习。作为单干的一部分,Opacus 将成为 OpenMined 库(例如 PySyft)的依赖项。咱们期待持续咱们的单干,并进一步扩充社区。

Opacus 是 Facebook AI 促成工作提高的更宽泛致力的一部分平安倒退 计算技术用于机器学习和负责任的人工智能。总体而言,这是未来将其畛域转向构建隐衷优先零碎的重要踏脚石。

  • 为了更深刻地理解差别隐衷的概念,咱们将开设一系列专门针对差别公有机器学习的中级职位。第一局部着眼于要害的基本概念。在此处浏览 PyTorch Medium 博客。
  • 咱们还提供全面的教程和 Opacus 开源库在这里。

开源地址:https://github.com/pytorch/op…

正文完
 0