真实面经题目 · 原创解析
大语言模型的参数量具体指什么,如何估算一个 Transformer Block 的参数规模?
这道题考察模型参数量的数量级推导能力。参数量是可训练权重标量的数量,不等于显存、FLOPs 或上下文长度。好答案要能用 hidden size、FFN 中间维度、层数、词表大小估算一个 Transformer block,并说明 GQA/MQA、SwiGLU、MoE、权重共享、LoRA 和量化对成本含义的影响。
真实面经题目 · 原创解析
这道题考察模型参数量的数量级推导能力。参数量是可训练权重标量的数量,不等于显存、FLOPs 或上下文长度。好答案要能用 hidden size、FFN 中间维度、层数、词表大小估算一个 Transformer block,并说明 GQA/MQA、SwiGLU、MoE、权重共享、LoRA 和量化对成本含义的影响。
大模型参数量指模型中可训练权重标量的总数,包括 embedding、Attention 投影、FFN/MLP、Norm、bias 和输出头等。设 hidden size 为 d,FFN 中间维度为 m,标准 MHA 且 Q/K/V/O 都是 d 到 d,一个 Transformer block 的 attention 参数约 4d^2;标准 FFN 是 up d*m 和 down m*d,约 2dm;如果是 SwiGLU/GEGLU,有 gate 和 up 两个上投影,约 3dm。Norm 和 bias 是 O(d),估算时常可忽略。整模型粗略是 V*d + L*(4d^2 + 2dm) 或 SwiGLU 下 V*d + L*(4d^2 + 3dm),还要看 lm_head 是否和 embedding 共享权重。参数量不等于显存,训练还要算梯度、优化器状态、激活和通信缓冲,推理还要算 KV Cache。
参数量是模型中可训练标量的数量。它包括词表 embedding、Q/K/V/O 投影矩阵、FFN 权重、LayerNorm/RMSNorm 权重、bias 和 lm_head;不包括输入 token、激活值、KV Cache 或临时 buffer。
标准 MHA 在 hidden size 固定时,Wq、Wk、Wv、Wo 各是 d*d,总计约 4d^2。head 数增加不一定增加参数量,因为通常只是把同一个 d 维空间切成更多头。
标准 FFN 有上投影 d*m 和下投影 m*d,约 2dm。SwiGLU 或 GEGLU 通常有 gate 和 up 两个上投影,加上 down,总计约 3dm,因此 FFN 常是 LLM 参数大头。
总量约为词表 V*d,加 L 层 block 参数,再加输出头。若 embedding 和 lm_head 权重共享,只算一次 V*d;不共享则再加一份。Norm、bias 精确统计要算,粗估可忽略。
GQA/MQA 会减少 K/V 投影参数和 KV Cache;MoE 会增加总参数,但每个 token 只激活部分专家;LoRA 只增加低秩可训练参数;量化降低存储和带宽,不改变数学上的参数个数。
FP16/BF16 参数约 2 bytes/param,FP32 约 4 bytes/param;训练还要梯度、优化器状态和激活,推理还要 KV Cache。FLOPs 还受序列长度、batch、层数和 attention 复杂度影响。
通常基本不变。head 数改变的是每个 head 的维度划分,Q/K/V/O 仍是 d 到 d 的投影,总参数仍约 4d^2;但 kernel、并行效率和注意力实现可能变化。
对一个原始矩阵 W in R^{out x in},LoRA 加 A in R^{r x in} 和 B in R^{out x r},新增可训练参数是 r*(in+out)。对多个 target modules 求和即可。
推理只看参数存储时,FP16/BF16 约 2 bytes/param,INT8 约 1 byte/param,INT4 约 0.5 byte/param,另加 scale/metadata。训练还要梯度、优化器状态和激活,远大于单纯参数。
GQA/MQA 减少 key/value head 数,K/V 投影参数可能下降,推理时每层缓存的 K/V 向量也减少,因此长上下文下显存和带宽压力更小。