论文解析——FTRANS: Energy-Efficient Acceleration of Transformers using FPGA

作者及发刊详情

Li B , Pandey S , Fang H ,et al.FTRANS: energy-efficient acceleration of transformers using FPGA[J].ACM, 2020.DOI:10.1145/3370748.3406567.

摘要

正文

主要工作贡献

与CPU和GPU在执行Transformer和RoBERTa相比,提出的FTRANS框架获得了极低的成本和能耗。

先进的transformer架构的环块状矩阵压缩方法(block-circulant matrix, BCM)

处理了传统BCM压缩导致的精度损失,提出了先进的BCM压缩方法来减少transformer的权重

FPGA平台上transform的整体优化

在模型压缩的前提下,提出了一个两级优化方法,调度计算资源,优化延迟和吞吐率

降低硬件资源和能耗

提出了一个FPGA架构设计来支持模型压缩技术,开发了设计自动化和优化技术。

实验平台

选用模型: shallow Transformer和RoBERTa (base configuration)

  1. shallow Transformer
    架构包括encoder和decoder。
    使用WikiText-2任务进行评估,这是一个无监督的序列到序列的问题,需要解码器部分。
  2. RoBERTa
    基本配置,预训练的Transformer架构,只有encoder
    使用情绪分类任务划分,是一种监督学习,无需decoder

如图是两种模型的关键参数:
在这里插入图片描述

工具

实验评估

  • 减小了16倍的NLP模型的大小
  • 相比CPU设计,FPGA设计获得了27.07倍的性能提升和81倍的能效提升
  • GPU设计的功耗是FPGA设计的5.01倍,而FPGA在能效方面有8.8倍的提升
    在这里插入图片描述

Transformer的压缩

FPGA架构设计

主要思想

Transformer的参数超过了FPGA的BRAM容量(在模型压缩后的前提下),因此将模型划分为embedding层和encoder/decoder栈。
浅层神经网络(shallow network)可以直接在FPGA上实现,但是先进的设计比如BERT和RoBERTa中有很多decoder/encoder,此时FPGA中DSP资源是不够的,这种情况下有必要进行PE的复用

将embedding层卸载到片外

embedding层占据了30.89%的参数,本质上是一个将离散的token转换成连续空间的查找表,计算相对encoder/decoder栈较小,因此可以卸载embedding层到片外存储中,从而将计算最密集的权重部署在片上ram中

开发新模块缓解IO约束

本文开发了层间粗粒度流水线、层内细粒度流水线和计算调度。

FPGA架构组成

FPGA设计包含了Encoder/Decoder计算单元、片上存储bank、transformer控制器以及片外存储(DDR)。
在这里插入图片描述

Transformer控制器

Transformer控制器控制来自PCIe、BRAM和计算单元的输入的计算流和数据流

Encoder/Decoder计算单元

encoder和decoder有共同的操作,因此可以将其分成不同的计算原语,包括不同大小的矩阵乘,向量指数运算等,Transformer控制器可以通过将multi-head attention, linear, 和add/norm 模块组合构成encoder和decoder模块。

Multi-Head Attention单元

该鄙见包含了多个PE (Processing elements,来实现矩阵乘) bank、多个buffer、一个归一化模块、一个掩码功能模块和一个softmax模块。
输入数据从DDR输入进encoder流水线中,然后与BRAM中的Q、K相乘,中间数据结果传递到buffer中;接着执行归一化操作、softmax、后续的矩阵层操作。
每个head都已一个控制器来控制计算流和数据流,同时支持mask操作
在这里插入图片描述

PE设计和softmax计算单元

本文开发了三种不同的可配置PE:PE-A, PE-B,和 PE-FFT/IFFT.
对于BCM矩阵乘,采用PE-FFT/IFFT,其余采用PE-A, PE-B进行矩阵乘。

PE-A, PE-B包含2个累加器、除法器和指数运算单元来支持scaling和softmax操作,乘法的输出给除法器或者累加器,因此scaling和softmax可以和矩阵乘重叠执行。

PE-FFT/IFFT,如下图所示,包括了一个FFT/IFFT计算核、一个累加器、一个加法器。累加器是一个N输入(和FFT/IFFT计算核一样大)的加法树,FFT的实现参考Radix-2 Cooley Tukey算法[^6]

softmax,由于指数计算资源占用较大,因此采用分段线性函数来估计指数的输出。包括一个buffer保存 e x p ( x i ) exp(x_i) exp(xi),一个累加器计算 e x p ( x j ) exp(x_j) exp(xj)的和。
在这里插入图片描述

设计自动化最大化资源利用

参考文献

[6]: S Lennart Johnsson and Robert L Krawitz. 1992. Cooley-tukey fft on the connection machine. Parallel Computing, 18, 11, 1201–1221.

提出了一个FPGA设计,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ansible常见问题配置好了密码还是报错

| FAILED! > { “msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.” } 怎么解决&#xf…

[终端安全]-3 移动终端之硬件安全(TEE)

(参考资料:TrustZone for V8-A. pdf,来源ARM DEVELOPER官网) TEE(Trusted Execution Environment,可信执行环境)是用于执行敏感代码和处理敏感数据的独立安全区域;以ARM TrustZone为…

分布式技术栈、微服务架构 区分

1.分布式技术栈 这些技术栈都是为了更好的开发分布式架构的项目。 (大营销平台的系统框架如下图,扩展的分布式技术栈) (1)Dubbo——分布式技术栈 DubboNacos注册中心是应用可以分布式部署,并且提供RPC接…

HTML5使用<pre>标签:保留原始排版方式

在网页创作中,一般是通过各种标记对文字进行排版的。但是在实际应用中,往往需要一些特殊的排版效果,这样使用标记控制起来会比较麻烦。解决的方法就是保留文本格式的排版效果,如空格、制表符等。 如果要保留原始的文本排版效果&a…

