Facebook 正式开源 CrypTen:基于 PyTorch 的安全机器学习工具

阅读数:1023 2019 年 10 月 22 日 14:48

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具

机器学习通过基于云端或机器学习即服务(MLaaS)平台的实际应用提出了一系列安全和隐私挑战。尤其对于这些平台上可能不希望或无法共享未经加密数据的用户,他们可能因此无法充分利用机器学习工具。为了应对这些挑战,帮助人们更好地理解如何应用其中的某些技术,Facebook 发布了 CrypTen,这是新的基于社区的研究开源平台,旨在推动隐私保护机器学习领域的发展。

尽管人工智能社区最近在推进机器学习的应用方面取得了巨大的进步,但目前只有非常有限的工具来构建能够处理加密数据的机器学习系统。这限制了机器学习在必须进行加密以确保安全的领域中的使用,例如,涉及敏感医疗信息或数据的工作,为了保护隐私,人们希望对这些数据进行加密。就目前来讲,构建安全的机器学习系统来处理用例仍然是困难的,甚至是不可能的任务,因为功能强大、易于使用的框架无法有效地处理加密数据。

为了解决这一需求并加速这一领域的发展,Facebook AI 研究人员已经构建 CrypTen ,并将其开源,这是一种新的基于 PyTorch 的、易于使用的软件框架,旨在促进安全和隐私保护机器学习的研究。

CrypTen 使机器学习研究人员(通常不是密码学专家)能够使用安全计算技术轻松对机器学习模型进行实验。通过利用和集成 PyTorch,CrypTen 为已经熟悉其 API 的机器学习研究人员和开发人员降低了门槛。

人工智能研究人员可以使用 CrypTen 来训练 PyTorch 模型,例如使用加密数据的 ResNet,同时保持 PyTorch 张量(torch.Tensor)的熟悉外观和感觉。例如:

复制代码
x = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5, 6])
z = x + y

可以修改如下:

复制代码
x_enc = crypten.cryptensor([1, 2, 3])
y_enc = crypten.cryptensor([4, 5, 6])
z_enc = x_enc + y_enc

CrypTen 提供了一座桥梁,将成千上万的机器学习研究人员已经熟悉的 PyTorch 平台和关于算法和系统的长期学术研究连接起来,这些算法和系统能够有效地处理加密数据。由于安全计算技术有各种各样的取舍,比如更高的计算和通信要求,或者功能空间有限,因此对人工智能学术界来说,探索这一领域还有很长的路要走。但是我们相信,CrypTen 将会帮助学术界和私营行业的研究人员迈向未来,在这个未来中,安全计算技术已经成为机器学习框架本身不可分割的一部分,因此,研究人员和工程师可以在必要时无缝地过渡到保护隐私的机器学习。

我们将在 PyTorch 开发者大会上展示 CrypTen 以及其他新的研发工具。要获得 CrypTen,可以访问: https://facebookresearch.github.io/CrypTen/ ,更多技术细节可以在 CrypTen 网站上获得。

CrypTen 的基本组件

CrypTen 目前实现了一种称为安全多方计算(Secure Multiparty Computation,MPC)的加密方法,我们希望在未来版本中增加对同态加密和安全区域的支持。MPC 不同于目前广泛使用的 RSA、AES 和其他加密协议,它允许在加密数据上进行计算,同时保护隐私。我们在密码学研究中经常使用的“诚实但好奇”模型(假设没有恶意和对抗性代理)中实现 MPC,但在 CrypTen 准备好用于生产环境之前,必须添加额外的保护措施。

译注: 安全多方计算的研究主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题,在电子选举、电子投票、电子拍卖、秘密共享及门限签名等场景中有着重要的作用。

一个安全多方计算协议,如果对于拥有无限计算能力攻击者而言是安全的,则称作是信息论安全的或无条件安全的;如果对于拥有多项式计算能力的攻击者是安全的,则称为是密码学安全的或条件安全的。
已有的结果证明了在无条件安全模型下,当且仅当恶意参与者的人数少于总人数的 1/3 时,安全的方案才存在。而在条件安全模型下,当且仅当恶意参与者的人数少于总人数的一半时,安全的方案才存在。

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具

上图提供了 CrypTen 的高级概述,其中数据和模型都使用 MPC 进行加密

与现有的安全计算协议实现相比,CrypTen 为机器学习研究者提供了三个主要好处。

  1. 首先是机器学习。该框架通过一个 CrypTensor 对象来呈现协议,该对象的外观和感觉完全类似于 PyTorch 张量。这使得用户可以使用自动微分和神经网络模块,类似于 PyTorch 中的模块。这有助于使用 PyTorch 的任何人都可以访问安全协议。

  2. CrypTen 是基于库的。与这个领域的其他软件不同,我们没有实现编译器,而是像 PyTorch 那样实现了一个张量库。这使得人们更容易进行调试、实验和探索机器学习模型。

  3. 该框架在构建时就考虑到了现实世界的挑战。CrypTen 不会缩减或过于简化安全协议的实现。各方在相互通信的独立进程中运行。各方也可以在不同的机器上运行。尽管目前 CrypTen 尚未投入生产环境,但它可以为使用安全协议进行机器学习的计算和通讯需求提供现实的洞见,从而促进高质量的研究。

以下代码片段显示了一个使用加密数据的加密模型的推理示例。

PyTorch 主代码段:

复制代码
data = torch.load(DATA_PATH)
model = torch.load(MODEL_PATH)
model.eval()
output = model(data)

CrypTen 主代码段:

