论文解析——Transformer 模型压缩算法研究及硬件加速器实现

news2024/10/6 1:12:07

作者及发刊详情

邓晗珂,华南理工大学

摘要

正文

实验平台

选取模型: T r a n s f o r m e r b a s e Transformer_{base} Transformerbase

训练数据集:WMT-2014 英语-德语翻译数据集、IWSLT-2014 英语-德语互译数据集

Transformer模型压缩

网络模型计算中的输入数据、权重数据和偏置数据都采取线性量化

量化过程:

  1. 获取训练后的得到的浮点 Transformer 模型,通过百分比校准获取各线性层权重数据的初始量化系数,而后通过均方误差校准获取各线性层的权重数据的量化系数。
  2. 选取训练集中一部分在上述训练后模型基础上多次前向推理,获取该浮点模型中各层矩阵运算输入数据的分布情况,从而根据百分比校准核均方误差校准获取各层矩阵运算的输入数据的量化系数,利用这些系数计算每层矩阵运算输入数据的量化系数
  3. 将第1点和第2点得到的系数相乘得到各层偏置数据的量化系数

采用偏移对角矩阵剪枝方法减少神经网络的模型参数量

偏移对角矩阵结构化规则稀疏剪枝的训练策略:

  1. 载入已训练好的模型参数
  2. 对分类的权重进行基于偏移对角矩阵的结构化剪枝,整体过程遵循“训练-剪枝-再训练”和分批剪枝相结合的策略

Transformer硬件加速器

加速器硬件架构

包括片内全局缓存(包括输入缓存、权重缓存和中间结果/输出缓存)、运算单元阵列、softmax 计算单元、层归一化计算单元(Layer norm)和控制模块。
在这里插入图片描述

运算单元阵列的设计

多个计算单元(Processing Element, PE)和加法单元组成,每个PE对输入和权重块进行计算

  • 输入数据以行数据形式流入运算单元阵列
  • 为了减少数据移动成本,本文采取权重复用最大化的策略,并且权重以稀疏块形式送入运算单元,对于输入到运算单元阵列每一块权重,将与之对应的所有输入数据进行遍历
  • 输入数据在 PE 阵列间传递可以对其进行复用,输入数据的复用次数取决于 PE 阵列的列大小

在这里插入图片描述

PE的设计

每个 PE 中包括 16个乘法器和 1 个数据分配器,可以完成向量乘矩阵操作,输出结果送入加法单元进行加法操作。

在这里插入图片描述

  • 数据分配器的作用是根据偏移量对输入数据进行重新排列,从而完成索引匹配,保证分配后的输入数据和所对应的非零值权重数据相乘,同时也统一了密集矩阵运算和稀疏矩阵运算在 PE 内的数据流
    这样无需在 PE 外对剪枝后的权重数据进行稀疏解码复原,同时不用对部分和输出或计算结果进行地址索引,乘法器的部分和输出排列顺序与最终输出数据的排列顺序一致
    在这里插入图片描述
加法器的设计

加法单元负责将所在列的 4 个 PE 产生的部分和结果或者偏置数据进行加法运算,每个加法器单元内部配备用于缓存部分和结果的 FIFO,与加法单元内部的累加器进行数据交互产生最终计算结果,这样可以缩短部分和的数据移动距离。

在这里插入图片描述

softmax函数计算单元的设计

包括:数据预处理模块、指数计算模块、累加模块和对数计算模块等模块

softmax的计算:
对于一个K维向量 x = [ x 1 , x 2 , . . . , x K ] x=[x_1,x_2,...,x_K] x=[x1,x2,...,xK],则softmax的输出向量s为:
s j = e x j ∑ k = 1 K e x k s_j=\frac{e^{x_j}}{\sum_{k=1}^{K} e^{x_k}} sj=k=1Kexkexj

  • softmax的计算存在除法运算和指数计算的数据溢出两个问题
  • 除法溢出问题:通过计算域变换,即将除法运算转换为减法和对数运算
  • 指数计算溢出问题:将指数函数的输入进行等比例缩小,即将所有输入数据减去数据中的最大值 x m x_m xm,将指数函数的输入范围限定为 ( − ∞ , 0 ] ,从而避免了数据溢出 (-\infty,0],从而避免了数据溢出 (,0],从而避免了数据溢出

