记录面试问题(以下问题不分先后顺序)
- 大模型的位置编码
- 大模型的参数,如temperature
- Linux下怎么跑代码
- transformer架构
- QKV的计算,为什么要除以dk
- eval()作用
- llama架构
- padding的加入会影响计算,那怎么处理
解答:
1.由于我简历写的是tele模型,位置编码:使用 Rotary Embedding 的位置编码方法,该方法将相对位置信息依赖集成到 self-attention 中,并且具有较好的位置外推性。Rotary Embedding还可以较好地与Flash-Attention v2 配合使用,将模型的训练速度提升约20%。
2.temperature:控制生成文本的随机性
- 低温度(接近0):输出更确定和保守,选择概率最高的词,生成的文本较为确定但可能缺乏创意。
- 高温度(如1以上):增加随机性,选择概率较低的词,生成的文本更具创意但也可能不连贯或不合理。
Top-k:在每一步生成时,只从概率最高的 k 个词中进行选择。
- 作用:减少低概率词被选择的机会,生成的文本更合理。
Top-p:选择累积概率达到 p 的词集合,然后从中采样。
- 作用:自适应地选择词的集合,不局限于固定数量,生成文本更自然。
Max Tokens:控制文本的最大长度
Repetition Penalty:对重复的词施加惩罚。
- 作用:减少生成文本中的重复内容,提高多样性。
3.随便搜
4.随便搜
5.避免数值过大,以防梯度消失或爆炸,使其更加稳定
6.model.eval():将模型切换到评估模式,禁用Dropout和固定Batch Normalization参数。通常结合使用torch.no_grad():禁用梯度计算,减少内存消耗,提高推理速度。
7.only-decoder
用不到十分之一的参数实现了GPT系列模型的性能
改进:
输入数据使用了均方层归一化函数RMSNorm
激活函数用swiGLU替代ReLU
在网络每层增加了旋转嵌入RoPE
8.在计算注意力分数时,使用attention_mask,填充部分的注意力权重设置为极小值,使得softmax输出接近于零,来忽略这部分影响。
在计算损失时,可以使用 ignore_index 参数来忽略填充标记的损失。
在RNN模型上,可以使用 pack_padded_sequence 和 pad_packed_sequence 函数。