写点什么

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

  • 2019-10-22
  • 本文字数:3973 字

    阅读完需:约 13 分钟

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 时,安全的方案才存在。而在条件安全模型下,当且仅当恶意参与者的人数少于总人数的一半时,安全的方案才存在。



上图提供了 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 模型的整个领域保持一致。



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



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

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

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


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


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

示例用法和应用

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



该图显示了 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


2019-10-22 14:483756

评论

发布
暂无评论
发现更多内容

腾讯云TencentOS Server AI,助力荣耀打造高性能AI底座

极客天地

【6.12 直播】内存泄漏怎么办?时序数据库 IoTDB 官方避坑指南“面对面”告诉你!

Apache IoTDB

Framework失败问题,全面整理.NET Framework 各种安装失败及异常情况

小焱

Framework

DJ舞台设计:重塑电子音乐体验

Dylan

Dj LED显示屏 全彩LED显示屏 led显示屏厂家 舞台表演

创业,是加速“祛魅”最有效的办法

程序员郭顺发

加速数字化转型:低代码平台在关键业务领域的四大高效落地场景

不在线第一只蜗牛

低代码

AI实时对话开启粉丝互动新时代

腾讯云音视频

人工智能 腾讯云 实时音视频 trtc AI实时对话

吴恩达:AI 被过度炒作,但语音 AI 产品却被低估;ChatGPT 升级语音翻译功能丨日报

RTE开发者社区

鸿蒙Next仓颉语言开发实战教程:店铺详情页

幽蓝计划

摩尔线程重磅亮相2025北京智源大会,传递国产算力发展加速度

新消费日报

组件库实战-基建思路

溪抱鱼

typescript Vue Rest

内网IM选型逻辑:企业为何青睐自研或外采私有化IM

BeeWorks

即时通讯 IM

2025全球人形机器人领域深度报告:人形机器人、具身智能技术、商业化壁垒、产业链公司及投资分析

机器人头条

科技 大模型 人形机器人 具身智能

短信验证码服务最佳实践:个人开发者如何选择和集成现代化短信服务

外滩运维专家

中烟创新智能稽核平台:为烟草行业定制的数字化风控引擎

中烟创新

ES Serverless 8.17王牌发布:向量检索「火力全开」,智能扩缩「秒级响应」!

阿里云大数据AI技术

大数据 运维 数据处理 Server 向量检索

懒懒笔记 | 课代表带你梳理【RAG课程 11&12:优化和加速你的RAG】

商汤万象开发者

AI LLM rag实战

HTAP 技术:融合事务与分析的数据处理新范式

镜舟科技

OLAP OLTP HTAP 数据库架构 实时分析

DirectX 修复工具增强版:Direct 官方中文修复利器免费下载

小焱

dll DLL库 directx directx不兼容 dll缺失

华为云重磅亮相 KubeCon China 2025 ! 精彩议程一览

华为云开源

开源 云原生 华为云

AWS EKS 集群日志上报观测云实践

观测云

aws lambda

低代码“偷懒”技巧,我建议全公司学!

引迈信息

DAO模式:去中心化治理与代币激励设计

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

图解JavaScript原型:原型链及其分析 | JavaScript图解

电子尖叫食人鱼

JavaScript

4种比常见的线程池和线程同步买票问题

量贩潮汐·WholesaleTide

Java Python

C# 模式匹配全解:原理、用法与易错点

量贩潮汐·WholesaleTide

C#

报名启动|隐语开源社区Meetup大湾区站 x 数据安全沙龙来啦

隐语SecretFlow

数据安全 隐私计算 数据流通 数据要素流通

实时多模态如何重塑未来交互?我们邀请 Gemini 解锁了 39 个实时互动新可能丨Voice Agent 学习笔记

RTE开发者社区

跨链模式:多链互操作架构与性能扩展方案

区块链软件开发推广运营

dapp开发 链游开发 公链开发 公链开发代币开发 链游开发交易所开发

大数据-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件

武子康

大数据 hadoop mapreduce hive

Facebook正式开源CrypTen:基于PyTorch的安全机器学习工具_AI&大模型_David Gunning_InfoQ精选文章