面向隐私计算+AI的TensorFlow深度定制化实践

面向隐私AI的TensorFlow深度定制化实践

在上一篇文章整体介绍中,我们整体上了介绍了基于深度学习框架开发隐私 AI 框架中的工程挑战和可行解决方案。在这一篇文章中,我们进一步结合 Rosetta 介绍如何定制化改造 TensorFlow 中前后端相关组件,以集成 MPC 等隐私计算技术,同时保留对 TensorFlow 接口 API 的复用,从而实现我们上一篇文章中所强调的“系统易用性”。

目前 Rosetta 主要基于 TensorFlow 1.14 CPU 版本加以开发(以下简称 TensorFlow 为 TF),这是因为 TF 1.x 目前在工业界中实际应用是较为广泛的,而引入动态图等高级功能的 TF 2.0,则由于接口的不向后兼容等问题,仍没有得到大规模的落地。 后续我们也将在 Rosetta 本身功能稳定的基础上考虑支持 TF 2.0。下面就让我们开始吧。

TensorFlow 快速回顾

想要基于 AI 框架进一步扩展引入隐私计算功能,第一步就是需要比较深入的了解这些 AI 框架,所以首先让我们简单回顾一下TF中核心的一些概念以及其宏观的内部处理过程。

TensorFlow 的核心概念

  • Tensor(张量)

深度学习需要完成对大量高维度复杂数据的处理,在TensorFlow中,用Tensor来封装同一类型数据的高维数组。其中,基础类型除了各种不同精度的整数、浮点数外,还支持tf.string类型,这给我们提供了进行自定义类型改造的可能性。

在这里插入图片描述
一个三维Tensor (图片来自网络)

  • Operation(算子)

Operation(算子,有时也称“操作”)用来封装对于 Tensor 的处理逻辑。同时也是连接 TF 的前端和后端之间逻辑处理的基本单元,在实际使用中,用户可以使用keras等上层封装 API 更方便的表达复杂计算逻辑,但是这些上层模块的内部,也会最终调用各个算子来完成逻辑的表达。

  • Graph(计算图)

用户在 TF 前端调用各 API 形成的完整计算逻辑,在内部会以 dataflow graph 的形式来表达。在这一有向无环图(DAG)上,以算子等作为节点,以 Tesnor 等作为边来指明数据的流动路径。在 graph 上,有些节点是 TF 框架自身根据需要添加的,比如,用户在training算法阶段时,只需要调用各种优化器(Optimizer)的minimize方法,TF 自身就会自动的找到前向图中各算子所对应的梯度算子,并按照数学上的链式求导法则,构建出反向梯度子图。

在这里插入图片描述

​ TensorFlow 数据流计算图 (图片来自 TensorFlow 社区)

  • Session(会话)

Session 主要是在实际执行 graph 时对一次执行的上下文进行维护处理。当用户调用其run方法时,TF 就会分析为了获取这一次的计算目标所需要运行的子图,并结合 TF 内置的强大的并行优化、分布式执行等模块,将所需要执行的逻辑进一步拆分为各个子图,各自映射到当前的可用设备资源上,最终调度这些设备以并行的方式高效完成计算任务。

在这里插入图片描述

​ TensorFlow 分布式并行执行 (图片来自网络)

TensorFlow 的 codebase 本身还是很复杂的,篇幅所限,难以在此对 TensorFlow 进行深入的介绍,感兴趣的读者可以参考 TensorFlow 社区中其他优秀文章以进一步学习。

TensorFlow 自定义算子库的扩展方法

TF 提供了较为丰富的扩展方法,除了在 Python 层可以基于内置的丰富算子集合,通过模块的继承、组装等方式得到自定义的功能之外,还可以在后端 C++ 层自定义自己的算子 [2]。在后端基于 Custom C++ op 机制进行扩展相比于在前端层进行扩展有一些特别的优势:

  • 有时候基于现有 TF 原生算子表达上层自定义逻辑很困难,而在后端实现则更灵活自由;
  • 通过后端 Custom C++ op,可以以更加高效的方式实现自己的逻辑,可以在其中进行更底层的、面向编译器等的各种优化;

