基于Transformer架构的大模型推理硬件加速器设计

概述

当前大模型的基础架构正在向 Transformer 结构收敛1,Transformer架构自谷歌2017年提出后比较稳定,因此针对Transformer的计算设计专用的ASIC加速器很有必要。

尤其是“Attention is All you Need”==》“Money is All you Need”,哈哈哈。。。

推理加速、推理硬件加速的研究范畴

推理加速是指通过网络结构优化、模型剪枝、量化等手段加快模型收敛,减小模型推理时间

硬件推理加速指通过对模型网络及计算定制化设计硬件电路,从而加速模型计算过程;但由于原始网络规模较大,精度较高,直接设计电路需要的晶体管规模和芯片面积较大,因此需要对模型进行压缩,在精度不丢失的前提下高效地设计硬件电路。

二者虽然都是加速模型的推理过程,但研究重心不一样,前者关注模型全局计算过程的减少,后者关注模型局部计算过程的加速。

专用加速ASIC

范益波@知乎:Vision Transformer低功耗硬件加速器

Sohu

2024年,6 月 26 日,美国新兴的芯片创业公司 Etched 发布其首款 AI 芯片——Sohu,该芯片只能运行Transformer模型。
Etched官网
Etched官网:创始团队宣言
澎湃新闻报道

Transformer架构的计算特征

TransFormer的权重数据分为4类,包括:多头注意力输入线性层权重(Q, K, V)、多头注意力输出线性层权重(O)、前馈神经网络第1层线性层权重(FFN1)和第2层线性层权重(FFN2)。

在这里插入图片描述

计算行为

输入位置编码向量与词嵌入相加

矩阵的加法操作,矩阵元素是浮点数。

自注力矩阵的计算

Q K T QK^T QKT的矩阵乘计算, d k \sqrt{d_k} dk 的根号运算,以及两个结果相除计算
再将结果进行softmax函数计算,包括乘法、求和、除法运算。

softmax操作

s o f t m a x ( Q K T d k ) softmax(\frac{QK^T}{\sqrt{d_{k}}}) softmax(dk QKT)

指数操作可能导致数值溢出问题

maximum subtraction trick[^5]可以把
在这里插入图片描述
转变为:
在这里插入图片描述
其中 x m a x x_{max} xmax x j x_j xj中的最大值

multi-Head Attention的conact和linear操作

残差求和操作

层归一化

平均数求和和除法操作
求方差操作
归一化处理(求差、除法等)

FFN的两级线性乘加运算

总体特征

矩阵乘占据着大部分的计算时间

如下图所示是LLama7B模型,batch_size=1,输入长度为128场景下各transformer操作在GPU上的耗时结果。
在这里插入图片描述

MHA具有较强的并行计算能力

大量的缓存以及访存操作

大模型的权重数据多,计算过程中产生大量的中间数据,许多非线性函数的计算数据间存在调用依赖,这些操作都需要硬件大量的缓存数据,因此LLM运算硬件需要延迟小、容量大的存储器件。
例如GPU平台的计算过程,将权重数据从显存(HBM)加载至on-chip的SRAM中,然后由SM读取并进行计算。计算结果再通过SRAM返回给显存。

序列长度增加会导致自注意力计算的占比增加

图片来源于文章2
在这里插入图片描述

模型压缩与优化

由于芯片面积和成本的限制,现阶段的大模型很难在一颗ASIC上部署,因此需要对模型进行压缩。
除了通用的模型量化和剪枝方法,对Transformer架构的模型有专用的优化方法。

网络剪枝

移除网络中权重接近零的连接剪掉,是网络稀疏化的一种手段。

数据量化

数据量化通过将高精度的
人工智能和机器学习入门

将数据精度从浮点型变成int,例如I-bert[6],这是一个int版本的BERT,文章[7]又基于I-bert做了专用硬件上的适配(3.4章节)。
GitHub: kssteven418 / I-BERT

张量拆分

算子融合

将必要的算子操作都融合在一起,灵活性低,但是性能更好,因为访存减少了。
例如将multi-head attention中的线性运算和非线性运算融合在一起。

硬件架构设计

稀疏注意力