复制代码
data_enc = crypten.load(DATA_PATH, src=1)
model = crypten.load(PATH, dummy_model=ModelClass(), src=0)
dummy_input = torch.empty(data_enc.size())
private_model = crypten.nn.from_pytorch(model, dummy_input).encrypt(src=0)
private_model.eval()
output_enc = private_model(data_enc)

在发布时,CrypTen 涵盖了从简单的线性模型到 ResNet 的各种模型,我们正在努力与 PyTorch 模型的整个领域保持一致。

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具

此实例展示了 MPPC 如何通过将数据划分给多方来加密信息,每一方都可以对其共享的数据执行计算(分别为 5 和 7),但却不能读取原始数据(12)。然后各方进行计算(“乘以 3”)。当合并输出时,结果(36)与直接对数据进行计算的结果相同。由于 A、B 双方并不知道最终结果(36),因此无法推断出原始数据点(12)。

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具

该动图显示了 MPC 如何在任何一方都无法访问图像内容的情况下调整图片

机器学习对安全计算工具的需求

如今的机器学习系统通常可以在设备上安全地运行,例如,将语音转换成文本或将一种语言翻译成另一种语言。但是在部署这些模型之前,它们通常要接受公开公用的数据进行训练,比如 Wikipedia 条目,或已授权使用的数据集,如 ImageNet。但是,在许多情况下,要么训练所需的数据过于敏感而无法共享,要么存在安全、隐私、政策或法律障碍等。

例如,医学研究人员在对遗传数据进行群体研究时,就经常面临困难的挑战,因为这些数据非常敏感,无法轻松地在研究机构之间共享。同样,研究公司间的性别薪酬差距也很困难,因为共享薪酬数据会涉及到隐私问题。像 MPC 这样的安全技术为这些问题提供了潜在的解决方案,它允许各方以一种安全的方式加密它们的数据,同时仍然允许对加密数据汇总进行机器学习计算。

尽管 MPC 支持这样的用例,但由于缺乏熟悉的机器学习框架来抽象技术的复杂性,使用 MPC 进行机器学习研究仍然具有挑战性。CrypTen 通过揭示机器学习研究人员熟悉的抽象来满足这一需求。

示例用法和应用

CrypTen 可以加载预训练的 PyTorch 模型,让用户可以灵活的加载现有模型,以便使用加密数据进行推理。用户还可以使用熟悉的 PyTorch API 来训练加密模型。该框架支持快速增长的 PyTorch 张量算子子集,用户可以用它来构建像 ResNet 这样的模型。

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具

该图显示了 CrypTen 如何通过加密张量替换标准的 PyTorch 张量,使研究人员能够轻松地使用 PyTorch 模型。虚线显示了我们希望在将来添加的 CrypTen 的潜在内容

CrypTen 可以执行任意数量的 MPC,也可以在算数和二进制(异或运算)共享之间进行转换,从而实现像 ReLU 这样的常见非线性的特性,而无需任何近似。这也支持像 max 这样的操作,这对于上下文绑定模型是必需的。

随着计算和通信的增加,安全计算基数也面临着性能下降的挑战。CrypTen 致力于解决这一问题,其方法是根据需要时将功能转移到 PyTorch 内核,例如,在 PyTorch 本身中添加对 int64 等数据类型的支持。深度学习系统必须能够大规模高效地运行,因此我们将在未来版本中继续改进性能。

这些功能使 Facebook 研究人员能够使用 CrypTen 构建保护隐私的上下文老虎机(Contextual bandit)模型。许多推荐系统都使用了上下文老虎机模型,在这些系统中,各方根据其环境的特定上下文选择一个手臂,然后为它们的行为获得奖励。各方将奖励作为学习信号,目标是使总奖励最大化,从而解决推荐或排名问题。

在这种情况下的保护隐私的变体中,各方都有不愿意与他方共享的上下文。CrypTen 允许我们在遵守这一要求的同时对模型进行训练。各方对其上下文进行加密,并使用加密模型来选择一只手臂。所选手臂只显示给拉手臂的一方。然后另一方接收到奖励,该奖励信号被加密,用来学习加密模型,从而关闭学习循环。

上下文老虎机模型有几个特征,这些特征对于许多基于 MPC 的系统来说都具有挑战性。可以有任意数量的参与方,但许多 MPC 协议是专门针对两个参与方。这些模型涉及到对 MPC 具有挑战性的计算,例如除法、求幂和求最大值。CrypTen 具有与多方协作的能力,其高效的云算法实现、在加法运算或异或运算共享之间来回切换,这使得像 max 这样的运算符,以及它熟悉的 PyTorch API,使我们能够快速训练这样的模型。

加速机器学习安全计算框架的研究

在过去的十年中,机器学习取得了翻天覆地的进步,部分原因是数据和计算的可用性以及易于使用的框架的发展。我们希望通过开发像 CrypTen 这样的工具,降低其他研究人员的进入门槛,我们可以帮助促进和加速开发新的机器学习安全技术的研究。

作者介绍:

David Gunning,技术项目经理;Awni Hannun,研究科学家;Mark Ibrahim,软件工程师;Brian Knott,研究工程师;Laurens van der Maaten,研究科学家;Vinicuis Reis,软件工程师;Shubho Sengupta,软件工程师;Shobha Venkataraman,软件工程师;Xing Zhou,人工智能研究工程师。

原文链接:

https://ai.facebook.com/blog/crypten-a-new-research-tool-for-secure-machine-learning-with-pytorch

评论

发布