论文解析——Full Stack Optimization of Transformer Inference: a Survey

作者及发刊详情

摘要

正文

主要工作贡献

这篇文章的贡献主要有两部分:

  1. 分析Transformer的特征,调查高效transformer推理的方法
  2. 通过应用方法学展现一个DNN加速器生成器Gemmini的case研究

1)分析和解析Transformer架构的运行时特性和瓶颈

2)Transformer推理的硬件架构

3)对特定Transformer架构的优化策略,比如剪枝和量化

4)Transformer架构下操作的映射和调度,以及相关挑战

5)通过自动化的神经架构搜索过程,设计和调整transformer架构,使其硬件更加高效

Transformer模型架构和性能瓶颈

transformer的基本架构

Transformer架构包含两个模块:MHA和FFN
在这里插入图片描述Transformer架构的参数如下:
在这里插入图片描述

对Transformer架构的输入序列包含l个token,每个值都由一个d维度的向量表示,构成了 d ∗ l d*l dl的矩阵。token可以是一个词或一个句子片段。

MHA的计算特征

MHA有三种不同的权重 W Q W_Q WQ W K W_K WK W V W_V WV,具体执行流如图1所示,这些权重将会产生三种不同的激活,每种激活会被分成h个块(chunk,有隐藏维度d/h),因此这些块都被分成了h个不同的注意力头。q块和k块沿着隐藏层相乘,生成 l ∗ l l*l ll 大小的激活矩阵,这些激活矩阵经过softmax操作,与v块相乘,得到attention头的激活,然后h个head组合生成结果 W o u t W_{out} Wout。每阶段的计算结果如Table2所示。最终线性层的输出经过残差链接和层归一化生成MHA模块的输出。

MHA总共有6个线性操作,其中4个是权重到激活的矩阵乘( W Q W_Q WQ W K W_K WK W V W_V WV W o u t W_{out} Wout),另外两个是激活到激活的矩阵乘( q u e r y ∗ k e y query*key querykey a t t e n t i o n . s c o r e ∗ v a l u e attention.score*value attention.scorevalue),本文将前者称为投影(projection),后者称为激活到激活矩阵乘。

FFN包含两个线性层操作, d F F N d_FFN dFFN通常是 d d d的四倍,在两个线性层间有一个非线性层。

在这里插入图片描述

非线性操作的特征

非线性操作,包括Softmax, LayerNorm, 和 GELU需要片外计算的支持,虽然全部操作中占据了较小部分,但比矩阵乘更具挑战,如果处理不当将会产生额外的开销。

在有效利用临时内存和高效计算方面提出了挑战

需要在运行时传递所有的输入值,这些值都会保存在临时存储中。
比如softmax操作包括求指数操作、跨序列长维度的求和、每个指数向除以求和结果的归一化操作,需要解决指数溢出问题。
计算LayerNorm函数还需要跨隐藏维度多次传递整个输入值,先计算平均值,再计算标准差,然后再使用层归一化

encoder和decoder架构

encoder可以并行处理输入序列
encoder-only适合用于自然语言理解任务(sentiment analysis、sentence similarity analysis)
decoder一次只能推理出一个token,适合用于生成式任务
在这里插入图片描述

产生token的共同优化方法:在后续的迭代中,缓存和复用之前生成的token中间的K和V值

生成的token后继续传入到decoder的输入,复用可以节省计算时间。

模型的算力密度

矩阵乘在encoder-only和decoder-only中消耗了99%的FLOPS。
在这里插入图片描述在这里插入图片描述

模型优化

硬件设计

参考文献

这是一篇关于Transformer推理的全栈技术综述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java进阶----继承

继承 一.继承概述 继承是可以通过定义新的类,在已有类的基础上扩展属性和功能的一种技术. 案例:优化 猫、狗JavaBean类的设计 狗类:Dog 属性:名字 name,年龄 age 方法:看家 watchHome(),Gett…

防火墙基础及登录(华为)

目录 防火墙概述防火墙发展进程包过滤防火墙代理防火墙状态检测防火墙UTM下一代防火墙(NGFW) 防火墙分类按物理特性划分软件防火墙硬件防火墙 按性能划分百兆级别和千兆级别 按防火墙结构划分单一主机防火墙路由集成式防火墙分布式防火墙 华为防火墙利用…

命令行运行git reflog(reference log)报错的解决办法

文章目录 1. 检查 Git 是否已安装2. 检查 PATH 环境变量3. 重新安装 Git 在Git中, reflog的英文全称是 “ reference log”。意思是 引用日志(参考日志)。它记录了本地仓库中HEAD和分支引用所指向的提交的变更历史。这包括了你所有的提交&…

推荐3款免费电脑工具

Tools-Web Tools-Web是一个在线工具箱,提供丰富的工具和功能,适用于日常工作和学习。根据用户评价,Tools-Web的工具种类丰富且操作简单,是日常工作和学习的好帮手。该工具箱涵盖了开发运维、文本处理、图片处理、图表处理、随机工…

收银系统源码-收银台副屏广告

