第 12 课:基于隐语的VisionTransformer框架

news2024/10/5 14:29:06

基于之前MPC的基础知识,本讲主要内容是MPCViT基于SecretFlow的VisionTransformer框架,主要从神经网络架构,隐私推理框架和实验结果三方面介绍。

 一、MPCViT:安全且高效的MPC友好型 Vision Transformer架构

        MPCViT隐私推理总体框架中,其底层协议是基于半诚实威胁模型的 2PC的秘密分享方案,简单来说即服务器和客户端相互不能泄漏自己的信息,最终要得到神经网络正确的推理结果。在上层模型方面,VisionTransformer是一种基于Transformer编码器的视觉模型,包含了embedding层,注意力层,非线性GeLU函数等多个不同模块,总体目标是在保护数据和模型隐私的前提下,以更高的推理效率得到最终图像分类的结果。

        MPCViT的三大研究动机:ViT延迟分解(ViT在MPC中推理的延迟进行分解分析,发现在SEMI-2K和Cheetah两种协议下,注意力机制中的SoftMax以及MLP中的GeLU函数都占据了绝大部份的延迟)及通信瓶颈、不同注意力机制变体对比,对比了不同注意力的准确率和延迟(进一步分解注意力机制,可以发现求最大值、求倒数、求指数等运算都造成了一部分延迟,能否尽可能去除ViT中这样一些耗时的操作,提高隐私推理的效率,降低推理的延迟)、不是所有的注意力都同等重要(发现一些注意力机制具有很高的效率,另一些具有很好的性能,一个很自然的想法是能否去合理地融合两种不同的注意力机制,使得在隐私推理时同时具有高效性和高准确率)。

        MPCViT的整体算法流程(主要用于解决如何权衡模型准确率和推理延迟,以及融合高准确率注意力机制和低延迟注意力机制)可以分为四步:

                1、设计合适的搜索空间(三种不同的粒度)

                        分为粗粒度:Transformer层级粒度,中粒度:注意力头级粒度,细粒度:注意力行级粒度(token级)

                2、MPC感知神经架构搜索(可微分搜索)

                        对于架构搜素算法,给每个注意力都分配架构参数\alpha,在搜索过程中,自动决定应该保留哪个注意力,这种搜索算法是可微分的,搜索效率比较高,只需要通过给损失函数添加正则项即可实现。

                3、基于延迟限制的架构参数二值化(灵活适应)

                        在神经架构搜索完成之后,可以根据具体延迟的需求和限制,通过对\alpha进行排序,将具有较大\alpha注意力机制,设置成高准确率类型,对于较小的\alpha,设置成低延迟类型。

                4、重训练异构注意力ViT(借助知识蒸馏提升模型性能)

                        直接训练搜索后的异构注意力机制ViT会导致显著的准确率下降,如何有效提高异构注意力了机制ViT的准确率?可以采用多粒度自蒸馏方式,让异构ViT去学习到原始Softmax ViT的软标签,以及最后一层的特征,这种粗细粒度的蒸馏能够很大程度的帮助ViT架构的学习。

二、搭建基于SecretFlow的Vision Transformer框架

        分为以下四部分:

                1、SecretFlow Secure Processing Unit (SPU)

                        前文已经多次介绍。

                2、隐私推理协议及通信参数配置

                        隐私推理协议及节点配置,模拟网络参数配置throttle.sh,包括广域网和局域网。

                3、基于Jax的ViT模型搭建

                        采用Jax语言,其语法与Pytorch有相似之处。具体包括图像Patch Embedding搭建,注意力机制搭建,MLP模块搭建和Transformer模块搭建。

                4、ViT模型隐私推理

                        ViT Benchmark文件,包括初始化SPU环境,设置输入变量维度,模型实例化,以及密文推理过程。

                        ViT隐私推理操作流程,包括配置Python环境及安装SPU,配置并模拟通信网络环境,模拟MPC环境及协议,以及执行隐私推理。

三、MPCViT主要实验结果

        和近年的SOTA模型相比,MPCViT在不同的数据集上,不同的架构上, 都显著的降低了延迟,并且具有更高的准确率。

        在消融实验中可以看到,两种粒度的知识蒸馏对于异构ViT模型的训练都是至关重要的。        

        在搜索算法方面,在不同模型的架构上,在不同的超参数情况下,都有很好的一致性,同时可以扩展到不同规模的架构以及数据集上,具有很好的扩展性。

四、总结

        首先介绍了ViT在MPC环境下进行隐私推理的总体框架、研究动机以及算法流程。

        MPCViT借助蚂蚁的SecretFlow-SPU去搭建ViT隐私推理框架,并测试了不同模型架构的推理效率。

        介绍了SecretFlow-SPU的特点和功能,并展开讲解了基于SecretFlow和Jax的ViT框架搭建流程

        最后,呈现了该工作的主要实验结果,效果均优于基线模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode 274】H指数

1. 题目 2. 分析 这题没啥难度,需要熟练运用Python API。 sort(reverseTrue)可以用于排序List,并且倒序排序。 3. 代码 class Solution:def hIndex(self, citations: List[int]) -> int:citations.sort(reverseTrue)res 0for idx,cite in enume…

vue3-登录小案例(借助ElementPlus+axios)

