论文解析——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.mzph.cn/pingmian/42617.shtml

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

相关文章

入门PHP就来我这(高级)13 ~ 图书添加功能

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 今天给大家接着上篇文章编写图书添加功能。 1 添加页面 创建add.html页面样式,废…

acwing 291.蒙德里安的梦想

解法: 核心:先放横着的,再放竖着的。 总方案数,等于只放横着的小方块的合法方案数。 如何判断当前方案是否合法?所有剩余位置,能否填充满竖着的小方块。 即按列来看,每一列内部所有连续的空着的…

PTA甲级1005:Spell It Right

错误代码&#xff1a; #include<iostream> #include<vector> #include<unordered_map> using namespace std;int main() {unordered_map<int, string> map {{0, "zero"}, {1, "one"}, {2, "two"}, {3, "three&qu…

EN-SLAM:Implicit Event-RGBD Neural SLAM解读

论文路径&#xff1a;https://arxiv.org/pdf/2311.11013.pdf 目录 1 论文背景 2 论文概述 2.1 神经辐射场&#xff08;NeRF&#xff09; 2.2 事件相机&#xff08;Event Camera&#xff09; 2.3 事件时间聚合优化策略&#xff08;ETA&#xff09; 2.4 可微分的CRF渲染技术…

网络安全设备——防火墙

网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释&#xff1a; 一、定义与基本概念 定义&#xff1a;防火墙是指设置在不同网络&#xff08;如可信任的企业内部网和不可信的公共网&#xff09;或网络安全域之间的一系列部件的…

ts-01.泛型(函数和接口)

泛型 泛的意思是:漂浮, 比如泛舟; 泛型: 类型漂浮未定 > 动态类型. 用于: 函数 接口 类 T extends string | number 泛型约束 function a<T any, K> (: number, value: T) { // 泛型参数设置默认值anyconst arr Array<T>(l).fill(value) // [foo, foo, foo] }…

论文研读|AI生成图像检测发展历程及研究现状

前言&#xff1a;本篇博客系统性梳理AI生成图像检测的研究工作。 「人工智能生成图像检测」研究及发展现状介绍 参考资料 https://fdmas.github.io/AIGCDetect/针对AIGC检测的鲁棒性测试——常见攻击手段汇总论文研读&#xff5c;以真实图像为参考依据的AIGC检测论文研读&…

实验五 图像增强—空域滤波

一、实验目的 了解图像平滑滤波器&#xff08;均值滤波和中值滤波&#xff09;和图像锐化算子&#xff08;Sobel算子、Prewitt算子、Laplacian算子&#xff09;在工程领域中的应用&#xff1b;理解图像平滑滤波器和图像锐化算子的工程应用范围&#xff1b;掌握图像平滑滤波器和…

Netty学习(Netty入门)

概述 Netty是什么 Netty的地位 Netty的优势 HelloWorld public class HelloClient {public static void main(String[] args) throws InterruptedException {// 1. 启动类new Bootstrap()// 2. 添加 EventLoop.group(new NioEventLoopGroup())// 3. 选择客户端 channel 实现.…

如何恢复未保存的 Excel 文件

您是否曾经在处理 Excel 工作表时&#xff0c;电脑突然崩溃&#xff1f;您首先想到的是“进度保存了吗&#xff1f;”或“我是否按了 CtrlS 来保存文件&#xff1f;”这种压力是难以想象的&#xff0c;因为意外断电或电脑崩溃可能会让您所有的辛苦工作付诸东流。 无论对于学生…

前端技术(三)—— javasctipt 介绍:jQuery方法和点击事件介绍(补充)

6. 常用方法 ● addClass() 为jQuery对象添加一个或多个class <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&…

Educational Codeforces Round 167 (Rated for Div. 2)(A~C)题解

A. Catch the Coin 解题思路: 最终&#x1d465;一定会相等&#xff0c;我们考虑直接到下面接住他。 #include<bits/stdc.h> using namespace std; typedef long long ll; #define N 1000005 ll dp[N], w[N], v[N], h[N]; ll dis[1005][1005]; ll a, b, c, n, m, t; ll…

反编译kasada

继续研究反编译 这次的网站是 一个航司网站 他有 akamai和 kasada 两种防护 akamai 没啥好说的 结构分析 最开始有个长字符串 处理成 一个十几万的数组 通过 r.W[0] 走什么分支 还有数据的存取 M是一个98个函数组成的数组 代表不同的执行逻辑 这里给他转成了 switch case…

pygame 音乐粒子特效

代码 import pygame import numpy as np import pymunk from pymunk import Vec2d import random import librosa import pydub# 初始化pygame pygame.init()# 创建屏幕 screen pygame.display.set_mode((1920*2-10, 1080*2-10)) clock pygame.time.Clock()# 加载音乐文件 a…

RAID的实现

软RAID&#xff0c;在实际工作中使用较少&#xff0c;性能太次。 mdadm工具&#xff0c;主要在虚拟机上使用&#xff0c; 硬RAID 用一个单独的芯片&#xff0c;这个芯片的名字叫做RAID卡&#xff0c;数据在RAID中进行分散的时候&#xff0c;用的就是RAID卡。 模拟RAID-5工作…

麦蕊智数,,另外一个提供免费的股票数据API,可以通过其提供的接口获取实时和历史的股票数据。

麦蕊智数&#xff0c;&#xff0c;提供免费的股票数据API&#xff0c;可以通过其提供的接口获取实时和历史的股票数据。 API接口&#xff1a;http://api.mairui.club/hslt/new/您的licence 备用接口&#xff1a;http://api1.mairui.club/hslt/new/您的licence 请求频率&#x…

element-plus的文件上传组件el-upload

el-upload组件 支持多种风格&#xff0c;如文件列表&#xff0c;图片&#xff0c;图片卡片&#xff0c;支持多种事件&#xff0c;预览&#xff0c;删除&#xff0c;上传成功&#xff0c;上传中等钩子。 file-list&#xff1a;上传的文件集合&#xff0c;一定要用v-model:file-…

孟德尔随机化与痛风3

写在前面 检索检索&#xff0c;刚好发现一篇分区还挺高&#xff0c;但结果内容看上去还挺熟悉的文章&#xff0c;特记录一下。 文章 Exploring the mechanism underlying hyperuricemia using comprehensive research on multi-omics Sci Rep IF:3.8中科院分区:2区 综合性期…

【排序算法】—— 快速排序

快速排序的原理是交换排序&#xff0c;其中qsort函数用的排序原理就是快速排序&#xff0c;它是一种效率较高的不稳定函数&#xff0c;时间复杂度为O(N*longN)&#xff0c;接下来就来学习一下快速排序。 一、快速排序思路 1.整体思路 以升序排序为例&#xff1a; (1)、首先随…

web缓存代理服务器

一、web缓存代理 web代理的工作机制 代理服务器是一个位于客户端和原始&#xff08;资源&#xff09;服务器之间的服务器&#xff0c;为了从原始服务器取得内容&#xff0c;客户端向代理服务器发送一个请求&#xff0c;并指定目标原始服务器&#xff0c;然后代理服务器向原始…