1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…

2通道音频ADC解码芯片ES7243L、ES7243E、ES7243,用于低成本实现模拟麦克风转换为IIS数字话筒

前言: 音频解码芯片某创参考价格: ES7243L 500:¥1.36 / 个 ES7243E 500:¥1.66 / 个 ES7243 500: ¥1.91 / 个 其中ES7243L工作电压为1.8V,与其他两款的3.3V工作电压不同&…

九科bit-Worker RPA 内容学习

简介: 什么是RPA? RPA(Robotic Process Automation,机器人流程自动化)本质上是一种“AI数字员工”,针对企业中存在的大批量、重复性、机械化人工操作,通过模拟人的工作流程使之实现自动化。 b…

Redhat 安装 docker 网络连接超时问题

目录 添加阿里云的Docker CE仓库 更新YUM缓存 安装 Docker Engine 启动并设置Docker自启动 验证 Docker 安装 [userlocalhost ~]$ sudo yum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo 正在更新 Subscription Management 软件仓库…

c++之命名空间详解(namespace)

引例 在学习之前我们首先了来看这样一个情形: 在c语言下,我们写了两个头文件:链表和顺序表的。我们会定义一个type(typedef int type)方便改变数据类型(比如将int改成char),来做到整体代换。 但是我们两个头文件里面…

运维锅总详解系统设计原则

本文对CAP、BASE、ACID、SOLID 原则、12-Factor 应用方法论等12种系统设计原则进行分析举例,希望对您在进行系统设计、理解系统运行背后遵循的原理有所帮助! 一、CAP、BASE、ACID简介 以下是 ACID、CAP 和 BASE 系统设计原则的详细说明及其应用举例&am…

98.验证二叉搜索树——二叉树专题复习

递归: class Solution {// 判断二叉搜索树是否有效public boolean isValidBST(TreeNode root) {// 递归地检查以 root 为根的子树是否满足 BST 的性质// 同时定义一个范围 [Long.MIN_VALUE, Long.MAX_VALUE] 来约束节点的值return isValidBST(root, Long.MIN_VALUE…

SpringBoot拦截器

目录 一、拦截器快速入门 (1)什么是拦截器 (2)拦截器的使用步骤 1、定义拦截器 🍀preHandle() 方法 🍀postHandle() 方法 🍀afterCompletion() 方法 2、注册配置拦截器 二、拦截器详解…

中国剩余定理

模板代码&#xff1a; #include<bits/stdc.h> using namespace std; using ll long long; #define fi first #define se second const ll mod998244353; const int N2e510; #define int llint n,m[300],r[300]; int exgcd(int a,int b,int &x,int &y){if(b0){x…

如何用Vue3和Plotly.js打造交互式仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中使用 Plotly.js 创建指示器卡片 应用场景介绍 指示器卡片是一种用于可视化数据并提供关键见解的交互式组件。它们通常用于仪表板、分析应用程序和监控系统。Plotly.js 是一个流行的 JavaScript 库&a…

Kotlin linkedMapOf filterKeys

Kotlin linkedMapOf filterKeys fun main(args: Array<String>) {val lhm linkedMapOf<String, Any>(Pair("name", "phil"), //因为key相同都为 name&#xff0c;被后面的覆盖。Pair("year", 2024),Pair("name", "f…

Face_recognition实现人脸识别

这里写自定义目录标题 欢迎使用Markdown编辑器一、安装人脸识别库face_recognition1.1 安装cmake1.2 安装dlib库1.3 安装face_recognition 二、3个常用的人脸识别案例2.1 识别并绘制人脸框2.2 提取并绘制人脸关键点2.3 人脸匹配及标注 欢迎使用Markdown编辑器 本文基于face_re…

无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages

ubuntu系统执行sudo apt update命令的时候&#xff0c;遇到如下问题&#xff1a; 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…

Oracle 19c 统一审计表清理

zabbix 收到SYSAUX表空间告警超过90%告警&#xff0c;最后面给出的清理方法只适合ORACLE 统一审计表的清理&#xff0c;传统审计表的清理SYS.AUD$不适合&#xff0c;请注意。 SQL> Col tablespace_name for a30 Col used_pct for a10 Set line 120 pages 120 select total.…

Vue 3 中集成 ECharts(附一些案例)

Vue 3 中集成 ECharts 的完全指南 引言 在现代Web开发中&#xff0c;Vue 3以其卓越的性能和灵活的Composition API赢得了广泛的关注。而ECharts&#xff0c;作为开源的一个使用JavaScript实现的强大可视化库&#xff0c;以其丰富的图表类型和高度可定制性成为了数据可视化的首…

EAI四个层次服务-系统架构师(二十六)

1、&#xff08;重点&#xff09;系统应用集成提供了4个不同层次服务&#xff0c;最上层服务是&#xff08;&#xff09;服务。 解析: EAI&#xff08;Enterprise Application Integration&#xff09;系统应用集成&#xff0c;相关概念。 实施EAI必须保证&#xff1a;应用程…