稀疏注意力即让模型阈值低关联度的输入组合,并跳过注意力计算。该方法可以有效优化 O ( n 2 ) O(n^2) O(n2)的注意力算子,优化极长序列时的性能表现。
具体包括将计算中对最终结果影响不重要的数据查找,并近似为0,从而减少整体计算量。

  1. A3
    论文解析——A3: Accelerating Attention Mechanisms in Neural Networks with Approximation

  2. ELSA(ISCA’21)

  3. Sanger(MICRO’21)

  4. DOTA(ASPLOS’22)
    将输入采用低秩分解,通过低秩的近似完成系数法处理器

  5. 近似计算乘法器(ISSCC’22)

【论文解析】A 28nm 27.5TOPS/W Approximate-Computing-Based Transformer Processor with Asymptotic Sparsity…

  1. SpAtten(HPCA’21)

流水化的全Attention计算硬件加速

将加速器实现加速颗粒度不仅仅局限于矩阵运算、或其他非线性运算,将attention完整的计算通过流水化的方式实现。

临时存储硬件设计优化

对于专用加速器设计,通常会把权重、KV cache、Q、K、V矩阵等原数据的值存储到临时存储中,此时该存储的设计带宽、延迟等指标影响了整体计算的性能。

双缓冲可以使访存操作和计算执行操作重叠执行

乒乓策略等

参考文献


  1. AI云原生智能算力架构: AI智算及算力全产业链研究报告 2024 ↩︎

  2. DOTA: Detect and Omit Weak Attentions for Scalable Transformer Acceleration ↩︎

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

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

相关文章

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

使用vueuse在组件内复用模板

1. 安装vueusae pnpm i vueuse/core2. 组件内复用模板 createReusableTemplate 是vueuse中的一个实用工具,用于在 Vue 3 中创建可重复使用的模板片段,同时保持状态的独立性。这对于需要在多个组件中重复使用相同的结构和逻辑时非常有用。 因为这些可复…

链表OJ题——使用栈实现单链表的逆序打印

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 题目描述&#xff1a;使用栈&#xff0c;实现单链表的逆序打印 二、解题思路 三、解题代码 /*** 非递归实现单链表的顶逆序打印——>通过栈来实现* param*/public void printReverseListFromStack(){Stack<…

短视频SDK解决方案,原开发团队,一对一技术支持

美摄科技&#xff0c;作为行业领先的视频技术提供商&#xff0c;凭借深厚的技术积累和敏锐的市场洞察&#xff0c;隆重推出其短视频SDK解决方案&#xff0c;旨在为全球开发者及内容创作者搭建一座通往无限创意与高效生产的桥梁。 【一站式解决方案&#xff0c;赋能创意无界】 …

【js原型和原型链】

js原型和原型链 一、构造函数和原型对象中的this二、原型对象的constructor属性三、原型链四、关系图五、普通函数和函数对象 参考文章链接: link 一、构造函数和原型对象中的this 指向实例对象 // 定义构造函数function Star(name,age){this.name name;this.age age;conso…

前端面试题 webpack的工作流程

一、流程图 二、重要概念 1.entry入口&#xff1a; Webpack 从配置的入口点开始&#xff0c;分析应用程序的依赖关系 2.output出口&#xff1a; 定义了打包后的文件如何输出&#xff0c;包括文件名和输出路径。 3.loader加载器&#xff1a; Webpack 本身只能处理 JavaScr…

Bytebase 2.22.2 - 允许在工作空间为群组分配角色

&#x1f680; 新功能 允许在工作空间给群组分配角色。 支持禁用邮箱密码登录&#xff0c;仅允许 SSO 登录的设置项。 新增 Postgres SQL 审核规则&#xff1a;禁止在列上设置会变化的默认值。 &#x1f514; 重大变更 下线项目内的变更历史页面&#xff1b;所有变更历史仍可…

uboot环境变量擦除之烧录工具擦除flash mtd0分区

有时会uboot环境变量修改了没有生效,需要擦除整个mtd分区 Erasing at 0x100000 – 100% complete. &#xff08;1M&#xff09; uboot给flash的中分区

实体书商城小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;小说分类管理&#xff0c;小说信息管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;小说信息&#xff0c;小说资讯&#xff0…

IGE-LIO:充分利用强度信息克服激光退化场景下的定位精度

更多优质内容&#xff0c;请关注公众号&#xff1a;智驾机器人技术前线 1.论文信息 论文标题&#xff1a;IGE-LIO: Intensity Gradient Enhanced Tightly-Coupled LiDAR-Inertial Odometry 作者&#xff1a;Ziyu Chen, Hui Zhu, Biao Yu, Chunmao Jiang, Chen Hua, Xuhui Fu a…

