前言

经历了一系列的学习,也是终于来到了大模型的部分,当下主流的大语言模型LLM基本都是基于transformer架构的decoder。那么它们又有什么区别呢?都是如何做出创新和优化的呢?
在这里插入图片描述

模型的改变

混合专家模型(Mixture of Experts,MoE)

在Feed Forward部分,实际就是对应最终的分类头,参数量可能达到千万数量级,还是太大了,为了解决这个问题,于是在deepseek的模型里就使用了混合专家模型。

所谓专家模型,就是设置了一个gate和一众专家expert,gate会给出不同专家意见的权重,专家会给出对于输入的评价
在这里插入图片描述

全加型专家模型

顾名思义,综合全部专家意见,直接加起来。
在这里插入图片描述
但是计算量仍然太大。

挑选型专家模型 Sparse MOE

所以,我们打算让每个token只经过部分专家即可。具体做法是遍历所有专家,让专家总token里挑选适合自己的token,然后结合router给出的权重,得出output

混合型专家模型 Shared MOE

也就是deepseek的做法
在这里插入图片描述

MOE的负载均衡

避免部分专家负荷过大

MOE的作用

MOE是典型的时间换空间的做法,MOE比起常规的做法参数量更大,但是计算量减少,激活更少的单元

旋转位置编码(Rotary Position Embedding,rope)

我们传统的位置编码就是很简单把位置加上去,旋转位置编码让每一个token乘一个正交矩阵,将token内每一维的值做一个旋转这样可以使得token的维度内数值对旋转角度更加敏感,更容易反映出位置的变化。实际上Q和K都被赋予了一个旋转矩阵,做了旋转的Q和K转置相乘得出的就是刚才用来乘token的正交矩阵
在这里插入图片描述
在这里插入图片描述

多头潜在注意力(Multi-head Latent Attention,MLA)

我们知道,K和V的大小取决于token的长度,大模型的token往往数量非常大,这就导致K和V的大小爆炸。为了解决这个问题,我们让每个token保留自己的Q,分组共享K,这样就极大地减少了K的数量,从而降低计算和存储的压力

LORA(Low Rank Adaptation,低秩适配器)

在这里插入图片描述

MLA

MLA也是用来减少计算量和cache空间的。传统来说,我们的cache要存储所有token的k和v,而现在,根据前面的LORA,一个矩阵可以被拆成低秩矩阵相乘。所以,进行如下拆分,CKV是低秩矩阵,我们存储CKV即可还原K和V,节省了存储空间。
在这里插入图片描述
在注意力计算过程中,出现了矩阵吸收的现象,减少了计算量
在这里插入图片描述
在deepseek的实战中,由于使用了rope,破坏了矩阵吸收,导致计算无法被简化,于是采用部分注意力存储CKV,部分直接存储并使用rope,Q也要做对应处理。
在这里插入图片描述

Swiglu

在这里插入图片描述

RMSNorm

在这里插入图片描述

训练的改变

有监督微调(Supervised Fine-Tuning, SFT)

在这里插入图片描述

人类反馈强化学习 RLHF

在这里插入图片描述

更多推荐