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

作者及发刊详情

邓晗珂,华南理工大学

摘要

正文

实验平台

选取模型: 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.mzph.cn/diannao/40957.shtml

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

相关文章

JVM垃圾回收性能调优实战指南

JVM垃圾回收性能调优实战指南 一、引言 在Java应用程序中,垃圾回收(Garbage Collection, GC)是自动管理内存的重要机制。然而,不恰当的垃圾回收配置可能导致性能瓶颈,如频繁的GC暂停、内存碎片过多等。因此&#xff…

kpatch制作内核热补丁步骤总结

零、原理及参考 kpatch入门实践教程-CSDN博客 Kpatch 使用过程及其原理-CSDN博客 一、准备工作 安装对应版本的kpatch-build.rpm并解决依赖diff -Naur dir1 dir2 > hot.patch 拿到补丁文件下载对应内核版本的src.rpm安装好对应的开发包kernel-debuginfo,kern…

从GPT-1到GPT-3 预训练语言模型的演进与突破

本文由 ChatMoney团队出品 前言 Generative Pre-trained Transformer(GPT)系列是由OpenAI开发的预训练语言模型,它们在多种NLP任务中取得了令人瞩目的成绩,包括文章生成、代码生成、机器翻译和问答等。GPT系列模型的核心思想是通…

数据库开发:mysql基础一

文章目录 数据库开发Day15:MySQL基础(一)一、MySQL介绍与安装【1】MySQL介绍(5)启动MySQL服务(6)修改root登陆密码 二、SQL简介三、数据库操作四、数据表操作4.1、数据库数据类型4.2、创建数据表…

对标 GPT-4o 的开源实时语音多模态模型:Moshi

是由法国的 AI 实验室 Kyutai 推出的实时语音多模态模型,支持听、说、看,最关键的是你现在就可以在浏览器中使用,如果这个链接延迟高,可以试试这个, 无需输入邮箱,点击 Join queue 即可。 简单体验了下,比…

#### golang中【堆】的使用及底层 ####

声明,本文部分内容摘自: Go: 深入理解堆实现及应用-腾讯云开发者社区-腾讯云 数组实现堆 | WXue 堆(Heap)是实现优先队列的数据结构,Go提供了接口和方法来操作堆。 应用 package mainimport ("container/heap&q…

结构方程模型-验证性因子分析模型

初级 第7讲 验证性因子分析模_哔哩哔哩_bilibili

使用 ESP32 接收来自 MAX4466 模拟麦克风模块的数据,并通过 DAC 输出模拟音频信号,可以通过以下步骤实现:

硬件准备 ESP32 开发板MAX4466 模拟麦克风模块扬声器或耳机接线 MAX4466 模块输出(AO) -> ESP32 ADC 引脚(如 GPIO 34)ESP32 DAC 引脚(如 GPIO 25 或 GPIO 26) -> 扬声器或耳机软件准备 音频采集DAC 转码并播放代码实现 以下代码展示了如何从 MAX4466 读取模拟音频…

【Go语言入门学习笔记】Part7.闭包和defer关键字

一、前言 闭包有点像对象,而defer适合于类似功能中利用资源时,提前写几句defer 释放资源,防止后面释放资源忘记写释放资源。 二、学习代码 package mainimport ("fmt" )// getC的返回值是一个函数,需要的参数为空&…

GitHub Pull Request流程详解

GitHub Pull Request流程详解 在协作开发中,GitHub的Pull Request(PR)功能至关重要,它允许开发者在代码库中进行修改、审查和合并代码。本文将详细介绍GitHub Pull Request的完整流程,帮助你更好地理解和使用这一强大…

网络安全的十字路口:向“架构化”转移

市场条件正在快速变化 针对上述这些问题,在这段时间里,安全技术供应商推出了许多技术解决方案,比如SIEM、SOAR、XDR、UEBA等,但新产品的推出并未使得安全态势有所好转,许多问题依然存在,这导致了市场动态的…

【DevOps】Java内存分配与JVM参数详解

目录 引言 JVM内存结构 JVM参数概述 堆内存分配 年轻代与老年代 调整堆内存大小 调整年轻代与老年代比例 元空间分配 调整元空间大小 垃圾回收 调整GC参数 调整GC日志 线程栈分配 调整线程栈大小 性能调优 结论 在Java开发中,理解Java虚拟机&#x…

claude3.5写作——《基于灰色预测的中国人口数量预测》

文章目录 站点和提问引言一、灰色预测模型介绍二、中国历年人口数据三、灰色预测模型的建立1.建立原始序列2.生成1-AGO序列3.计算背景值4.构造数据矩阵并计算参数5.模型检验6.模型预测 四、预测结果分析五、政策建议结语参考文献 站点和提问 站点:中国官方克劳德3.…

如何更改 Python pip 源为国内源

在使用 Python 安装包工具 pip 时,经常会遇到下载速度慢的问题。这通常是因为默认使用的官方源 https://pypi.org/simple 在国内访问速度较慢。为了提高下载速度,我们可以将 pip 源更改为国内的镜像源。本文将介绍如何临时和永久地更改 pip 源为国内源。…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备,实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点,能够满足光伏电站数据采集的各种需求。(key-iot.com/iotlist/sr500…

RK3568平台(opencv篇)ubuntu18.04上安装opencv环境

一.什么是 OpenCV-Python OpenCV-Python 是一个 Python 绑定库,旨在解决计算机视觉问题。   Python 是一种由 Guido van Rossum 开发的通用编程语言,它很快就变得非常流行,主要是 因为它的简单性和代码可读性。它使程序员能够用更少的代码行…

C++ 运算符的优先级和关联性表

C 运算符的优先级和关联性表 1. Precedence and associativity (优先级和结合性)2. Alternative spellings (替代拼写)3. C operator precedence and associativity table (C 运算符的优先级和关联性表)References C documentation (C 文档) https://learn.microsoft.com/en-us…

网络IO模型之多路复用器.md

多路复用是什么?怎么理解? 本文主要涉及为 程序中处理网络IO时的模型,对于系统内核而言网络IO模型。这里只做普及使用 前置知识,什么是IO?怎么理解IO IO其实就是In和Out。中文翻译是输入和输出,只要涉及到输…

clone()方法

在Java中,clone() 方法是一个非常有趣且强大的工具,用于创建对象的一个副本。这个方法位于 Object 类中,因此可以被所有类使用。让我们讨论一下它的几个要点: 什么是克隆? 克隆就是创建一个对象的新副本,这…

2005-2022全国及各省家庭承包耕地流转总面积及经营耕地面积数据(无缺失)

2005-2022全国及各省家庭承包耕地流转总面积及经营耕地面积数据(无缺失) 1、时间:2005-2022年 2、范围:全国及30省 3、指标:家庭承包耕地流转总面积、家庭承包经营耕地面积、土地流转率、 4、来源:农村…