1.创建一个vue3的项目。 npm create vuelatest 2.引入Elementplus组件库 链接:安装 | Element Plus npm install element-plus --save 在main.js中引入 import ElementPlus from "element-plus";import "element-plus/dist/index.css";ap…

【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5

下载源代码 git clone --depth1 https://dgithub.xyz/gwaldron/osgearth -b osgearth-3.5 下载子模块 git submodule update --init 如果下载不过来,就手动修改下.git/config文件,将子模块的地址替换成加速地址 (base) yeqiangyeqiang-Default-string…

Puppeteer实战指南:自动化抓取网页中的图片资源

1. Puppeteer 简介 Puppeteer是Google Chrome团队开发的一个Node库,它提供了一个高级API来控制Chrome或Chromium浏览器。Puppeteer可以进行网页自动化操作,包括导航、屏幕截图、生成PDF、捕获网络活动等。 2. 环境搭建 在开始之前,确保你的…

Java中Stream的特性

Stream新特性 被称之为Stream流,用于操作集合或者数组中的数据 优势:Stream流大量的结合了Lambda的语法风格,代码更简洁,可读性更好 使用步骤 先获取数据源,获取Stream流 Collect…

Java常用API基础语法(附带思维导图)

常见的API基本语法 String常用的操作方法 toCharArray equals() equalsIgonreCase substring(0,5) 从0-5的下标开始截取 substring(5) 从下标为5开始往后截取 replace …

来自工业界的知识库 RAG 服务(五),模块化知识库 GoMate 实现方案详解

背景介绍 很早以前就看过一篇介绍 RAG 的综述性文章 Retrieval-Augmented Generation for Large Language Models: A Survey, 其中介绍了 RAG 的模块化架构: 但是一直没有看到对应的实现方案,以前也没有理解此框架的优势之处。随着在相关领域的持续实…

网约车停运损失费:2、协商过程

目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…

如何提升投资伦敦金的分析能力:回测

对伦敦金行情的分析能力,在我们做伦敦金交易的整个体系中是有很重要的作用的。但要提升对伦敦金行情的分析和把握是不太容易的,那有没有方法可以提升?那答案是有的,下面我们就来讨论一下,这个方法就是回测。 回测就是把…

深度学习方法在谣言检测中的研究现状

摘要 管理社交媒体上的谣言,减少谣言对社会的危害。许多研究使用深度学习方法来检测开放网络中的谣言。为了从多个角度全面梳理谣言检测的研究现状,本文从特征选择、模型结构和研究方法三个角度分析了这一高度集中的工作。从特征选择的角度,将…

4.整合第三方技术【整合JUnit】

目录 1.创建项目: 2.导入测试对应的starter 3.添加测试对象 3.1 添加Prodcut接口文件 3.2 添加ProdcutImpl文件 3.3 测试类添加测试文件,并开始测试 4.测试类文件解析 4.1.测试类使用SpringBootTest修饰 4.2使用自动装配的形式添加要测试的对象 1.…

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…

go中的方法 func-----数据类型

本文是java学习者学go种产生的容易记混点的笔记,所以有其他编译语言的基础更好 go的方法有点像js 基础 func main() {fmt.Println("Starting")var p *string new(string)*p "hello world"demo : "demo"fmt.Println(*&demo) //这样既然也…

服务器部署与DDOS攻防

知识点:DHPC与Web服务部署,DHCPig攻防,SYN Flooding测试 DHCP: 能够自动为客户机获取IP等参数 DHCP是动态主机配置协议(Dynamic Host Configuration Protocol)的缩写,它是一种网络管理协议&am…

华三交换机的软件版本升级操作

升级操作很常见,掌握方法是关键 实验环境:1台华三S6520-EI交换机,版本从2432P03升级成2432P05。 整体思路: 1.先查验软件版本 2.官网下载对于设备型号的软件版本 3.配置交换机地址使得与电脑进行通信,使用TFTP/FTP工…

UFS协议—新手快速入门(五)【11-13】

目录 十一、逻辑单元(Logical Unit, LU) 1、概念 2、UFS逻辑单元的独立特性 3、Well known LU (1)Boot Logical Units(BOOT LUs) (2)RPMB(Replay Protected Memory…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

ElasticSearch8.X查询DSL语法案例进阶实战

什么是Query DSL Query DSL主要由两部分组成&#xff1a;查询和过滤。 查询部分&#xff1a;用于指定搜索条件和匹配规则。例如&#xff0c;可以使用match查询进行全文检索&#xff0c;term查询进行精确匹配&#xff0c;range查询进行范围匹配等。过滤部分&#xff1a;用于对查…

【八股系列】探索响应式布局的奥秘:关键技术与实战代码示例

&#x1f389; 博客主页&#xff1a;【剑九 六千里-CSDN博客】 &#x1f3a8; 上一篇文章&#xff1a;【为什么组件中的 data 必须是一个函数&#xff0c;然后 return 一个对象&#xff0c;而 new Vue 实例里&#xff0c;data 可以直接是一个对象&#xff1f;】 &#x1f3a0; …

【python】eval函数

1.eval函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;eval(expression) 参数说明&#xff1a; expression&#xff1a;必须为字符串表达式&#xff0c;可为算法&#xff0c;也可为input函数等。 说明&#xff1a;表达式必需是字符串&#xff0c;否则会报错&a…