整体上看,基于 TF 的扩展工具,使用 custom C++ op,只需要完成以下四步即可:

  1. 通过 TF 提供的 C++ 宏工具注册新的 op。这主要是定义好这个 op 的输入输出类型、名称等接口信息。例如在Rosetta 中可以如下定义一个新的 op:

    REGISTER_OP("RttMatmul")
      .Input("x: string")
      .Input("y: string")
      .Output("res: string")
      .Attr("transpose_a: bool = false")
      .Attr("transpose_b: bool = false")
      .SetIsStateful();
    
  2. 在 C++ 中具体的实现这个 op 所对应的内部处理逻辑,这就是所谓的 后端 “kernel”。TF

相关推荐

下一代共识机制探究——基于DAG的BFT共识

本文将先介绍基础理论:基于 DAG 的 BFT 共识和基于轮的 BFT 共识,然后详细解读 DAGRider 、Tusk 以及 Bullshark 协议。

Matrix_element的博客 1653

【密码学探秘】EVM链和并行执行交易

在web3.0世界中,交易的处理性能一直是公链面临的一大技术挑战,如何在不降低安全性和去中心化程度的前提下显著的提升区块链交易的TPS无疑成为众多公链技术专家追逐的目标。是否可以既做到对EVM的兼容,又可以通过并行执行交易来达到提升性能的目的呢?

Matrix_element的博客 563

PrivacIN Week4课程回顾 | ZK应用实践

隐私学院【PrivacyIN】第一期ZK训练营第四课——《ZK Hands-on》如期开讲,主要介绍Circom电路开发和ZK应用实践。

Matrix_element的博客 2019

PrivacIN Week3课程回顾 | 韩博士讲授ZK电路开发 & zkEVM设计

隐私学院PrivacyIN首期ZK训练营第三课——《Applied ZK In Practice》开讲,由香港科技大学在读博士韩思远以ZK电路开发和zkEVM设计为主题,围绕零知识证明应用电路设计及zkEVM构建思路展开讲授。

Matrix_element的博客 857

PrivacyIN Week2 | 张宇鹏博导开讲经典零知识证明协议设计原理

隐私研究院PrivacyIN第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍经典零知识证明协议设计原理,课堂主题为《Basic Principles of the Classic ZK Protocols (Groth16 Plonk Stark)》。

Matrix_element的博客 698

PrivacyIN Week1课程回顾 | 张宇鹏博导开讲零知识证明密码学基础&研究导论

隐私学院PrivacyIN第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍ZK理论及相关应用,课堂主题为《Basics of ZK Cryptography & Research Overview》。

Matrix_element的博客 1793

PrivacyIN隐私学院第二期训练营开启报名 聚焦门限签名及安全多方计算

TSS(Threshold Signature Scheme 门限签名) 是MPC(安全多方计算)密钥管理的重要研究方向,可以支持多方管理私钥和资产。

Matrix_element的博客 1508

PrivacyIN课程 | 详尽解析ZK重要协议的设计理念【内含视频】

本期课程由德克萨斯农工大学计算机科学与工程系助理教授张宇鹏详细介绍了ZK重要协议的设计理念,包括:Groth16 Plonk Stark。不同电路满足不同的场景,从性能、可信启动等角度进行对比。

Matrix_element的博客 356

PrivacyIN课程视频 | Basics of ZKP Cryptography & Research Overview

初识零知识证明

Matrix_element的博客 343

PrivacyIN首期ZK训练营毕设启动 学术、投资导师全程护航

第二期再见!

Matrix_element的博客 364

转:PrivacyIN隐私学院掀起密码学热潮 首期密码学讲座今日开启

PrivacyIN将开启课程之外的系列讲座,首期讲座于今日7月28日20:30(UTC+8)开启

Matrix_element的博客 968

PrivacyIN隐私学院开启报名啦!打造密码学全球「私」塾

