网站地图 | Tags | 热门标准 | 最新标准 | 订阅

T/AI 115.2-2024 信息技术 神经网络表示与模型压缩 第2部分:大规模预训练模型

  • 名  称:T/AI 115.2-2024 信息技术 神经网络表示与模型压缩 第2部分:大规模预训练模型 - 下载地址1
  • 类  别:团体标准规范
  • 下载地址:[下载地址1]
  • 提 取 码
  • 浏览次数:3
下载帮助: 发表评论 加入收藏夹 错误报告目录
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
新闻评论(共有 0 条评论)

资料介绍

ICS 35.040
CCS L 71
信息技术 神经网络表示与模型压缩
第2部分:大规模预训练模型
Information technology—Neural network representation and model compression—
Part 2: Large scale pre-training model
T/AI 115.2—2024
团体标准
中关村视听产业技术创新联盟 发布
2024 - 12 - 30发布
2024 – 12 – 30实施

版权保护文件
版权所有归属于该标准的发布机构,除非有其他规定,否则未经许可,此发行物及其章节不得以其
他形式或任何手段进行复制、再版或使用,包括电子版,影印件,或发布在互联网及内部网络等。使用
许可可于发布机构获取。

T/AI 115.2—2024
I
目 次
前言 ................................................................................ II
引言 ................................................................................ IV
1 范围 ............................................................................... 1
2 规范性引用文件 ..................................................................... 1
3 术语和定义 ......................................................................... 1
4 缩略语 ............................................................................. 2
5 概述 ............................................................................... 3
6 大规模预训练模型表示 ............................................................... 3
6.1 语法描述 ....................................................................... 3
6.2 语义描述 ....................................................................... 5
7 大规模预训练模型压缩表示 .......................................................... 18
7.1 概述 .......................................................................... 18
7.2 大模型结构优化 ................................................................ 18
7.3 大模型加速压缩流程 ............................................................ 23
7.4 大模型迁移压缩流程 ............................................................ 28
8 大规模预训练模型封装表示 .......................................................... 37
8.1 概述 .......................................................................... 37
8.2 模型封装表示 .................................................................. 37
8.3 模型封装传输 .................................................................. 42
附 录 A (资料性) 大规模预训练模型技术参考架构 ..................................... 45
T/AI 115.2—2024
II
前 言
本文件按照GB/T 1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
本文件是T/AI 115《信息技术 神经网络表示与模型压缩》的第2部分。T/AI 115已经发布了以下部分:
——第1部分:卷积神经网络。
——第2部分:大规模预训练模型。
本文件由新一代人工智能产业技术创新战略联盟AI标准工作组提出。
本文件由中关村视听产业技术创新联盟归口。
本文件起草单位:北京大学、鹏城实验室、华为技术有限公司、北京百度网讯科技有限公司、厦门大学、杭州海康威视数字技术股份有限公司、中国电子技术标准化研究院、中国科学院自动化研究所、中科南京人工智能创新研究院、铁塔智联技术有限公司。
本文件起草人:田永鸿、杨帆、陈光耀、郑侠武、彭军、纪荣嵘、韩凯、胡晓光、燕肇一、张一帆、沈岗、曹刘娟、周奕毅、张玉鑫、马跃萧、吴宇航、谢展豪、倪铭坚、张翀、彭佩玺、马艳军、于佃海、陈秋良、陈泽裕、陈醒濠、唐业辉、王云鹤、蓝朝祥、杨绮明、郑传杨、张凯、彭博、李哲暘、谭文明、任烨、叶挺群、任文奇、冯仁光、周智强、王培松、程健、麻文军、杨雨泽、鲍薇、郑若琳、沈芷月、张伟民、赵海英、黄铁军、高文。
本文件的发布机构提请注意,声明符合本文件时,可能涉及到7.3.1.2与《一种基于可微量化训练的视觉Transformer压缩方法及系统》(专利号:2022102951896)、7.2.1与《基于层间特征相似性网络稀疏化方法、装置、介质及设备》(专利号:202210842886.9)、7.4.4与《一种两阶段微调大语言模型代理的方法》(专利号:202410358176)、7.4.5与《一种提高大型语言模型适配多模态任务效率的方法》(专利号:202311290661.8)、7.3.1与《数据处理方法、装置、介质及电子设备》(专利号:202410154029.9)、7.3.2.3.4与《神经网络模型裁剪方法、装置、电子设备及存储介质》(专利号:202210615980.0)、7.2.5与《任务处理方法、装置、电子设备及存储介质》(专利号:202210709171.6)、7.3.1与《基于模型量化的任务处理方法、装置、设备及存储介质》(专利号:202211186183.1)、7.2与《一种特征提取的方法以及装置》(专利号:113065576A)、7.2与《一种注意力模型、特征提取方法及相关装置》(专利号:113627163A)、7.2与《一种数据处理方法及相关设备》(专利号:114897039A)相关的专利的使用。
本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。
该专利持有人已向本文件的发布机构承诺,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案,相关信息可以通过以下联系方式获得:
专利持有人:北京大学、华为技术有限公司、厦门大学、杭州海康威视数字技术股份有限公司、中科南京人工智能创新研究院、中国科学院自动化研究所、百度在线网络技术(北京)有限公司
地址:北京市海淀区颐和园路5号、深圳市龙岗区坂田华为总部办公楼、福建省厦门市思明区思明南路422号、浙江省杭州市滨江区阡陌路555 号、江苏省南京市创研路266号麒麟人工智能产业园3号楼3楼、北京市海淀区中关村东路95号、北京市海淀区上地十街10号百度大厦
联 系 人:黄铁军
通讯地址:北京大学理科2号楼2641室
邮政编码:100871
电子邮件:tjhuang@pku.edu.cn
T/AI 115.2—2024
III
电话:+8610-62756172
传真:+8610-62751638
网址:http://www.aitisa.org.cn
请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。
T/AI 115.2—2024
IV
引 言
人工智能领域正在发生迅速的范式转变,深度影响了计算机视觉、自然语言处理、机器人、自动驾驶、智慧医疗等领域的发展。大规模预训练模型是人工智能技术体系的重要组成部分,是国民经济各行业应用人工智能的前提。该标准的目标在于提供大规模预训练模型可能涉及的表示和压缩技术方法参考,提升用户对模型的复用效果。使用时,对于大规模预训练模型的表示方法、传输方法应进行必要的支持,对于压缩技术可根据实际应用场景及技术构成做可选支持,具体的支持方法由后续标准进行补充。对于该标准规定的表示方法不要求平台原生支持,可以通过转换、工具包等形式进行支持,同时相关的定义可转化为与特定计算设备、框架匹配的形式和实现。T/AI 115旨在确立适用于不同种类神经网络的表示方法与模型压缩的规范,拟由三个部分组成:
——第1部分:卷积神经网络。目的在千确立适用千卷积神经网络的表示与模型压缩标准。
——第2部分:大规模预训练模型。目的在于确立适应多种推理平台和计算要求的大规模预训练模型的基本表示方法与加速压缩过程。
——第3部分:图神经网络。目的在于确立适应多种计算要求的高效图神经网络模型的基本表示方法与压缩加速过程。
T/AI 115.2—2024
1
信息技术 神经网络表示与模型压缩 第2部分:大规模预训练模型
1 范围
本文件规定了适应多种计算机要求的大规模预训练的表示、压缩表示和封装表示,以及其对应的压缩流程、适配流程、封装流程和模型传输与分发。
本文件适用于大规模预训练模型的研制、开发过程,以及在端云领域的高效应用。
注:
对于本文件规定的表示与模型压缩方法不要求机器学习框架原生支持,可以通过转换、工具包等形式支持。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 42382.1-2023 信息技术 神经网络表示与模型压缩 第1部分:卷积神经网络
GB/T 5271.34-2006 信息技术 词汇 第34部分:人工智能 神经网络
3 术语和定义
GB/T 5271.34-2006 界定的以及下列术语和定义适用于本文件。
3.1
预训练模型 pre-trained model
一种深度学习模型,通过自监督或者无监督技术,在大量的训练数据上训练得到初始模型,可被迁移到目标相近的任务中进行使用的一种深度学习模型。
3.2
大规模预训练模型 large-scale pre-trained model
大模型 large-scale model
一种参数规模较大的预训练模型,通过自监督或者无监督技术从海量的通用数据中训练得到基础模型,并结合下游具体任务对其进行微调,最终被训练成具有逻辑推理和分析能力的人工智能模型。
3.3
转换器 transformer
一种基于多头注意力机制,包含残差连接、层归一化和全连接的、能并行处理序列数据的、序列到序列架构(Encoder-Decoder架构)的网络。
3.4
自注意力 self-attention
通过计算输入序列内部每个元素对其他所有元素的注意力权重,建立序列内部的不同位置间关系的机制。
T/AI 115.2—2024
2
3.5
多头注意力 multi-head attention
一种大规模预训练模型中利用多个参数量进行注意力计算机制。
3.6
层归一化 layer normalization
对一个中间层的所有神经元进行归一化。在Transformer结构中对一个位置的特征进行归一化。
3.7
前馈网络 feedforward network
神经网络中的推理模型。
3.8
量化 quantization
深度学习中用于模型压缩和加速的常见技术,通过降低模型参数的精度来减少存储和计算需求。
3.9
剪枝 pruning
深度学习中用于模型压缩和加速的常见技术,通过移除不重要的权重或神经元来简化模型。
4 缩略语
下列缩略语适用于本文件。
AI:人工智能(Artificial Intelligence)
BERT:基于双向Transformer的编码器表征(Bidirectional Encoder Representations from Transformers)
FFN:前馈网络(Feedforward Network)
GAN:生成对抗网络(Generative Adversarial Network)
GPT:生成式预训练Transformer(Generative Pre-trained Transformer)
HTTPS:超文本传输安全协议(Hyper-Text Transfer Protocol Secure)
LLM:大语言模型(Large Language Model)
MHA:多头注意力(Multi-Head Attention)
MLP:多层感知机(Multi-Layer Perception)
MSA:多头自注意力(Multi-Head Self-Attention)
RAG:检索增强生成(Retrieval-Augmented Generation)
REST:表述性状态传递(Representational State Transfer)
SGD:随机梯度下降(Stochastic Gradient Descent)
VAE:变分自编码器(Variational Auto-Encoder)
ViT:视觉Transformer(Vision Transformer)
T/AI 115.2—2024
3
5 概述
大规模预训练模型在表示、压缩与适配、传输与分发等环节相互关联,形成一个完整的生态系统。各个环节之间联系紧密,贯穿了从模型训练到应用的整个生存周期。各环节总体架构见图1。