在这里插入图片描述

  • 数据预处理模块除了要减去最大值 x m x_m xm,还需要对数据进行去量化操作
  • softmax 计算单元的输入数据的格式为 INT8,而且 Transformer 中的 softmax 的输入值需要根据KaTeX parse error: Expected '}', got 'EOF' at end of input: \sqrt{d_{k}进行缩小,对应图中的右移 3bit
  • 对数计算模块外的其他计算单元的计算并行度为 16
层归一化函数计算单元设计

包括计算模块有:均值计算模块、Var_L1 计算模块和 Norm 计算模块

层归一化计算存在于解码器和编码器的各子层间,为了避免复杂的标准差计算和简化量化推理过程,本文使用 L1 范数的层归一化代替了原始 Transformer 模型中的 L2 范数,通过实验证实了 L1 范数的层归一化不会影响数据分布以及模型性能。

  • 计算输入矩阵每行的均值,并将输入数据进行缓存用于均值差计算
  • 计算每行输入的均值差,并将均值差缓存,避免重复计算
  • 将均值差结果送入 Var_L1 模块计算 L1 范数的标准差
  • 在 Norm 模块中将缓存的均值差进行除法运算,并且与对应的可训练参数进行乘加计算。

在这里插入图片描述

权重数据存储方案

为了减少非零数据的偏移量索引成本,本设计对硬件加速器的权重数据存储进行了优化排列。

  • 加速器运算单元阵列采取权重复用的数据复用模式,在整个计算过程中不重复读取片上权重缓存中的权重数据,所以将偏移量索引与权重数据存储在一起进行同步读取,可以减少偏移量索引的读取次数
  • 在运算单元可以根据权重数据中的偏移量索引对输入数据的顺序进行重新排列,实现高效的索引匹配。

数据流

  1. 加速器的输入数据和各层权重数据从片外 DRAM 中加载,并且在所有计算完成后将最终结果写入到片外存储
  2. 片内全局缓存负责所有片上数据的缓存,减少片外访存的次数
  3. 运算单元阵列负责矩阵运算,可以兼容偏移对角稀疏权重矩阵以及密集矩阵计算,并且针对偏移对角稀疏矩阵进行了设计优化。
  4. softmax 单元负责模型中多头注意力层中的注意力分数计算
  5. 层归一化计算单元负责对编码器和解码器的子层运算结果进行归一化运算
  6. 控制模块负责控制整个计算过程中的数据读写和计算使能,根据计算矩阵类型、网络层类型和输入数据长度等信息实现加速器的灵活控制。

参考文献

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

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

相关文章

警翼警用记录仪视频格式化后恢复方法

警翼是国内较大的一家警用记录仪厂商,此品牌我们恢复过很多,此次遇到的是一个典型的误格式化的情况,我们来看看误格式化后如何恢复。 故障存储: 32G卡/fat32 故障现象: 客户提供的信息是在交接设备后没有及时备份而做出了初始化设备的操…

图像信号处理器(ISP)基础算法及处理流程

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《暗光增强》 &a…

录屏软件哪个好?3款宝藏软件,分享给你

在数字化时代,录屏软件因其强大的功能性和实用性,逐渐成为工作和生活中的得力助手。然而,市面上的录屏软件众多,选择一款适合自己的录屏软件却成为了一个难题。 不同的录屏软件在功能、性能、易用性等方面都有所不同,…

js之模糊搜索

多的不说 少的不唠 直接上代码

2.5 C#视觉程序开发实例1----设计一个IO_Manager

2.5 C#视觉程序开发实例1----设计一个IO_Manager 第一步目标: 1 实现获取IO触发信号Trig0 2 能够实现程序切换 3 图像处理后能够输出一个脉冲 1 IO 引脚定义 1.1 输入信号定义 1.2 输出信号定义 2 IO时序图 2.1 触发时序 2.2 切换程序时序图 3 IO_Manager.cs …

数据库表导出到excel

数据库表导出到excel:前置知识1 ALL_TAB_COLS 数据库表导出到excel:前置知识2 Quartz基本使用 数据库表导出到excel:前置知识3 项目封装的Quartz实现动态定时任务 数据库表导出到excel:前置知识4 业务和效果 发起清单下载control层InventoryDownloadLogController /* * */ pa…

用户资料门户的构建

1. 需求背景 老的页面停止维护了,且老旧, 功能单一,且页面分散. 急需做功能集成的平台化建设原先的用户资料查询没有做权限管控, 每一次查询都会消耗我们组的人力资源. 2. 项目介绍 2.1. 项目地址 服务地址: [公司内网服务(略)] 工蜂地址: [公司内网仓库(略)] 2.2 项目的价…

女性经济崛起,天润融通用客户感知挖掘市场潜力

每逢一年一度的国际妇女节,“女性”话题都会被郑重地讨论。 从消费市场上来说,最近几年女性群体正在拥有越来越大的影响力,甚至出现了“她经济”这样的专属词汇在最近几年被市场反复讨论。 毫无疑问,女性消费群体的崛起已经成为…

揭秘品牌成功秘诀:品牌营销策略的核心要素大公开

品牌营销作为企业战略中至关重要的一环,其核心是建立和传播品牌的独特魅力,使其在消费者心目中占据重要位置。 一个成功的品牌营销策略能够提升品牌的知名度和影响力,带来持续的销售和忠诚客户群体。 在当今竞争激烈的市场环境中&#xff0…

Prompt的万能公式和优化技巧

文章目录 前言一、万能公式二、优化技巧1.设定角色2.设定目标和动机3.引导主观回答4.预设条件5.做强调6.思维链(COT)7.巧用定界符 前言 随着LLM的发展,能给我们带来很多方便,但是又引出了一个新的问题就是我们该如何使用他们&…

明星代言方式8种助力品牌占领市场-华媒舍

1. 明星代言的重要性和市场价值 明星代言是一种常见的品牌推广方式,通过联系知名度高的明星来推广产品或服务,从而提升品牌的知名度和美誉度。明星代言能够借助明星的影响力和粉丝基础,将品牌信息传达给更广泛的受众,从而提高销量…

【数据结构】建堆的时间复杂度

一.向下调整建堆 1.二叉树层数与总节点个数关系 层数一定时,在二叉树节点个数最大的情况下,二叉树为满二叉树,如下图所示,可以清晰地看到在满二叉树中第h层有2^(h-1)个节点,总节点N就等于一个等比数列的求和&#xf…

【Python机器学习】模型评估与改进——在模型选择中使用评估指标

我们通常希望,在使用GridSearchCV或cross_val_score进行模型选择时能够使用AUC等指标。scikit-learn提供了一种非常简单的实现方法,那就是scoring参数,它可以同时用于GridSearchCV和cross_val_score。你只需要提供一个字符串,用于…

RabbitMQ入门教程(精细版二带图)

目录 六 RabbitMQ工作模式 6.1Hello World简单模式 6.1.1 什么是简单模式 6.1.2 RabbitMQ管理界面操作 6.1.3 生产者代码 6.1.4 消费者代码 6.2 Work queues工作队列模式 6.2.1 什么是工作队列模式 6.2.2 RabbitMQ管理界面操作 6.2.3 生产者代码 6.2.4 消费者代码 …

谷粒商城学习-06-使用vagrant快速创建linux虚拟机

这一节的内容是在Windows上安装虚拟机。 为什么要按照虚拟机呢? 原因是很多软件只能在Linux下运行,有的虽然也可以在Windows上运行,但从安装到运行会遇到很多问题,为这些解决这些问题花时间对于大多数人特别是初学者是没有什么价…

WPS操作技巧:制作可以打对勾的方框,只需简单几步!沈阳wps办公软件培训

日常工作中,我们经常需要在表格中添加复选框,比如【性别选择】、【任务完成状态】等等,通过打对勾来确定状态。今天就分别从WPS的Excel表格和Word文档2种场景,介绍制作可以打对勾的复选框的方法技巧,掌握技巧&#xff…

k8s-第十节-Ingress

Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口,避免了对外暴露集群端口;功能类似 Nginx,可以根据域名、路径把请求转发到不同的 Service。可以配置 https跟 LoadBalancer 有什么区别? `LoadBalancer`` 需要对外暴露端口,不安全;无法根据域名、路径转发流量到…

Linux之文本三剑客

Linux之三剑客 Linux的三个命令,主要是用来处理文本,grep,sed,awk,处理日志的时候使用的非常多 1 grep 对文本的内容进行查找 1) 基础用法 语法 grep 选项 内容|正则表达式 文件选项: -i 不区分大小写 -v 排除,反选 -n 显示行号 -c 统计个数查看文件里包含有的内容 [roo…

rtsp地址 + 测试网站 + java(免环境、免插件、零编码转换http播放)

目录 1、创建rtsp网站 2、测试rtsp网站 3、Java实现rtsp播放 ①maven添加依赖 ②访问http地址即可展示视频内容 1、创建rtsp网站 填写邮箱即可获得两个可用的rtsp网站(每月可免费用2G): https://rtsp.stream/ 2、测试rtsp网站 测试网络…