第 12 课:基于隐语的VisionTransformer框架
一、MPCViT Vision Transformer :安全且高效的 架构 MPC友好型
1.MPC下ViT隐私推理总体框架
(1).基于半诚实威胁模型的2PC的秘密分享方案
• 参与方诚实且好奇,均严格遵循既定的通信协议,但是在协议执行中仍然会学习尽可能多的信息
• 将秘密以适当的方式拆分,拆分后的每一个份额由不同参与方保存,单个参与者无法恢复秘密信息,只有若干个参与者协作才能恢复秘密消息
(2).Vision Transformer模型架构
• ViT基于Transformer的encoder架构,由输入embedding层、
Transformer块以及分类层组成。其中,每一个Transformer块包含
一个多头注意力层和MLP块,MLP块又包含两个线性层和一个GeLU
• 不同于CNN,ViT模型的主要通信瓶颈在于多头注意力机制,以及
MLP中的GeLU
2.MPCViT的三大研究动机
(1). ViT延迟分解及通信瓶颈
在SEMI-2K和Cheetah协议下的延迟分解
(2). 不是所有的注意力都同等重要
有工作[1]发现浅层注意力更不重要,也有工作[2]发现
第二个头比较重要,下图为工作[2]中的图
(3). 不同注意力机制变体对比
对比了不同注意力的准确率和延迟
- MPCViT的整体算法流程
- .设计合适的搜索空间(三种不同的粒度)
(2).MPC感知神经架构搜索(可微分搜索)
(3).基于延迟限 制的架构参数二值化(灵活适应)
(4).重训练异构 注意力ViT(借助知识蒸馏提升模型性能)
4.MPCViT具体算法
• 粗粒度:Transformer层级粒度
• 中粒度:注意力头级粒度
• 细粒度:注意力行级粒度(token级)
(1).自蒸馏技术
将原始Softmax注意力机制ViT作为教师模型,
无需引入任何额外训练和推理开销
(2).传统的基于logits的蒸馏
也称为软标签蒸馏
(3).基于特征的token蒸馏
更加细粒度蒸馏,本文取最后一层特征蒸馏
二、搭建基于SecretFlow的Vision Transformer框架
1.基于SecretFlow搭建ViT框架
(1).SecretFlow Secure
Processing Unit (SPU)
(2).隐私推理协议及通信参数配置
通信协议、通信带宽、传输延迟
(3).基于Jax的ViT模型搭建
Embedding、Attention、MLP
(4).ViT模型隐私推理
SPU环境、密态运算
2.SecretFlow Secure Processing Unit (SPU)
(1).前端:High-level的模型编写
(2).编译器:针对MPC设计的优化
(3).Runtime:映射到底层MPC协议
3.隐私推理协议及模拟网络参数配置
隐私推理协议及节点配置
模拟网络参数配置throttle.sh
• WAN:局域网
• LAN:广域网
4.基于Jax的ViT模型搭建
(1).图像Patch Embedding搭建
(2).用kernel size等于patch size的卷积实现patch embedding
(3).注意力机制搭建
(4).MLP模块搭建
• 通常在较小的架构上,ViT的mlp_ratio取2
• GeLU的维度很大,是embedding dim的mlp_ratio倍
(5).Transformer模块搭建
5.ViT模型隐私推理
(1).ViT Benchmark文件
初始化SPU环境
设置输入变量维度
创建对象(某个运算/注意力层/Transformer块)
指定设备及函数
重复执行多次:
加密输入,在密文环境计算函数,输出
(2).ViT隐私推理操作流程
[1]. 配置Python环境及安装SPU,并激活Python环境
[2]. 配置并模拟通信网络环境(以WAN设置为例)
• bash ./throttle.sh del
• bash ./throttle.sh wan
[3]. 模拟MPC环境及协议
• python -m spu.binding.util.distributed -c semi2k_spdz_2pc.json up
[4]. 执行隐私推理
• 以一个4-head单个注意力层(emb=256)的隐私推理为例
三、MPCViT主要实验结果
1.主要实验结果——与近年来相关工作的对比
- .实验特色:
[1]. 丰富的baseline模型
Linformer (FaceBook 2020), THE-X (ACL 2021),
MPCFormer (ICLR 2023)
[2]. 三种不同的数据集
CIFAR-10, CIFAR-100, Tiny-ImageNet
(2)..主要结论:在Tiny-ImageNet数据集上,和基线ViT、MPCFormer、THE-X相比,MPCViT降低了6.2×、2.9×和1.9×延迟,并且提高了1.9%、1.3%和3.6%的准确率。
2.消融实验——知识蒸馏
(1).主要结论:
[1].与仅使用交叉熵损失函数相比,基于logits和基于特征的知识蒸馏都显著提高了ViT的性能;
[2].结合两种知识蒸馏损失函数进一步提高了准确率,特别是在一个更大的数据集上。
以上结果表明了知识蒸馏对于ViT训练重要性以及训练损失函数中三部分的不可或缺。
3.神经架构搜索的一致性和扩展性
(1).注意力头的架构参数可视化
(2).ViT层级推理延迟和通信可视化
[1].主要结论:
• 在不同的λ、不同的数据集、不同的注意力头数量的设置下,搜索结构都表现出一致性;
• 架构参数可视化与层级可视化一致,中间靠前的注意力更倾向于保留
四、课程总结
1.首先介绍了MPCViT的总体框架、研究动机、算法流程
2.该工作借助SecretFlow-SPU搭建ViT框架,并测试不同模型架构的推理效率
3.介绍了SecretFlow-SPU的特点和功能,并展开讲解了基于SecretFlow和Jax的ViT框架搭建流程
4.最后,呈现了该工作的主要实验结果,效果均优于基线模型
VisionTransformer是一种基于Transformer模型的视觉处理框架,它利用自注意力机制来建模输入图像的全局上下文。然而,VisionTransformer模型在处理图像时可能会忽略一些重要的细节信息,尤其是在处理密集的场景或具有大量小尺寸物体的图像时。
为了解决这个问题,基于隐语的VisionTransformer框架引入了隐语编码器,它可以更好地捕捉图像中的局部细节信息。隐语编码器是一个额外的编码器模块,它以多尺度的方式对输入图像进行编码,并在多个层次上提供语义信息。
具体而言,基于隐语的VisionTransformer框架包括以下步骤:
-
输入图像被传递给VisionTransformer编码器,该编码器将图像分割成多个小块,并对每个小块进行编码。这些小块的编码结果被送入Transformer编码器中。
-
在Transformer编码器中,自注意力机制被用来建模每个小块与其他小块之间的上下文关系。这样,全局的上下文信息可以被获取。
-
隐语编码器接受原始图像作为输入,并对其进行多尺度编码。这个编码器可以通过卷积神经网络或其他特征提取器来实现。
-
隐语编码器的输出被整合到Transformer编码器中,以提供更丰富的局部视觉信息。这可以通过将隐语编码器的输出与Transformer编码器的输入连接起来来实现。
-
使用整合了局部细节信息的Transformer编码器进行后续的任务,如图像分类、目标检测或图像生成。
基于隐语的VisionTransformer框架可以帮助提高VisionTransformer模型在处理图像时的性能,尤其是在需要捕捉细节信息的场景下。通过引入隐语编码器,该框架能够更好地处理密集的场景、小尺寸物体或其他具有细节特征的图像。