1 大规模预训练模型表示与压缩总体架构
其中,大规模预训练模型表示的具体要求和应用流程见第6章,定义构建大规模预训练模型基本结构信息的基本语法和语义。大规模预训练模型压缩表示的具体要求和应用流程见第7章,用于需要资源受限设备以及专业场景任务的情况。大规模预训练模型封装表示的具体要求和应用流程见第8章,用于模型从不同端进行传输、更新。
6 大规模预训练模型表示
6.1 语法描述
6.1.1 通则
本部分定义大规模预训练模型表示的语法,从粗粒度到细粒度,即从模型结构定义、计算图定义、到节点定义,逐层嵌套,构建了整个大规模预训练模型的基本语法描述。该表示语法应在由特定计算系统(深度学习平台及相关软硬件)中完成,遵循以下原则。
a)
计算系统实现时,需要对语法要素按实际需要做出调整,包含但不限于:
1)
关键字(参数)命名;
2)
运算符命名;
3)
数据类型。
b)
需要考虑必要层级的定义,包含:
1)
模型结构定义;
2)
计算图定义;
3)
基本数据类型定义。
大规模预训练模型表示压缩流程适配流程大规模预训练模型压缩表示封装流程大规模预训练模型封装表示模型传输与分发
T/AI 115.2—2024
4
6.1.2 模型结构定义
模型结构表示神经网络模型的基本信息以及网络架构,描述模型结构的技术参数见表1。
表 1 模型结构定义
参数
类型
定义
version
int64
模型表示标准版本
contributors
ContributorsList
模型贡献者信息列表
framework_name
string
模型初始训练框架名称
framework_version
string
模型初始训练框架版本
model_name
string
模型名称
model_version
string
模型版本
doc_url
string
模型描述文档链接
graph
graph
模型具体计算图
注:
来源GB/T 42382.1-2023
6.1.3 计算图定义
计算图定义见表2。
表 2 计算图定义
字段
类型
定义
operator_node
OperatorNode (repeated)
计算图操作节点
variable_node
VariableNode (repeated)
计算图变量节点
id
int64
计算图的唯一序号
parent_graph_id
int64
子计算图对应的父计算图的序号
forward_graph_id
int64
子计算图对应的前向计算图的序号
sub_graphs
Graph (repeated)
计算图包含的子图列表
计算图可能包含若干子计算图:
a)
大规模预训练模型表示中的条件语句、循环语句的内部操作节点和变量节点构成子计算图;
b)
大规模预训练模型中的若干操作结点可合并为一个新的操作结点,并交由第三方高效计算引擎(如Nvidia TensorRT、intel Ngraph等)执行,新的操作结点和对应的变量节点可用子计算图的形式表达。
计算图的parent_graph_id指向其父计算图,forward_graph_id指向其前向计算图。主计算图无对应的父计算图,其parent_graph_id表示为-1;若计算图无对应的前向计算图,其forward_graph_id表示为-1。
计算图包含操作节点和变量节点,操作节点对应网络中的运算操作,变量节点对应网络中的变量,变量包括但不限于网络参数和临时变量。操作节点接收一系列的变量节点作为输入,经过运算操作后输出一系列的变量节点。
T/AI 115.2—2024
5
6.1.4 操作节点定义
操作节点定义见表3。其中,运算操作域定义了操作节点的名称;input和output为操作节点的输入变量节点和输出变量节点;attribute为操作节点的属性。
表 3 操作节点定义
参数
类型
定义
name
string
节点名称
operator
string
节点操作名称
input
map<string, list(VariableNode)>
节点输入
output
map<string, list(VariableNode)>
节点输出
attribute
map<string, Attribute>
节点属性
doc_string
string
节点描述
definition
string
节点定义
6.2 语义描述
6.2.1 运算操作表示
6.2.1.1 通则
6.2.1.1.1 运算操作使用原则
大规模预训练模型所含的运算操作,由特定计算系统实现,应遵循以下使用原则。
1)
按实际需要,做出调整,包含但不限于:
1)
关键字(参数)命名;
2)
运算符命名;
3)
数据类型支持范围。
2)
考虑运算涉及的要素,包含:
1)
可支持的参数;
2)
可支持的类型。
6.2.1.1.2 运算操作分类
大规模预训练模型的算子分为以下三类:
1)
大模型组网的通用算子,包括但不限于embedding、layer_norm、linear、attention算子,其定义见表4至表7;
2)
神经网络模型的通用算子,包括但不限于基础数学类算子reshape、concat,神经网络类算子relu、softmax,详细内容可参考其他相关算子标准定义,不在本标准内重复定义;具体可参考标准包括GB/T 42382.1-2023;
3)
大模型训练的通信算子,包括但不限于reduce、allreduce、reduce_scatter、allgather、broadcast、send、recv算子,定义如表8至表14所示。
T/AI 115.2—2024
6
6.2.1.2 基础运算操作定义
本条定义大规模预训练模型中常见的运算操作定义,具体定义见如下表格。
embedding运算操作定义见表4。
表 4 embedding运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
embedding
一个简单的查找表,用于存储固定字典和大小的嵌入
Input
X
输入张量
intTensor
longTensor
weight
词嵌入权重张量
Tensor
Output
Y
输出映射张量
Tensor
Attributes
input_size
可选,输入最大值
int
embed_dim
可选,输出张量的维度
int
layer_norm运算操作定义见表5。
表 5 layer_norm运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
layer_norm
层归一化层操作
Input
X
输入张量
Tensor
weight
缩放张量
Tensor
bias
偏置张量
Tensor
Output
Y
输出张量
Tensor
mean
可选,输入的均值,其shape的前 begin_norm_axis 维与 input_x 相同
Tensor
variance
可选,输入的方差,shape同 mean 一致
Tensor
Attributes
epsilon
为了数值稳定加在分母上的值
float
begin_norm_axis
开始层归一化的维度
int
begin_param_axis
可选,指定输入参数(weight, bias)需进行层归一化的开始维度
int
linear运算操作定义见表6。
表 6 linear运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
linear
对特征张量进行全连接层运算
Input
X
输入特征张量
Tensor
weight
全连接层的权重张量
Tensor
bias
可选,全连接层的偏置张量
Tensor
Output
Y
输出特征张量
Tensor
T/AI 115.2—2024
7
attention运算操作定义见表7。
表 7 attention运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
attention
对特征张量进行自注意力运算
Input
Q
Q特征张量
Tensor
K
K特征张量
Tensor
V
V特征张量
Tensor
attn_mask
可选,掩码张量
Tensor
Output
Out
输出特征张量
Tensor
softmax
可选,输出softmax值
Tensor
Attribute
dropout
可选,dropout操作的概率
float
return_softmax
可选,是否返回softmax
bool
causal
可选,是否使用causal模式
bool
reduce运算操作定义见表8。
表8 reduce运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
reduce
规约进程组内的一个 tensor,随后将结果发送到一个进程
Input
X
输入张量
Tensor
Output
Y
规约后的张量
Tensor
Attributes
op
可选,规约操作类型
枚举类型,默认sum,可选sum,max,min,prod
root_id
接收张量的进程
int
group_id
进程组id
int
allreduce运算操作定义见表9。
表 9 allreduce运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
allreduce
规约进程组内的一个 tensor,随后将结果发送到每个进程
Input
X
输入张量
Tensor
Output
Y
规约后的张量
Tensor
Attributes
op
可选,规约操作类型
枚举类型,默认sum,可选sum,max,min,prod
group_id
进程组id
int
T/AI 115.2—2024
8
reduce_scatter运算操作定义见表10。
表 10 reduce_scatter运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
reduce_scatter
进程组内每个节点将数据切分为若干维度,每一个节点对一个维度的所有数据进行reduce
Input
X
输入张量
Tensor
Output
Y
规约后的张量
Tensor
Attributes
op
可选,规约操作类型
枚举类型,默认sum,可选sum,max,min,prod
nranks
可选,进程组中进程的数量
int
group_id
进程组id
int
allgather运算操作定义见表11。
表 11 allgather运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
allgather
聚合进程组内的指定 tensor,随后将聚合后的 tensor 列表发送到每个进程
Input
X
输入张量
Tensor
Output
Y
聚合后的张量
Tensor
Attributes
nranks
可选,进程组中进程的数量
int
group_id
进程组id
int
broadcast运算操作定义见表12。
表 12 broadcast运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
broadcast
将一个 tensor 广播到进程组的每个进程
Input
X
输入张量
Tensor
Output
Y
广播后的张量
Tensor
Attributes
root_id
执行广播的根节点
int
group_id
进程组id
int
send运算操作定义见表13。
表 13 send运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
send
将一个 tensor 发送到进程组的指定进程
Input
X
输入张量
Tensor
Output
/
/
/
T/AI 115.2—2024
9
Attributes
peer
接收张量的节点
int
group_id
进程组id
int
recv运算操作定义见表14。
表 14 recv运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
recv
接收某个进程发送的tensor
Input
/
/
/
Output
Y
接收的张量
Tensor
Attributes
peer
发送张量的节点
int
group_id
进程组id
int
6.2.2 模块操作表示
6.2.2.1 概述
针对大规模预训练模型对不同场景的适配、加速和压缩,对大规模预训练模型的结构化模块做出的针对性的修改。本章节提供模块操作的基本定义以及其参考结构或计算流程。
6.2.2.2 模块操作定义
多头注意力机制MHA运算操作定义见表15。
表 15 MHA运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
MHA
对特征张量进行多头注意力运算
Input
X
输入特征张量
Tensor
attn_mask
可选,掩码张量
Tensor
Output
Y
输出特征张量
Tensor
softmax
可选,输出softmax值
Tensor
Attribute
N_heads
可选,多头注意力的头个数
Int
dropout
可选,dropout操作的概率
float
return_softmax
可选,是否返回softmax
bool
causal
可选,是否使用causal模式
bool
FFN的运算操作定义见表16。
表 16 FFN运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
FFN
对特征张量进行全连接网络运算
Input
X
输入特征张量
Tensor
Output
Y
输出特征张量
Tensor
Attribute
act
必选,非线性激活函数
string
hidden_dim
必选,隐藏层特征维数
Int
T/AI 115.2—2024
10
T/AI 115.2—2024
11
嵌套式Transformer模块的操作定义见表17,结构或计算流程见7.2.1。
表 17 嵌套式Transformer模块操作定义
运算操作
描述
字段
关键字
定义
类型
嵌套式Transformer模块
对输入视觉句子和视觉单词特征进行特征变换
Input
Z
视觉句子特征
tensor
Y
视觉单词特征
tensor
Output
Z_new
更新后的视觉句子特征
tensor
Y_new
更新后的视觉单词特征
tensor
Attributes
n
视觉句子的数量
int
m
视觉单词的数量
int
dim
视觉句子特征维数
int
基于参数化跳连的Transformer模块的操作定义见表18,结构或计算流程见7.2.2。
表 18 基于参数化跳连的Transformer模块操作定义
运算操作
描述
字段
关键字
定义
类型
基于参数化跳连的Transformer模块
在标准Transformer模块上并联参数化跳连支路
Input
Z
输入特征
tensor
Output
Z_new
输出特征
tensor
Attributes
n
与MSA模块并联参数化跳连的数量
int
m
与MLP模块并联参数化跳连的数量
int
Transformer统一归一化层模块操作定义模块的操作定义见表19,结构或计算流程见7.2.4。
表 19 Transformer统一归一化层模块操作定义
运算操作
描述
字段
关键字
定义
类型
Transformer统一归一化模块
对输入进行归一化
Input
X
输入特征
tensor
Output
Y
输出
tensor
Attributes
?2
推理方差
tensor
γ
仿射变换参数
tensor
β
仿射变换参数
tensor
M
窗口大小
Int
?̂?2
训练历史方差
tensor
??̂?2
训练历史方差梯度
tensor
T/AI 115.2—2024
12
Transformer多模态融合模块操作定义模块的操作定义见表20,结构或计算流程见7.2.5。
表 20 Transformer多模态融合模块操作定义
运算操作
描述
字段
关键字
定义
类型
Transformer多模态融合模块
对模态1和模态2根据特征重要性进行特征替换
Input
x1
模态1特征
tensor
x2
模态2特征
tensor
score1
模态1特征重要性得分
tensor
score2
模态2特征重要性得分
tensor
Output
x1_new
融合更新后的模态1特征
tensor
x2_new
融合更新后的模态2特征
tensor
Attributes
proj_1_to_2
模态1到模态2 token映射
function
proj_2_to_1
模态2到模态1 token映射
function
threshold
特征交换阈值
float
Adapter适配器操作定义见表21,结构或计算流程见7.4.2。
表 21 Adapter适配器操作定义
运算操作
描述
字段
关键字
定义
数据类型
RepAdapter
对输入特征的进行线性缩放和偏移
Input
X
输入张量
Tensor
weight
缩放张量
Tensor
bias
偏置张量
Tensor
Output
Y
输出张量
Tensor
Linear_Adapter
对输入的权重进行线性缩放和偏移操作
Input
X
输入张量
Tensor
weight
缩放张量
Tensor
bias
偏置张量
Tensor
Output
Y
输出张量
Tensor
多模态大模型高效迁移操作定义见表22,结构或计算流程见7.4.3.1。
表 22 多模态大模型高效迁移操作定义
操作
描述
字段
关键字
定义
数据类型
高效迁移
对多模态预训练大模型进行高效迁移
Input
W
预训练权重张量
List of Tensor
A
参数高效模块
List of Tensor
R
动态路由模块
List of Tensor
D
微调数据集
List of vectors
T
迁移目标
Value
Output
W_o
迁移之后的权重张量
List of vectors
A_o
迁移之后的适配器张量
List of vectors
R_o
迁移之后的动态路由张量
List of vectors
T/AI 115.2—2024
13
视觉大模型高效迁移操作定义见表23,结构或计算流程见7.4.4.1。
表 23 视觉大模型高效迁移操作定义
操作
描述
字段
关键字
定义
数据类型
高效迁移
对视觉大模型进行高效迁移
Input
W
预训练权重张量
List of vectors
A
参数高效模块
List of vectors
D
微调数据集
List of vectors
T
迁移目标
Value
Output
W_o
迁移之后的权重张量
List of vectors
A_o
迁移之后的适配器张量
List of vectors
迁移压缩操作定义见表24,结构或计算流程见7.4.5.1。
表 24 迁移压缩操作定义
操作
描述
字段
关键字
定义
数据类型
迁移压缩
对预训练模型进行迁移压缩
Input
W
预训练权重张量
List of vectors
A
参数高效模块
List of vectors
D
微调数据集
List of vectors
R
压缩目标
Value
Output
W_o
压缩之后的权重张量
List of vectors
A_o
压缩之后的适配器张量
List of vectors
6.2.3 多模态操作表示
6.2.3.1 概述
6.2.3.1.1 核心组件
多模态大模型是融合多个模态数据进行理解与生成的大模型。其模型结构的核心组件包括输入层、模态特定编码器、模态融合模块、模态对齐模块、解码层和输出层。
6.2.3.1.2 输入层
不同模态输入对应独特的输入处理模块,数据输入处理模块包括:
a)
文本数据:分词和嵌入处理;
b)
图像数据:进行像素值归一化和图像增强;
c)
音频数据:转换为频谱图或其他时频表示。
6.2.3.1.3 模态特定编码器
模态特定编码器包括但不限于:
a)
文本编码器:通常由词嵌入层、位置嵌入层、多层Transformer编码器组成,能够将文本数据转化为高维特征表示,包括BERT、GPT、RoBERTa等;
b)
图像编码器:通常包含卷积层(或自注意力层)和池化层,能够提取图像的多层次特征,包括ResNet、Vision Transformer(ViT)等;
T/AI 115.2—2024
14
c)
音频编码器:通常通过卷积层或Transformer结构处理音频信号,提取有意义的音频特征,包括Wav2Vec、Mel-Spectrogram、MFCC等;
d)
视频编码器:通常通过处理视频数据中的时间和空间信息,从而提取出丰富的视频特征,包括C3D、I3D等。
6.2.3.1.4 模态融合模块
多模态数据融合策略包括:
a)
早期融合:在输入层或编码层进行融合,常用方法包括拼接、加权平均等;
b)
中期融合:在模型的中间层进行融合,通常利用多层交叉注意力机制(Cross-Attention)在不同模态间进行信息交换;
c)
晚期融合:在模型的高层或输出层进行融合,通常利用单独的决策模块对每个模态的数据进行处理,然后将结果合并。
6.2.3.1.5 模态对齐模块
模态对齐是指将不同模态的数据映射到相同的特征空间,对齐方法包括但不限于:
a)
共现分析:利用共现矩阵或共现图对不同模态的数据进行对齐;
b)
对比学习:通过构建正负样本对,最大化同一模态和不同模态特征之间的相似性;
c)
对齐变换:利用线性或非线性变换,将不同模态的特征对齐到相同的表示空间。
6.2.3.1.6 解码器和输出层
解码器和输出层包括但不限于:
a)
模态特定解码器:用于图像、文本的生成任务,其实用特定模态的解码器对文本或图像进行解码。例如,GPT等对应文本生成器,GAN或VAE等对图像生成器;
b)
联合解码器:用于生成多模态输出的任务(如视频描述生成),可以同时处理不同模态的输出;
c)
分类和回归模块:对于分类和回归任务,全连接层被添加在融合后的特征表示上以完成回归和预测任务。
6.2.3.2 图像模态算子
vision_embedding运算操作用于将图像数据嵌入到特征空间,具体定义见表25。
表 25 vision_embedding运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
vision_embedding
将图像数据嵌入到特征空间
Input
image
输入图像张量
Tensor
resize_shape
可选,调整后的图像大小
Tuple
Output
embedding
输出嵌入特征张量
Tensor
Attributes
encoder_type
必选,编码器类型
string
embed_dim
必选,嵌入维度
int
dropout
可选,dropout概率
float
T/AI 115.2—2024
15
roi_pooling运算操作用于区域兴趣池化操作,提取图像中特定区域的特征。具体定义见表26。
表 26 roi_pooling运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
roi_pooling
区域兴趣池化操作,提取图像中特定区域的特征
Input
image
输入图像张量
Tensor
regions
区域坐标张量
Tensor
pool_size
池化大小
Tuple
Output
pooled_features
输出池化特征张量
Tensor
Attributes
spatial_scale
必选,空间缩放因子
float
sampling_ratio
可选,采样比例
int
aligned
可选,是否进行边界对齐
bool
6.2.3.3 文本模态算子
ext_embedding运算操作用于将文本数据嵌入到特征空间。具体定义见表27。
表 27 text_embedding运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
text_embedding
将文本数据嵌入到特征空间
Input
text
输入文本张量
Tensor
token_type
可选,令牌类型张量
Tensor
Output
embedding
输出嵌入特征张量
Tensor
Attributes
encoder_type
必选,编码器类型
string
vocab_size
必选,词汇表大小
int
embed_dim
必选,嵌入维度
int
dropout
可选,dropout概率
float
positional_encoding运算操作用于为文本数据添加位置编码。具体运算操作定义见表28。
表 28 positional_encoding运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
Positional_encoding
为文本数据添加位置编码,帮助模型理解序列信息
Input
sequence
输入文本序列张量
Tensor
max_length
最大序列长度
Int
Output
encoded
输出位置编码特征张量
Tensor
Attributes
embed_dim
必选,嵌入纬度
Tensor
periodic_function
可选,周期函数类型
String
T/AI 115.2—2024
16
6.2.3.4 音频模态算子
mel_spectrogram运算操作将音频信号转换为梅尔频谱图。具体运算操作定义见表29。
表 29 mel_spectrogram运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
mel_spectrogram
将音频信号转换为梅尔频谱图
Input
audio_signal
输入音频信号张量
Tensor
sample_rate
采样率
Int
window_type
窗函数类型
String
n_mels
频带数量
Int
Output
spectrogram
输出梅尔频谱图张量
Tensor
Attributes
hop_length
必选,跳跃长度
Int
n_fft
必选,FFT窗口大小
Int
Mfcc运算操作提取音频信号的梅尔频率倒谱系数。具体运算操作定义见表30。
表 30 Mfcc运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
Mfcc
提取音频信号的梅尔频率倒谱系数
Input
audio_signal
输入音频信号张量
Tensor
sample_rate
采样率
Int
Output
mfcc_features
输出MFCC特征张量
Tensor
Attributes
n_mfcc
必选,MFCC特征数量
Int
n_mels
必选,梅尔滤波器组的数量
Int
hop_length
可选,跳跃长度
Int
n_fft
可选,FFT窗口大小
Int
6.2.3.5 多模态融合算子
cross_modal_attention运算操作定义见表31。
表 31 cross_modal_attention运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
cross_modal_attention
对不同模态数据进行交叉注意力计算
Input
modality_1
第一模态输入特征张量
Tensor
modality_2
第二模态输入特征张量
Tensor
attn_mask
可选,掩码张量
Tensor
Output
attn_output
输出交叉注意力特征张量
Tensor
attn_weights
可选,注意力权重张量
Tensor
Attributes
num_heads
必选,注意力头数
int
embed_dim
必选,嵌入维度
int
key_dim
必选,键的维度
int
value_dim
必选,值的维度
int
dropout
可选,dropout概率
float
T/AI 115.2—2024
17
concat_fusion运算操作定义见表32。
表 32 concat_fusion运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
concat_fusion
将多模态特征拼接在一起,形成融合特征表示
Input
modality_1
第一模态输入特征张量
Tensor
modality_2
第二模态输入特征张量
Tensor
Output
fused_output
输出融合特征张量
Tensor
Attributes
fusion_dim
必选,融合后特征维度
int
dropout
可选,dropout概率
float
expert_selection运算操作定义见表33。
表 33 expert_selection运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
expert_selection
根据输入数据选择适合的专家模型
Input
input_data
输入数据张量
Tensor
Output
selected_expert
输出选择的专家模型索引
int
Attributes
num_experts
必选,专家模型的数量
int
selection_method
必选,专家选择方法
string
gated_expert_routing运算操作定义见表34。
表 34 gated_expert_routing运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
gated_expert_routing
使用门控机制路由输入数据到适合的专家模型
Input
input_data
输入数据张量
Tensor
Attributes
num_experts
必选,专家模型的数量
int
gate_dim
必选,门控维度
int
activation
可选,门控机制的激活函数
string
dropout
可选,dropout概率
float
mixture_of_experts运算操作定义见表35。
表 35 mixture_of_experts运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
mixture_of_experts
综合多个专家模型的输出结果
Input
expert_outputs
各专家模型的输出结果张量
Tensor
Output
final_output
最终综合的输出结果
Tensor
Attributes
num_experts
必选,专家模型的数量
int
combine_method
必选,结果综合方法
String
dropout
可选,dropout概率
float
T/AI 115.2—2024
18
6.2.3.6 模型对齐和转换算子
modal_alignment运算操作定义见表36。
表 36 modal_alignment运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
modal_alignment
对齐不同模态的数据,确保它们在同一特征空间内
Input
modality_1
第一模态输入张量
Tensor
modality_2
第二模态输入张量
Tensor
align_method
对齐方法
string
Output
aligned
输出对齐后的张量
Tensor
Attributes
align_dim
对齐维度
int
dropout
可选,dropout概率
float
6.2.3.7 模态特定的优化算子
modality_specific_optimizer运算操作定义见表37。
表 37 modality_specific_optimizer运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
modality_specific_optimizer
优化特定模态的参数
Input
X
输入特征张量
List of Tensor
learning_rate
学习率
float32
optimizer_method
优化方法(如Adam、SGD等)
string
Output
Y
优化后的参数
List of Tensor
Attributes
modality
必选,模态类型(如文本、图像、音频等)
string
modality balancing optimizer运算操作定义见表38。
表 38 modality balancing optimizer运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
modality balancing optimizer
平衡不同模态的损失和梯度,确保各模态的贡献均衡
Input
X
输入特征张量
List of Tensor
balance_factor
平衡因子,用于调整各模态的权重
float32
Output
Y
平衡后的参数
List of Tensor
Attributes
modality
必选,模态类型(如文本、图像、音频等)
string
T/AI 115.2—2024
19
cross-modality regularization运算操作定义见表39。
表 39 cross-modality regularization运算操作定义
运算操作
描述
字段
关键字
定义
数据类型
cross-modality regularization
正则化多模态之间的关系,防止过拟合和模态偏差
Input
X
输入特征张量
Tensor
regularization_rate
正则化率
float32
regularization_method
正则化方法(如L2、L1)
string
Output
Y
正则化后的参数
Tensor
Attributes
modality
必选,模态类型(如文本、图像、音频等)
string
7 大规模预训练模型压缩表示
7.1 概述
基于Transformer的预训练大模型应包含词向量、多个Transformer模块(每个Transformer模块包含多头注意力机制、全连接网络、正则化、跳跃连接)以及任务相关模块。这种模型推理阶段的存储瓶颈在词向量以及Transformer模块中的权重,计算瓶颈在多头注意力机制和全连接网络中的矩阵乘法。而存储和计算直接影响了推理的时延和功耗。为了减少推理过程中的存储和计算,许多方法对词向量,权重矩阵进行了压缩,或者对矩阵乘法进行了加速和优化。这些用于词向量和权重矩阵压缩,加速和优化矩阵乘法的方法包括但不限于:
a)
大模型结构优化:通过调整模型的结构来减少模型的复杂性和计算需求;
b)
大模型加速压缩:通过算法和硬件优化来加速模型的推理和训练,同时尽量减少对存储的需求,主要包括稀疏化、量化等;
c)
大模型迁移压缩:通过迁移学习和模型压缩结合的方式,减少模型在新任务上的复杂性和大小,具体包括多模态迁移和多任务迁移。
7.2 大模型结构优化
7.2.1 嵌套式结构
嵌套式结构利用一个外部Transformer和一个内部Transformer分别提取全局特征和局部特征,即使用一个外Transformer模块来对图像块之间的关系进行建模,用一个内Transformer模块来对子图像块之间的关系进行建模,从而构建丰富的视觉表征的技术方案。嵌套式结构既保留了图像块层面的信息提取,又做到了像素层面的信息提取,能够显著提升模型对局部结构的建模能力,进而提升模型的识别效果。
嵌套式结构将输入图像切块,每个图像块看作一个视觉句子Z,构成视觉句子序列,并将图像块进一步切分为子图像块,每个子图像块看作一个视觉单词Y。嵌套式视觉Transformer模块会对视觉单词Y和视觉句子Z进行联合处理,对于每一组m个视觉单词,使用一个内部Transformer模块来进行特征提取和关系建模,模块输出见式(1)和式(2):
?′??=??−1?+???(??(??−1?)) ..................................................... (1)
T/AI 115.2—2024
20
???=?′??+???(??(?′??)) .......................................................... (2)
式中:
Y——视觉单词;
Z——视觉句子。
对一组视觉单词进行处理之后,嵌套式结构将这组视觉单词向量拼接起来,线性变换层linear将拼接向量映射为一个大向量,加到视觉句子上对其特征进行补充,得到新的视觉句子,见式(3):
??−1?=??−1?+??????(???(???)) ................................................. (3)
对于n个视觉句子,嵌套式结构使用一个外部Transformer模块来进行特征提取和关系建模,见式(4)和式(5):
?′?=??−1+???(??(??−1)) .................................................... (4)
??=?′?+???(??(?′?)) ........................................................... (5)
上述内部和外部2个Transformer模块共同组成嵌套式Transformer算子。通过串联若干个嵌套式Transformer算子,就构建了嵌套式视觉Transformer网络结构。
嵌套式Transformer模块的操作定义见表 17,伪代码描述见表40。
表 40 嵌套式Transformer模块伪代码描述
嵌套式Transformer模块
描述符
def transformer_in_transformer(Z, Y){
Y = Y + MHA(Y)
内部多头自注意力
Y_new = Y + FFN(Y)
内部全连接网络
Y_reshape = Y_new.reshape(-1, n, dim)
Z = Z + linear(Y_reshape)
Z = Z + MHA(Z)
外部多头自注意力
Z_new = Z + FFN(Z)
外部全连接网络
return Z_new, Y_new
}
7.2.2 参数化跳跃连接
参数化跳跃连接通过引入恒等映射之外的带参数的投影来更好地丰富特征多样性和防止特征坍塌。参数化跳连和多头自注意力模块(MSA)模块是并行的,其表示形式见式(6):
A?????(??)=M??(??)+??+Σ??=1???(??;Θ??),?∈[1,2,⋯,?] ................................ (6)
式中:
Tli(⋅)——在第l层中的第i条参数化的跳连Θli表示它的参数。
在一层中,共包含T条参数化跳连。除了原来的跳连,参数化跳连提供了更多的替代路径来绕过注意力机制。与恒等投影直接将输入块复制到相应的输出不同,参数化投影可以将输入特征转换为另一个特征空间。不同参数化跳连的权重矩阵不同,Tli(⋅)对输入特征进行不同的变换,因此更多的参数化跳连并行可丰富特征空间。
T/AI 115.2—2024
21
参数化跳连Tli(⋅)的一个简单实现形式见式(7):
???(??;Θ??)=?(??Θ??),?∈[1,⋯,?],?∈[1,2,⋯,?] ..................................... (7)
式中:
σ —— 激活函数(例如GeLU);
Θ?? —— 权重矩阵;
T??(Z?;Θ??) —— 独立地对不同图像块的特征作变换,保留其独特属性。
注:
考虑到在自注意力网络中跳连同时存在于多头自注意力模块(MSA)和多层感知机模块(MLP),参数化跳连也可以类似地嵌入到多层感知机模块(MLP)中,见式(8):
A?????(?′?)=M??(?′?)+?′?+Σ??=1???(?′?;Θ′??),?∈[1,2,⋯,?] ......................... (8)
式中:
Z′l —— 多层感知机模块(MLP)的输入。
7.2.3 基于循环矩阵的高效部署
直接部署7.2.1和7.2.2等方法需要引入矩阵乘法运算将消耗极大的计算代价。本文件使用分块循环矩阵来实现高效的部署。
首先,将原矩阵Θ划分成b×b个子矩阵,见式(9):
Θ=[ ?11?12⋯?1??21?22⋯?2?⋮⋮⋮⋮??1??2⋯???] .............................................................. (9)
每个子矩阵???都是循环矩阵,它可以通过循环一个向量中的元素得到,见式(10):
???=????(???)=[ ?1????′??⋯?3???2???2???1????′???3??⋮?2???1??⋱⋮??′−1??⋱⋱??????′????′−1??⋯?2???1??] ........................................ (10)
循环矩阵通过傅里叶变换进行计算。在计算中,输入特征先被划分成多个小块特征,后进行做快速傅里叶变换。在频域内,特征和权重做逐点的相乘运算,再通过逆傅里叶变换将计算结果映射回空间域。循环矩阵输出如式(11)所示:
?(?)?=?(Σ??=1?????)=?(Σ??=1IFFT(FFT(??)∘FFT(???))) .............. (11)
式中:
FFT——快速傅里叶变换;
IFFT——快速傅里叶逆变换;
T(Z)=[T(Z)1;T(Z)2;⋯;T(Z)b]。
分别将参数化跳连并联到Transformer模型的多头自注意力模块(MSA)和多层感知机模块(MLP)将得到增强的多头自注意力模块和增强的多层感知机模块。交替堆叠这两个模块构成整个增强的Transformer模型。
T/AI 115.2—2024
22
基于参数化跳连的Transformer模块模块的操作定义见表18,伪代码见表41。
表 41 基于参数化跳连的Transformer模块伪代码描述
基于参数化跳连的Transformer模块
描述符
def aug_transformer(Z){
Z = Z+ MHA(Z) +sum(augshortcut(Z),n)
与MSA模块并联参数化跳连
Z _new = Z+ FFN(Z) + sum(augshortcut(Z),m)
与MLP模块并联参数化跳连
return Z_new
}
7.2.4 归一化加速
Transformer网络目前普遍采用了层归一化(LayerNorm)算子,而在推理网络时,该算子不仅需要在线计算过程,还需要复杂的开方操作,影响Transformer网络的运行速度和内存需求。归一化加速方法利用数据的先验统计信息,作用于相邻的线性操作中,其计算方法为:
Y=γ??+β .................................................................... (12)
式中:
γ,σ,β —— 均为常数,可合并至相邻线性层的计算当中。
注:
该方法训练过程分为前向过程和反向过程。
7.2.4.1 前向过程
给定一个网络的输入Xt∈RB×C,则可以通过当前方差以及历史方差得到更加准确的平滑方差:
??2=1?Σ??2??=1 .............................................................. (13)
?̂?2=√Π??−?2?−1?=0? ......................................................... (14)
计算输出值见式(15)和式(16):
??=??√?̂?2+∈ ..................................................................... (15)
??=???+β .................................................................. (16)
平滑后的方差被更新到推理用的方差中:
?2=??2+(1−?)?̂?2 ................................................. (17)
T/AI 115.2—2024
23
7.2.4.2 反向过程
由于在前向过程中引入了对统计值的平滑,所以采用平滑策略近似梯度计算反向过程中的梯度代价。Zt的梯度计算方法见式(18):
?????=?????? ....................................................................... (18)
平滑方差的梯度估计方法见式(19)和式(20):
??̂?2=1?Σ???????=1?? ......................................................... (19)
??̂?2=α??̂?−12+(1−?)1?Σ??̂?−?2?−1?=0 .......................... (20)
输出的梯度见式(21):
?????=1√?̂?2+∈(?????−????̂?2) ............................................. (21)
Transformer统一归一化层模块操作定义模块的操作定义见表19,伪代码见表42。
表 42 Transformer统一归一化层推理前向伪代码描述
Transformer统一归一化层推理前向模块
描述符
def unified_norm(x, ?2,γ,β){
X_norm = x/√?2
归一化
Y=γXnorm+β
仿射变换
Return Y
}
7.2.5 多模态融合模块
多模态融合模块利用不同模态之间的对齐特性,将不同模态的信息自适应地进行混合,从而提高模态融合效果。多模态融合模块利用全连接网络构建一个评分模块sl(eml),对第1层的第m个模态的每个特征进行重要性评估:
êml=MSA(LN(eml)∙sl(eml)) ............................................................ (22)
eml+1=MLP(LN(êml)) ................................................................... (23)
对评分模块施加L1约束使其在训练中稀疏化,即引入损失函数Σ|sl(eml)|Ll=1。
跨模态的交互通过评分模块的分值来引导:
eml=eml⨀?sl(eml)≥θ+Projm′M(eml)⨀?sl(eml)<θ ........................................... (24)
其中I为指示函数,θ=0.01是一个阈值,⨀表示按元素相乘,Projm′M(eml)表示将第m模态的特征eml投影至第m′模态得到对应特征。当一个模态特征被替换时,利用残差结构的位置编码保留其位置特性。
当输入模态多于两个时,为了防止模态间替换混乱,模态间的特征混合方案以随机产生的形式固定为一种分配方案am′(m)∈{0,1}N,该模态间的特征混合表达式为:
eml=eml⨀?sl(eml)≥θ+Σam′(m)⨀Projm′M(eml)⨀?sl(eml)<θMm′=1,m′≠m ..................... (25)
T/AI 115.2—2024
24
Transformer多模态融合模块操作定义模块的操作定义见表20,伪代码见表43。
表 43 Transformer多模态融合模块伪代码描述
Transformer多模态融合模块
描述符
def tokenfusion(x1, x2, score1, score2, threshold){
x1_new = x1
x2_new = x2
index1 = np.argwhere(score1 < threshold)
模态1重要性低的token坐标
x1_new[index1] = x2[proj_1_to_2(index1)]
模态1低分值token用模态2替换
index2 = np.argwhere(score2 < threshold)
模态2重要性低的token坐标
x2_new[index2] = x1[proj_2_to_1(index2)]
模态2低分值token用模态1替换
return x1_new, x2_new
}
7.3 大模型加速压缩流程
7.3.1 量化
7.3.1.1 概述
大规模预训练模型的量化是提高计算效率和减少模型复杂度的关键手段。量化的核心在于减少模型中参数的表示精度,通过降低数值精度来减小存储需求和加速计算过程,同时尽量维持模型的性能不变。量化技术能与多种模型优化策略相结合,比如剪枝技术,可以在量化前对模型进行剪枝,进一步优化模型效率。在执行量化之后,模型的每个权重都会被转换成较低精度的格式,例如,仅使用较少的位来表示每个权重值。特别是对于那些已经通过剪枝操作精简过的模型,量化可以直接应用于这些被保留下来的权重,从而实现额外的效率提升。量化过程中,可以根据权重的重要性来决定其量化的程度,这与剪枝时选取保留权重的策略相似。
7.3.1.2 量化准则
7.3.1.2.1 大规模预训练模型仿射变换量化算法准则
仿射变换量化的算法可用于优化规模预训练模型的免训练量化,通过直接应用等效的仿射变换来优化模型;同时,扩展了优化的范围,包括权重的缩放、平移等变换,从而显著减少量化过程中的误差。该算法利用仿射变换的逆矩阵来保持量化前后模型输出的等效性,并引入基于Levy-Desplanques定理的渐进式掩码优化方法,以确保矩阵优化过程的稳定性。具体算法流程如下。
a
) 对给定的大规模预训练模型,应用仿射变换矩阵优化权重分布。
1)
伪量化函数定义为:
?(?)=Δ∗(clamp(⌊?Δ⌉+??,0,2?−1)−??) ....................................... (26)
式中:
Δ、??、? 分别代表量化步长、量化零点和比特位。
T/AI 115.2—2024
25
2)
对于单个线性层,仿射量化(AffineQuant)优化方法为:
argmin?∥∥??−??−1?(??)∥∥?2 .................................................... (27)
式中:
?、?、?、?(∙) 分别表示仿射变换矩阵、权重矩阵、量化函数、激活值。
仿射量化将仿射变换矩阵 A 左乘以权重矩阵 W,以更好地将权重分布与量化函数Q(∙)对齐。扩大优化空间可以减小转换权重中的量化误差,从而减少困惑度。同时将仿射变换矩阵 A 的逆函数右乘以激活值 X,以保持激活和权重之间矩阵乘法输出的不变性。
3)
在大型语言模型量化中,仿射量化的优化目标如下:
arg⁡min?,?∥∥??(?,?)−??((?−?)?−1,?(??),?+??)∥∥?2 ............................. (28)
式中:
?? —— 第i个Transformer块;
(?−?)?−1 —— 等效变换后得到的激活权重和偏差;
?(??) —— 等效变换后得到的激活权重和偏差;
?+?? —— 等效变换后得到的激活权重和偏差;
AffineQuant 结合了放射变化和平移交换,并使用Transformer块量化前和量化后输出的均方误差为优化目标。
b
) 使用逆仿射变换矩阵处理激活值,以保持输出的一致性。
若每个对角元素的绝对值大于相应行中其余元素的绝对值之和,则矩阵A被视为严格对角占优。数学表达为,
|???|>⁡Σ|???|?≠? ................................................................... (29)
在Levy-Desplanques定理中还规定了所有严格对角占优矩阵都是可逆的。
c
) 使用渐进式掩码,以优化矩阵稳定性。
为了确保仿射变换矩阵在优化过程中严格保持对角元素占主导地位,在每个优化块开始时,通过渐进掩码方法,固定除了主对角线上的元素之外的所有元素,随着优化进行,逐渐解冻主对角线附近的元素,所有矩阵元素都变得可学习以进行优化:
????={1?=??0<|?−?|≤??× hidden⁡size 0 otherwise ........................................... (30)
式中:
???? —— 掩码矩阵的第i行第j列元素;
T —— 目标epoch;
e∈[1,t] —— 当前的epoch;
hidden size —— 仿射变换矩阵的维数;
α —— 稳定因子。
在每个优化块开始时,冻结除了主对角线上的元素。在注意力模块中,在每个注意力头中一致
T/AI 115.2—2024
26
更新,因为它们不受严格对角占优矩阵的约束。相反,远离主对角线的元素最初被冻结,随着优化过程逐渐解冻,其按稳定因子α缩放。伪代码见表44。
表 44 仿射变换量化伪代码描述
仿射变换量化
描述符
quantize(W,X,A, GM,group_size,scale,qmin,qmax){
A_inverse = A.mul(GM).inverse();
W = W.matmul(A.mul(GM)).t();
X = A.mul(GM).inverse().t().matmul(X)
If(group_size>0){
dim1, dim2 = W.shape
W = W.reshape(-1, group_size)
}
W_int = ((W / scale).round()-(W / scale)).detach()+(W / scale)
W_int = W _int.clamp(qmin, qmax)
W_dequant = W_int.mul(scale)
W_dequant = W_dequant.reshape(dim1, dim2)
}
7.3.1.2.2 视觉Transformer量化补偿和级联优化
低比特无训练量化引入了通道补偿方案,在Transformer的add的相关层采用量化补偿系数对不同通道进行补偿。并且以Block为重构单元,对网络权重和激活值进行级联地联合优化。具体流程如下。
a)
通道补偿:
1)
对于shortcut的add层,使用逐通道的补偿系数scale和bias,用于调整通道的分布。插入逐通道的scale和bias算子后,其前向过程替换为:y=scale∙x+bias;
2)
通道补偿可调整输出的分布。对y进行量化,可以避免较大的性能损失。对相连的层则需要减去bias,除以scale,以保持一致。该操作如果对应矩阵乘法或者其他线性操作,可以被合并到该线性操作里。
b)
级联重构优化:
1)
先对激活值和权重量化间隔做限制的联合优化,再重构权重。首先,选取一个基本单元,其内部第i个单元的权重和激活值的量化间隔分别swi和sai。以MSE 为损失函数优化量化间隔,优化目标如下:
?????,??⁡‖?(??+??,??+??)−?(??,??)‖2 ............................................... (31)
?.?.|??|<???,|??|<??? ...................................................... (32)
T/AI 115.2—2024
27
式中:
??、??——离线统计得到的量化间隔。
2)
对基本单元的权重进行重构,使其在量化中自适应的向上或向下取整。优化的目标函数为:
argminδW‖?(?+??)−?(?)‖ ........................................................ (33)
级联重构量化的伪代码描述见表45。

收藏本站 | 热门资料 | 联系我们 | 下载帮助 | 下载声明 | 信息反馈 | 网站地图