LLM 面试题

简单记录一下面试过程中问到的八股文吧

  1. Decoder-only的LLM大模型中,FFN是什么样的结构?
    答:一个2层的全连接网络,维度是先扩大4倍,再缩小为原来的1/4。

  2. 为什么FFN网络是先做宽,再做窄?(这一题我也没回答好)
    答:FFN通过增加中间层的维度,扩展了输入的表示空间。这种维度扩展有助于模型更好地学习输入序列的表示,从而提高了模型的性能。通常,FFN包括两个线性层,中间层的维度通常比输入向量的维度大,然后通过激活函数,最后再缩减回输入维度的维度。这个过程有助于模型更好地捕捉输入信息中的复杂性。
    先升维,将特征进行各种类型的特征组合,提高模型分辨能力;再降维,去除区分度低的组合特征。

  3. 修改multi-head attention中head的个数,会影响参数量吗?
    答:不会。一般来说,隐藏层的维度d_model,head的个数num_head,以及每个head的输出维度dim_head,满足这样一个关系:d_model = num_head * dim_head。num_head增加时,dim_head也会相应减少。其次,代码实现上来说,每个head的query,key,value都从根据num_head在大矩阵(最后一个维度是d_model)上的矩阵去做一个划分,总的维度并没有变化,所以参数量也没变。

  4. 简单介绍一下decoder-only的LLM结构
    答:文本信息通过分词器tokenizer变成一系列token,这些token再通过word embedding变成一个个词向量,词向量加上位置编码组成了LLM的输入。decoder-only的LLM一般是有多个Transformer layer堆叠而成。每个layer会有一个MHA和一个FFN,加上两个add-norm。现在主流的结构一般是pre-layer-norm,即先做layer-normalization,再做残差链接。多个Transformer layer堆叠之后,最后会通过一个Layer-norm和一个softmax层给出输出。

  5. 大模型中top_k, top_p, temperature,这三个参数分别是什么?
    答:LLM大模型的输出是经过softmax层之后,每个token的概率。top_k, top_p, temperature,这三个参数都是用来调试大模型输出多样性的。下面依次解释。

  • top_k,是指top_k采样。LLM大模型的输出是预测每个token出现的概率,top_k表示从概率最大的k个token中选择一个用来解码输出。如果 top_k 设置为1,表示永远只选择概率最大的token,类似于greedy-decoding。如果 top_k 设置为词表大小,那么模型会考虑所有的token,这相当于没有使用 “Top-K sampling”。
  • top_p,是指Nucleus sampling(核采样)或者top-p采样。top_p sampling不是选择概率最高的前k个词,而是在累计概率超过p的最少的token组成的集合中,选择一个token用作解码输出。如果 top_p 设置为0.9,那么模型会选择概率最高的一部分词,使得这些token的概率之和 $\geq$ 0.9。如果 top_p 设置为1.0,那么模型会考虑所有的token,这相当于没有使用 “Top-P sampling”。
  • 温度系数 temperature
    温度系数T实际上影响的是最后softmax的输出:$\text{softmax}(x_j) = \frac{exp(x_j/T)}{\sum_i exp(x_i/T)}$。T越大归一化后的概率分布越均匀,而T越小概率分布越陡峭。因此大的T会增加模型输出的随机性,而小的T则会让模型的输出更加固定。这也是“温度系数影响模型创造性”说法的原因。