在tensorflow之上的一层,用于对加密数据进行机器学习。
tensorflow-encrypted的Python项目详细描述
tf加密
tf encrypted是一个python库,它建立在tensorflow之上,供研究人员和实践者实验保护隐私的机器学习。它提供了一个类似于tensorflow的接口,旨在使该技术在不首先成为机器学习、密码学、分布式系统和高性能计算方面的专家的情况下随时可用。
特别是,图书馆的重点是:
- 易用性:API及其基本设计理念使您能够轻松地开始、使用隐私保护技术,并将其集成到预先存在的机器学习过程中。
- 可扩展性:该体系结构支持并鼓励对新的密码协议和机器学习算法进行实验和基准测试。
- 性能:为基于tensor的应用程序进行优化并依赖tensorflow的后端意味着运行时性能可以与专门的独立框架相媲美。
- 社区:项目的主要目标是推动技术的发展,鼓励合作和开源,而不是专有和封闭的解决方案。
- 安全性:根据安全性的强概念评估加密协议,并突出显示已知限制。
如需了解更多的背景资料,请参阅下面的,浏览示例,了解如何使用库。
该项目从最初实施后的几个贡献者的努力中获益匪浅,最显著的是辍学实验室和开放社区的成员。有关详细信息,请参见下文。
安装
tf encrypted作为一个包在pypi上提供,pypi支持python 3.5+和tensorflow 1.12.0+,可以使用:
pip3 install tf-encrypted
或者,也可以使用以下命令从源安装:
git clone https://github.com/mortendahl/tf-encrypted.git
cd tf-encrypted
pip3 install -e .
后者在尚未编译pip包的平台上很有用,但也需要用于开发。请注意,这将为您提供一个正常工作的基本安装,但要匹配pip包中提供的版本的性能和安全性,还需要一些步骤,请参见安装说明
为1.12.0定制TensorFlow
tf encrypted正式支持tensorflow 1.13.1,但如果您需要在1.12.0上运行,并且希望利用int64 tensor速度的改进,则必须使用自定义版本。
这些构建可用于macos和linux作为一个临时解决方案,直到tensorflow的下一个正式版本(1.13版)发布,但是没有对它们做出任何保证,它们应该被视为pre-alpha。有关更多信息,请参见安装说明
用法
下面是使用tf encrypted对加密数据进行简单matmul的示例:
importtensorflowastfimporttf_encryptedastfedefprovide_input():# local TensorFlow operations can be run locally# as part of defining a private input, in this# case on the machine of the input providerreturntf.ones(shape=(5,10))# define inputsw=tfe.define_private_variable(tf.ones(shape=(10,10)))x=tfe.define_private_input('input-provider',provide_input)# define computationy=tfe.matmul(x,w)withtfe.Session()assess:# initialize variablessess.run(tfe.global_variables_initializer())# reveal resultresult=sess.run(y.reveal())
背景和进一步阅读
以下文本提供了该项目的进一步深入介绍:
- 作为数据流程序的安全计算描述了最初的动机和实现
- Tensorflow中使用安全计算的私有机器学习进一步阐述了该方法的优点,概述了安全计算协议的适应性,并报告了具体的性能数字
- 尝试tf encrypted通过一个简单的示例,将现有的tensorflow预测模型转换为private
项目状态
tf加密是一种实验性软件,目前不打算在生产环境中使用。重点是构建底层的原语和技术,一些实际的安全问题将推迟到稍后的阶段。但是,要注意确保这些问题都不是不能根据需要解决的根本问题。
已知限制
- TensorFlow的网络子系统的元素似乎没有对恶意用户进行足够的强化。代理或其他访问过滤手段可能足以缓解这种情况。
贡献
不要犹豫发送一个请求,打开一个问题,或寻求帮助!有关更多信息,请查看我们的贡献指南!
几个人已经对这个图书馆的发展产生了影响(按字母顺序排列):
- ben decoste(辍学实验室)
- yann dupis(辍学实验室)
- 摩根•吉拉德(在辍学实验室时)
- ian livingstone(辍学实验室)
- jason mancuso(辍学实验室)
- justin patriquin(辍学实验室)
- andrew trask(已打开)
- 科恩弗吉尼亚州n der veen(打开)
一些公司投入了大量资源:
- 辍学实验室继续赞助大量的研究和工程
- openmined是最初想法的孕育地,并继续支持讨论和指导
许可证
在2.0版的apache许可下获得许可(请参见http://www.apache.org/licenses/license-2.0 rel="nofollow">license或http://www.apache.org/licenses/license-2.0)。版权如通知中所述