redis并发、穿透、雪崩

Redis如何实现高并发 首先是单线程模型:redis采用单线程可以避免多线程下切换和竞争的开销,提高cpu的利用率,如果是多核cpu,可以部署多个redis实例。基于内存的数据存储:redis将数据存储在内存中,相比于硬…

回溯算法-以景点门票销售管理系统为例

1.回溯算法介绍 1.来源 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤: 1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。 2 、确定易于搜…

唤醒知识循环,共筑绿色阅读梦——探索旧书回收小程序的无限可能

在这个信息爆炸的时代,书籍作为知识与智慧的载体,其重要性不言而喻。然而,随着电子阅读的兴起和书籍更新换代的加速,大量旧书被束之高阁,甚至面临被遗弃的命运。这不仅是对宝贵文化资源的浪费,也是对环境保…

12 电商高并发缓存实战

序章 项目代码缓存的数据一致性 延时双删 淘汰缓存写数据库休眠1s,再次淘汰缓存缺点:如果mysql是主从复制,去从库中拿去数据,此时同步数据还未完成,拿到的数据是旧数据。 先更新 DB,后删除缓存 采用异步延时删除策略. ①利用消息队列进行删除的补偿。②Mysql 数据库更新操…

Android项目中,查看项目依赖树的多种方式

1.使用预设的Task来进行查看 1.1 命令行 查看某个模块的所有依赖树: gradlew [模块名称]:dependencies 例如:gradlew app:dependencies查看某个模块的某功能的依赖树: gradlew [模块名称]:dependencies --configuration [功能名称] 例如&…

华为路由器静态路由配置(eNSP模拟实验)

实验目标 如图下所示&#xff0c;让PC1ping通PC2 具体操作 配置PC设备ip 先配置PC1的ip、掩码、网关。PC2也做这样的配置 配置路由器ip 配置G0/0/0的ip信息 #进入系统 <Huawei>system-view #进入GigabitEthernet0/0/0接口 [Huawei]int G0/0/0 #设置接口的ip和掩码 […

排序 -- 万能测试oj

. - 力扣&#xff08;LeetCode&#xff09; 这道题我们可以使用我们学过的那些常见的排序方法来进行解答 //插入排序 void InsertSort(int* nums, int n) {for (int i 0; i < n-1; i){int end i;int tmp nums[end 1];while (end > 0){if (tmp < nums[end]){nums[…

阿里云ecs服务器,nginx多域名多项目部署教程,含本地部署教程

nginx多域名部署项目 本地部署线上部署一、本地部署 第一步:win+r 输入drivers 打开hosts文件,编辑 加行 127.0.0.1 自定义域名 … 第二步:下载 nginx 安装好以后 打开ngin安装目录,选择nginx.conf 打开 #user Administrator; worker_processes

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗&#xff0c;支持滑动消失&#xff0c; 滑动查看评论 效果如下图 思路 创建一个视图&#xff0c;该视图上面放置一个tableView, 该视图上添加一个滑动手势&#xff0c;同时设置代理&#xff0c;实现代理方法 (BOOL)gestur…

SLF4J的介绍与使用(有logback和log4j2的具体实现案例)

目录 1.日志门面的介绍 常见的日志门面 &#xff1a; 常见的日志实现&#xff1a; 日志门面和日志实现的关系&#xff1a; 2.SLF4J 的介绍 业务场景&#xff08;问题&#xff09;&#xff1a; SLF4J的作用 SLF4J 的基本介绍 日志框架的绑定&#xff08;重点&#xff09…

鸿蒙开发管理:【@ohos.account.distributedAccount (分布式帐号管理)】

分布式帐号管理 本模块提供管理分布式帐号的一些基础功能&#xff0c;主要包括查询和更新帐号登录状态。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff…

Kaggle网站免费算力使用,深度学习模型训练

声明&#xff1a; 本文主要内容为&#xff1a;kaggle网站数据集上传&#xff0c;训练模型下载、模型部署、提交后台运行等教程。 1、账号注册 此步骤本文略过&#xff0c;如有需要可以参考其他文章。 2、上传资源 不论是上传训练好的模型进行预测&#xff0c;还是训练用的…

PageHelper分页查询遇到的小问题

如果我们是这样子直接查询 pagehelper会拼接导我们的sql语句之后 这样子我们搜索出来的list&#xff0c;就是里面参杂了PageHelper的东西 所以我们可以直接转成我们的Page类型 但是如果我们搜索出来的是List<Blog>&#xff0c;我有些信息不想返回给前端&#xff0c;所以…

仿写Spring IOC

文章目录 IOC思路手写代码思路一些杂七杂八&#xff08;可跳过&#xff09; IOC思路 手写代码思路 手写代码的思路: 自定义一个MyAnnotationConfigApplicationContext&#xff0c;构造器中传入要扫描的包。获取这个包下的所有类。遍历这些类&#xff0c;找出添加了Component注…

【2024_CUMCM】T检验、F检验、卡方检验

T检验 T检验主要用于比较两组数据的均值差异&#xff0c;适用于小样本数据分析。它可以分为单样本T检验、独立样本T检验和配对样本T检验。 单样本T检验用于比较一个样本与已知的总体均值差异&#xff0c;独立样本T检验用于比较两个独立样本的均值差异&#xff0c;配对样本T检…

实验2 Aprori关联挖掘算法

目 录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 3.1 connect_string()函数解析... 1 3.2 find_rule()函数解析纠错... 2 3.3 关联规则挖掘... 4 四、心得体会... 7 一、实验目的 &#xff08;1&#xff09;理解Aprori关联挖掘算法的程序编写&#xff1b; &…