LLM 网络结构的优化:SwiGLU 激活函数
SwiGLU 激活函数的全称是 Swish‑Gated Linear Unit,现在已经成为 LLM 中的标配激活函数,实际上,SwiGLU 激活函数是由两部分组成的,分别是 Swish 激活函数和 GLU(Gated Linear Unit)激活函数,集合了两个激活函数的特点。
SwiGLU 激活函数的全称是 Swish‑Gated Linear Unit,现在已经成为 LLM 中的标配激活函数,实际上,SwiGLU 激活函数是由两部分组成的,分别是 Swish 激活函数和 GLU(Gated Linear Unit)激活函数,集合了两个激活函数的特点。
在 MHA 框架下,结合 KV Cache 的空间换时间,能够极大加速 LLM 的推理,但是对于推理来说,GPU 的显存资源尤其珍贵,这就出现了针对 KV Cache 进一步缩减空间的方案,MQA 和 GQA 就是针对 MHA 的精简方案,通过缩减 K 矩阵和 V 矩阵,达到缩减 KV Cache 的效果。
Batch Norm 的归一化方法不适合在文本模型上做归一化,最重要的原因是文本长度并不固定,同时,基于 Batch Norm 的方法会破坏文本 token 之间的相对顺序,因此才有了 Layer Norm,同时,为了简化,又可以省略掉均值,因此就有了 RMS Norm,针对 Norm 在网络中的位置,Pre Norm 相比较与 Post Norm 来说,使得网络更加容易训练。
LoRA 技术结合了残差连接的思想,针对新的训练数据,在固定住原始的矩阵的前提下,通过残差的方式进行微调,同时为了进一步减少参数的量,对微调矩阵进行低秩分解,进一步减少了需要学习的参数的量。
KV Cache 的提出,将 LLM 的推理过程分成了两个阶段,分别是 Prefill 阶段和 Decode 阶段,其中,Prefill 阶段处理的是 LLM 的 Prompt,用于产出首个 Token 以及存储 Prompt 中所有 Token 的 K 向量和 V 向量,此阶段算力要优先于内存的带宽;Decode 阶段则是根据新生成的 Token 以及历史所有 Token 的 K 向量和 ...
LLM 在推理阶段,其实用到的是最终 Embedding 矩阵的最后一行,而影响最后一行的最关键的计算是 Attention 的计算,进而在 Attention 中与其相关的是新增 Token 的 Q 向量,完整 Input 的 K 矩阵以及完整 Input 的 V 矩阵,因此,我们可以将该新增 Token 之前所有 Token 对应的 K,V 向量缓存起来,这便形成了 KV Cache。
RoBERTa,全称是 A Robustly Optimized BERT Pretraining Approach,从名字来看是 BERT 的增强版。模型结构与 BERT 完全相同,不同的是在模型的训练上,通过对 BERT 的训练过程的优化,进一步的提升下游任务的表现,且相较于 BERT 来说具有更强的鲁棒性。
FastChat 是一个开源的用于训练,评估以及部署大模型的框架,本文聚焦在模型的推理部分,从源码的角度介绍其基本的工作原理。</p> <p>利用 FastChat 框架部署一个完整的模型服务主要分为三个部分,分别为: Controller , Server 以及多个 Worker 。
在TinyBERT中,精简了BERT模型的大小,设计了三种层的蒸馏,分别为transformer-layer,embedding-layer以及prediction-layer。同时,为了能够对以上三层的蒸馏,文中设计了两阶段的训练过程,分别与BERT的训练过程对应,即预训练和fine-tunning。
Distilled BiLSTM是对于知识蒸馏较为一般性的实践,将BERT模型(Teacher)蒸馏到一个简单的BiLSTM模型(Student),蒸馏的目标函数中的蒸馏loss也是采用了对比logits结果的差异。虽然理论上较为简单,但是最终的结果是与与ELMo模型具有相同的效果,说明知识蒸馏的方法的有效性。
Bidirectional Encoder Representation from Transformers(BERT),即双向Transformer的Encoder表示,是2018年提出的一种基于上下文的预训练模型,通过大量语料学习到每个词的一般性embedding形式,学习到与上下文无关的语义向量表示,以此实现对多义词的建模。
Google于2017年提出了解决Seq2Seq问题的Transformer模型,用Self-Attention的结构完全代替了传统的基于RNN的建模方法,同时在Transformer的模块中加入了词序的信息,最终在翻译任务上取得了比RNN更好的成绩。
GPT模型中通过采用Transformer结构中的Decoder作为语义模型的提取模型,可以显著提升文本语义的学习能力,同时两阶段的学习方法对于可以方便的将GPT应用在不同的任务中。
与原始的Encoder-Decoder模型相比,加入Attention机制后最大的区别就是原始的Encoder将所有输入信息都编码进一个固定长度的向量之中。而加入Attention后,Encoder将输入编码成一个向量的序列,在Decoder的时候,每一步都会选择性的从向量序列中挑选一个集合进行进一步处理。这样,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息。
ELMo通过大量语料训练出与上下文无关的一系列向量表示,不同层级的向量带有不同的语言,包括了词法信息,句法信息以及语义信息,通过不同的组合,并在具体的上下文环境中微调得到带有上下文的词向量表示,并能够应用到具体的下游任务中。