面试记录:Qwen14B有多少个注意力头?

前言

这个除了考察Qwen14B的参数细节之外,还有一个很重点的:Qwen-14B并不是传统的MHA中的QKV结构,而是GQA结构。

有多少个头

参考【免费下载】 深入探索Qwen2.5-14B模型的参数设置Qwen2.5-14B的参数设置如下:

名称 参数
参数数量 (含非嵌入参数)
层数
注意力头 个查询、个键值头
上下文长度
多语言支持

其中,个查询表示Q头,个键值头表示KV的头。因此,可以推算出,一共是Q头共用一对KV头。就像这样:

graph TB
A[V]---B[K]---C[Q]
B---D[Q]
B---E[Q]
B---F[Q]
B---G[Q]

GQA过程参考

首先,当然是把文字输入进去。对于用户的输入文本input_text,首先经过Embedding,将input_text转变为input_embeddingposition_embedding。这也就是大模型的第一层隐状态输出

第二层开始,输入都是上一层的隐状态。在此基础上,使用大模型构建的三个权重矩阵,以作为输入,计算出QKV,然后得到注意力

其中,参考上述参数,可以得到,Q矩阵的尺寸为,这里表示批量大小,表示输入文本的长度,表示注意力头维度。同理,KV尺寸相同,为

接下来,对于一共Q头,可以计算一共个输出:

其中,表示第Q头,表示第KV头,且满足

这一共,最终通过线性输出层,得到最终输出为

为什么使用这个方案?

我们知道,占据显存的主要是中间的KVCache

MHA中,对于Q头,就有KV头,而如果采用GQA这种几个Q头共用同一个KV头,就相当于只需要存储KV头,显存占用降低了