model-deployment: sync from overleaf (#422)

Co-authored-by: hangangqiang <hangangqiang2@huawei.com>
Co-authored-by: Tanzhipeng <Rudysheeppig@users.noreply.github.com>
Co-authored-by: Jiarong Han <jiaronghan@outlook.com>
This commit is contained in:
hangangqiang
2023-03-24 17:53:45 +08:00
committed by GitHub
parent fb9f14f6f7
commit fcdd97397b
7 changed files with 77 additions and 70 deletions

View File

@@ -2,7 +2,7 @@
AI服务提供商在本地完成模型训练和调优后将模型部署到第三方外包平台上如终端设备、边缘设备和云服务器来提供推理服务。由于AI模型的设计和训练需要投入大量时间、数据和算力如何保护模型的知识产权包括模型结构和参数等信息防止模型在部署过程中的传输、存储以及运行环节被窃取已经成为服务/模型提供商最为关心的问题之一。
### 概述
模型的安全保护可以分为静态保护和动态保护两个方面。静态保护指的是模型在传输和存储时的保护目前业界普遍采用的是基于文件加密的模型保护方案AI模型文件以密文形态传输和存储执行推理前在内存中解密。在整个推理过程中模型在内存中始终是明文的存在被敌手从内存中转储的风险。动态保护指的是模型在运行时的保护目前业界已有的模型运行时保护方案主要有以下三个技术路线一是基于TEETrusted execution environment的模型保护方案TEE通常指的是通过可信硬件隔离出来的一个“安全区”AI模型文件在非安全区加密存储和传输在安全区中解密运行。该方案在CPU上的推理时延较小但依赖特定可信硬件有一定的部署难度。此外受硬件资源约束难以保护大规模深度模型且目前仍无法有效支持异构硬件加速。二是基于密态计算的保护方案该方案基于密码学方法如同态加密、多方安全计算等保证模型在传输、存储和运行过程中始终保持密文状态。该方案不依赖特定硬件但面临非常大的计算或通信开销问题且无法保护模型结构信息。三是基于混淆的模型保护方案该方案主要通过对模型的计算逻辑进行加扰使得敌手即使能获取到模型也无法理解。与前两种技术路线相比该方案仅带来较小的性能开销且精度损失很低同时不依赖特定硬件可支持大模型的保护。下面将重点介绍基于混淆的模型保护技术。
模型的安全保护可以分为静态保护和动态保护两个方面。静态保护指的是模型在传输和存储时的保护目前业界普遍采用的是基于文件加密的模型保护方案AI模型文件以密文形态传输和存储执行推理前在内存中解密。在整个推理过程中模型在内存中始终是明文的存在被敌手从内存中转储的风险。动态保护指的是模型在运行时的保护目前业界已有的模型运行时保护方案主要有以下三个技术路线一是基于TEETrusted Execution Environment的模型保护方案TEE通常指的是通过可信硬件隔离出来的一个“安全区”AI模型文件在非安全区加密存储和传输在安全区中解密运行。该方案在CPU上的推理时延较小但依赖特定可信硬件有一定的部署难度。此外受硬件资源约束难以保护大规模深度模型且目前仍无法有效支持异构硬件加速。二是基于密态计算的保护方案该方案基于密码学方法如同态加密、多方安全计算等保证模型在传输、存储和运行过程中始终保持密文状态。该方案不依赖特定硬件但面临非常大的计算或通信开销问题且无法保护模型结构信息。三是基于混淆的模型保护方案该方案主要通过对模型的计算逻辑进行加扰使得敌手即使能获取到模型也无法理解。与前两种技术路线相比该方案仅带来较小的性能开销且精度损失很低同时不依赖特定硬件可支持大模型的保护。下面将重点介绍基于混淆的模型保护技术。
### 模型混淆
模型混淆技术可以自动混淆明文AI模型的计算逻辑使得攻击者即使在传输和存储时获取到模型也无法理解且支持模型混淆态执行保证模型运行时的机密性。同时不影响模型原本的推理结果、仅带来较小的推理性能开销。模型混淆技术主要包含以下几个步骤
@@ -21,9 +21,11 @@ AI服务提供商在本地完成模型训练和调优后将模型部署到第
通过图压缩和图增广等技术,对计算图中节点与节点之间的依赖关系进行加扰,达到隐藏模型真实计算逻辑的效果。其中,图压缩通过整图检查来匹配原网络中的关键子图结构,这些子图会压缩并替换为单个新的计算节点。对于压缩后的计算图,图增广通过在网络结构中加入新的输入/输出边,进一步隐藏节点间的真实依赖关系。新增的输入/输出边可以来自/指向图中现已有的节点,也可以来自/指向本步骤新增的混淆节点。
> 加扰是指在计算图中添加扰动,来达到模型混淆的目的,常用的加扰手段有添加冗余的节点和边、融合部分子图等等。
(3) 对计算图的节点匿名化
遍历步骤(2)处理后的计算图,筛选出需要保护的节点。对于图中的每个需要保护的节点,将节点标识、节点算子类型以及其能够描述节点计算逻辑的属性替换为无语义信息的符号。对于节点标识匿名化,本步骤保证匿名化后的节点标识仍然是唯一的,以区分不同的节点。对于算子类型匿名化,为了避免大规模计算图匿名化导致的算子类型爆炸问题,可以将计算图中算子类型相同的节点划分为若干不相交的集合,同一个集合中节点的算子类型替换为相同的匿名符号。步骤(5)将保证节点匿名化后,模型仍然是可被识别和执行的。
遍历步骤(2)处理后的计算图,筛选出需要保护的节点。对于图中的每个需要保护的节点,将节点标识、节点算子类型以及其能够描述节点计算逻辑的属性替换为无语义信息的符号。对于节点标识匿名化,本步骤保证匿名化后的节点标识仍然是唯一的,以区分不同的节点。对于算子类型匿名化,为了避免大规模计算图匿名化导致的算子类型爆炸问题,可以将计算图中算子类型相同的节点划分为若干不相交的集合,同一个集合中节点的算子类型替换为相同的匿名符号。步骤(5)将保证节点匿名化后,模型仍然是可被识别和执行的。
(4) 对计算图的参数权重加扰