PrivacyIN隐私学院首期ZK训练营开启报名!

Matrix_element的博客 447

【隐私计算笔谈】零知识证明系列专题(二):一个个人化的视角:零知识、模拟与归约

> 你或许已经坐在了历史上最好的观景台上。眼下的密码算法与协议——如零知识证明与安全多方计算等——正在深刻地改变社会个体/组织之间信任的来源和它的成本。密码技术可能会远远超出一个技术的范畴,最终对社会变革产生深远的影响。或许,我们将要看到的景象要远比Michael Lewis「在金融业即将迎来变革的戏剧性时刻坐在位置最好的观景台前」所看到的更加波澜壮阔。——邓燚文 | 邓燚本文承接:【隐私计算笔谈】零知识证明系列专题(一):零知识证明与重置模拟文章目录Feige-Shamir:优雅的证据

Matrix_element的博客 1534

【隐私计算笔谈】MPC系列专题(十九):三方复制秘密共享(五)

文章目录三方OT跨表示形式的子秘密计算推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路【隐私计算笔谈】MPC系列专题(.

Matrix_element的博客 1584

【隐私计算笔谈】零知识证明系列专题(一):零知识证明与重置模拟

【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(三)你或许已经坐在了历史上最好的观景台上。眼下的密码算法与协议——如零知识证明与安全多方计算等——正在深刻地改变社会个体/组织之间信任的来源和它的成本。密码技术可能会远远超出一个技术的范畴,最终对社会变革产生深远的影响。或许,我们将要看到的景象要远比Michael Lewis「在金融业即将迎来变革的戏剧性时刻坐在位置最好的观景台前」所看到的更加波澜壮阔。——邓燚文 | 邓燚文章目录【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(

Matrix_element的博客 1836

【隐私计算笔谈】MPC系列专题(十八):三方复制秘密共享(四)

【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(三)在三方复制秘密共享的基本操作中,有些操作在算数电路的环Z2k{Z_{2^k}}Z2k​上进行效率高,而有些则在布尔电路上进行效率高,因此需要有操作将在环上表示的操作数转换为布尔表示(二进制表示),而操作数在安全多方计算中都是以子秘密( Share )的形式,因此实际是将环上表示的三方复制秘密共享子秘密转换为按比特共享的子秘密形式,记为[x]A→[x]B。之前的科普已经介绍过将在域Fq下的子秘密转换为按比特共享的子秘密形式,三方复制秘密共享

Matrix_element的博客 1336

【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(三)

作者 | 胡震恺 等【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(三)文章目录【隐私计算笔谈】MPC系列专题(十七):三方复制秘密共享(三)三方复制秘密共享(二)推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议【隐私.

Matrix_element的博客 1456

【隐私计算笔谈】MPC系列专题(十六):三方复制秘密共享(二)

作者 | 胡震恺 等【隐私计算笔谈】MPC系列专题(十六):三方复制秘密共享(二)文章目录【隐私计算笔谈】MPC系列专题(十六):三方复制秘密共享(二)Truncate ITruncate II推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元.

Matrix_element的博客 1569

【隐私计算笔谈】MPC系列专题(十五):三方复制秘密分享

【隐私计算笔谈】MPC系列专题(十五):三方复制秘密分享文章目录【隐私计算笔谈】MPC系列专题(十五):三方复制秘密分享三方复制秘密分享三方复制秘密分享复制秘密共享( three-party replicated secret sharing ),是另一种秘密共享技术。本次科普要介绍的是Araki等人的半诚实的三方复制秘密共享协议,用于在三方环境下的安全多方计算和秘密共享,可以容忍最多一个腐化用户,其相比于Shamir(2, 3)来说有非常小的通信量和计算量。首先介绍在布尔电路下的情景,假设参与者

Matrix_element的博客 2814

【隐私计算笔谈】MPC系列专题(十四):双方比较

【隐私计算笔谈】MPC系列专题(十四):双方比较文章目录【隐私计算笔谈】MPC系列专题(十四):双方比较双方比较双方比较之前已经介绍过了利用加密电路或者比特分解来实现安全多方比较。本次再介绍一种利用不经意传输来实现双方比较的方法。不经意传输在之前的科普进行过介绍,该比较协议的主要思路为:将需要比较的两个比特串分为多个部分,每个部分再进行比较,最后利用树形结构进行组合。假设有比特串????和比特串????,将比特串????划分为两个部分,分别为????1,????0,将比特串????也划分为????

Matrix_element的博客 1747

【隐私计算笔谈】MPC系列专题(十三):比特分解

【隐私计算笔谈】MPC系列专题(十三):比特分解文章目录【隐私计算笔谈】MPC系列专题(十三):比特分解比特分解推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺【隐私计算笔谈】

Matrix_element的博客 1042

【隐私计算笔谈】MPC系列专题(十二):比特比较

【隐私计算笔谈】MPC系列专题(十二):比特比较文章目录【隐私计算笔谈】MPC系列专题(十二):比特比较比特或比特比较(Bitwise Compare)推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议【隐私计算笔谈】MPC系列专题(六

Matrix_element的博客 1389

【隐私计算笔谈】MPC系列专题(十一):共享随机数和比特分享

【隐私计算笔谈】MPC系列专题(十一):共享随机数和比特分享作者 | 胡震恺 崔泓睿 郁昱文章目录【隐私计算笔谈】MPC系列专题(十一):共享随机数和比特分享共享随机数随机单比特分享(Joint Random Bit Sharing)推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】M

Matrix_element的博客 1685

【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算

【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算作者 | 胡震恺 崔泓睿 郁昱文章目录【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算集合运算隐私保护集合交推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议

Matrix_element的博客 1619

【隐私计算笔谈】MPC系列专题(九):OT协议(三)

【隐私计算笔谈】MPC系列专题(九):OT协议(三)作者 | 胡震恺 崔泓睿 郁昱文章目录【隐私计算笔谈】MPC系列专题(九):OT协议(三)OT扩展协议推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议【隐私计算笔谈】MPC系列专题

Matrix_element的博客 2256

【隐私计算笔谈】MPC系列专题(八):OT协议(二)

【隐私计算笔谈】MPC系列专题(八):OT协议(二)作者 | 胡震恺 崔泓睿 郁昱文章目录【隐私计算笔谈】MPC系列专题(八):OT协议(二)通用的半诚实公钥OT协议Beaver的非黑盒构造推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BM

Matrix_element的博客 2940

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路文章目录【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路Kolesnikov 的门估值秘密共享方案推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议Kolesniko

Matrix_element的博客 1702

【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺

【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺文章目录【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺零知识证明比特承诺零知识证明交互式证明系统由两方参与,分别为证明者( Prover )和验证者( Verifier ) 。证明者掌握某一秘密,证明者需要让验证者相信自己掌握该秘密。交互式证明过程需要多轮,最典型的是每一轮验证者向证明者发送一个询问信息( 挑战,Challenge ),证明者对询问信息进行计算,并回复信息响应( Response )。验证者根据证明者每一

Matrix_element的博客 1971

【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议

【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议文章目录【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议Beaver三元组BMR协议推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议Beaver三元组Beaver三元组( Beaver Triple )主要用

Matrix_element的博客 7652

【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议

【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议文章目录【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议GMW协议BGW协议推荐阅读【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览【隐私计算笔谈】MPC系列专题(二):模型和Shamir秘密共享机制【隐私计算笔谈】MPC系列专题(三):不经意传输与混淆电路GMW协议GMW协议由Goldreich等人提出,基于混淆电路( Garbled Circuit ),支持多方的半诚实的安全计算协议。和之前所述的姚氏混淆电路估

Matrix_element的博客 6207
上一篇: 隐私计算+AI工程技术实践指南--整体介绍
下一篇: 一文看懂:如何从源头防止数据隐私泄露
PlatON技术团队
PlatON技术团队 企业官方账号 企业官方账号
博客等级 码龄6年 326粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值