图新说-调整标绘线面的压盖顺序的两种方法

0.序 图新说作为一个三维可视化汇报工具&#xff0c;在公安消防领域常用于做态势标绘&#xff0c;应急救援方案&#xff0c;安保预案等。 如果撤离路线&#xff0c;或者行进路线【线对象】经过了水源地、危险区等【面对象】。如何确保线对象显示在面对象的上面&#xff0c;不被…

Nginx的核心!!! 负载均衡、反向代理

目录 负载均衡 1.轮询 2.最少连接数 3.IP哈希 4.加权轮询 5.最少时间 6.一致性哈希 反向代理 测试 之前讲过Nginx 的简介和正则表达式&#xff0c;那些都是Nginx较为基础的操作&#xff0c;Nginx 最重要的最核心的功能&#xff0c;当属反向代理和负载均衡了。 负载均…

统一 transformer 与 diffusion !Meta 融合新方法剑指下一代多模态王者

本文引入了 Transfusion&#xff0c;这是一种可以在离散和连续数据上训练多模态模型的方法。 来源丨机器之心 一般来说&#xff0c;多模态生成模型需要能够感知、处理和生成离散元素&#xff08;如文本或代码&#xff09;和连续元素&#xff08;如图像、音频和视频数据&#xf…

【操作系统】实验:文件系统

目录 一、实验目的 二、实验要求 三、实验步骤 四、核心代码 五、记录与处理 六、思考 七、完整报告和成果文件提取链接 一、实验目的 1、掌握文件系统的基本结构和文件系统的管理方法 2、加深对两级文件目录认识和理解 3、对文件操作的系统命令实质内容和执行过程深入…

Python实现等距映射(ISOMAP)降维算法

目录 Python实现等距映射&#xff08;ISOMAP&#xff09;降维算法的博客引言ISOMAP算法原理ISOMAP的优势与局限Python实现ISOMAP算法1. 创建ISOMAP类2. 在瑞士卷数据集上应用ISOMAP3. 结果分析 总结运行结果 Python实现等距映射&#xff08;ISOMAP&#xff09;降维算法的博客 …

NS2582 同步升压双节锂电池充电管理 IC

1 特性  最大 2A 输出同步开关型升压充电器  升压效率可高达 90% 以上  内置电池短路 / 涓流 / 恒流 / 恒压模式  0.5% 电池恒压模式电压精度  支持 LED 充电状态指示  支持充电电流外部可调  支持输入适配器 DPM 功能  外置 EN 使能…

探索Python的Excel力量:openpyxl库的奥秘

文章目录 探索Python的Excel力量&#xff1a;openpyxl库的奥秘背景&#xff1a;为什么选择openpyxl&#xff1f;库简介&#xff1a;openpyxl是什么&#xff1f;安装指南&#xff1a;如何安装openpyxl&#xff1f;快速上手&#xff1a;五个基本函数实战演练&#xff1a;三个应用…

Adobe Dreamweaver(DW)网页代码编辑器win/mac软件安装下载

一、Adobe DW软件概览 1.1 DW软件简介 Adobe Dreamweaver&#xff08;简称DW&#xff09;是一款功能强大的网页代码编辑器&#xff0c;由Adobe公司开发并维护。其全称为“Adobe Dreamweaver”&#xff0c;中文译为“梦想编织者”。DW集网页制作和管理网站于一身&#xff0c;支…

Ubuntu系统使用Docker部署中文版trilium并实现远程编辑笔记

文章目录 前言1. 安装docker与docker-compose2. 启动容器运行镜像3. 本地访问测试4.安装内网穿透5. 创建公网地址6. 创建固定公网地址 前言 今天和大家分享一款在G站获得了26K的强大的开源在线协作笔记软件&#xff0c;Trilium Notes的中文版如何在Linux环境使用docker本地部署…

代码随想录第十九天 | 110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和,222. 完全二叉树的节点个数

110. 平衡二叉树 第一想法&#xff1a;首先要明确平衡二叉树的定义&#xff1f;左右节点的高度差不超过1&#xff1f;不会概念感觉无法下手... 返回参数返回int,为了标记已经不是平衡二叉树&#xff0c;用-1作标记 int traversal(TreeNode* root){if(rootnullptr) return 0;…