小黄搞AI_大模型面试100问¶
来源 PDF:
小黄搞AI_大模型面试100问.pdf
主题:Transformer / 基础架构
页数:267
字符数:240498
索引片段数:585
摘要¶
⼩⻩搞AI-LLM⾯试问题 ⽬录 1.Transformer前馈神经⽹络⽤的是什么激活函数? 2.解释-下Lora的原理 3.Lora是怎样进⾏初始化矩阵的 4.解释-下AdaLora和QLora的原理 5.解释-下Adapter 6.介绍⼏种常⻅的Adapter 7.解释-下prefix-tuning 8.解释-下P-tuning 9.解释-下Prompt-tuning 10.解释⼀下混合精度的原理 11.训练的时候⽤float16、bfloat16还是float32,为什么? 12.怎
代表性原文片段¶
片段 1¶
⼩⻩搞AI-LLM⾯试问题 ⽬录 1.Transformer前馈神经⽹络⽤的是什么激活函数? 2.解释-下Lora的原理 3.Lora是怎样进⾏初始化矩阵的 4.解释-下AdaLora和QLora的原理 5.解释-下Adapter 6.介绍⼏种常⻅的Adapter 7.解释-下prefix-tuning 8.解释-下P-tuning 9.解释-下Prompt-tuning 10.解释⼀下混合精度的原理 11.训练的时候⽤float16、bfloat16还是float32,为什么? 12.怎么解决训练使⽤float16导致溢出的问题 13.CLM和MLM分别是什么,有什么区别? 14.GLM的⾃回归空⽩填充⽅法与BERT中的使⽤遮蔽语⾔模型(MLM)有什么不同,为⾃然语⾔理解 (NLU)任务带来了哪些优势 15.了解迁移学习吗?⼤模型中是怎么运⽤迁移学习的? 16.Encoder-only、Decoder-only和Encoder-Decoder的模型分别有什么区别,怎么运⽤? 17.为什么现在的⼤语⾔模型都⽤Decoder-only
片段 2¶
6.Encoder-only、Decoder-only和Encoder-Decoder的模型分别有什么区别,怎么运⽤? 17.为什么现在的⼤语⾔模型都⽤Decoder-only 18.简述-下Transformer的基本结构和原理 19.Transformer为什么使⽤多头注意⼒机制? 20.Transformer为何让Q(查询)和K(键)使⽤独⽴的权重矩阵进⾏计算,为什么需要Q、K、V(查询、 键、值)三个矩阵? 21.为什么在attention中要进⾏scaled(为什么除以\sqrt{d_k})? 22.Transformer的位置编码作⽤及局限性? 23.为什么Transformer⽤LayerNorm⽽不⽤BatchNorm? 24.解释-下KVcache的原理
25.Transformer相⽐RNN、LSTM的优势何在? 26.Transformer在哪⾥做了权重共享? 27.介绍⼀下VLLM的加速⽅法 28.介绍-下FlashAttention的原理 29.介绍-下Tokenizer怎么训练的 30.WordPiece如何考虑语⾔模型的概率
片段 3¶
7.介绍⼀下VLLM的加速⽅法 28.介绍-下FlashAttention的原理 29.介绍-下Tokenizer怎么训练的 30.WordPiece如何考虑语⾔模型的概率 31.介绍-下BPE&BBPE这两种Tokenization⽅法 32.介绍-下RoPE位置编码 33.旋转位置编码为什么⽐绝对位置编码更好 34.RMSNorm正则化有什么好处和优势 35.介绍⼀下Bert的结构 36.SwiGLU激活函数的原理 37.为什么⼤模型⽤GQA(GroupQueryAttention) 38.介绍⼀下Llama的结构 39.Llama模型在训练过程中如何处理梯度消失和梯度爆炸的问题 40.DeepSpeed中ZeRO系列的原理 41.解释下强化学习 42.强化学习中策略函数和值函数是什么 43.DPO的原理 44.PPO的原理 45.分析-下DPO和PPO的区别 46.DPO的正负样本怎么构造 47.DPO的loss是什么? 48.OpenAl对⻬为什么要⽤强化学习,别的⽅法不⾏吗? 49.预训练和微调任务有什么区别,两者的⽬的 50.SFT后会出现哪些问题
片段 4¶
47.DPO的loss是什么? 48.OpenAl对⻬为什么要⽤强化学习,别的⽅法不⾏吗? 49.预训练和微调任务有什么区别,两者的⽬的 50.SFT后会出现哪些问题 51.什么是MOE(混合专家模型) 52.Dense和MOE模型的区别 53.介绍-下Qwen通义千问的结构 54.Qwen2有哪些提升? 55.介绍-下Llama3.1的创新
56.⼿撕⾃注意⼒机制(⽤Pytorch)(SelfAttention) 57.⼿撕⾃注意⼒机制(不⽤Pytorch)(SelfAttention) 58.⼿撕多头注意⼒机制(⽤Pytorch)(MultiHeadAttention) 59.⼿撕多头注意⼒机制(不⽤Pytorch)(MultiHeadAttention) 60.⼿撕MQA 61.⼿撕绝对位置编码 62.⼿撕RoPE 63.⼿撕Transformer中FFN代码 64.⼿撕LayerNorm 65.⼿撕RMSNorm 66.⼿撕flash-attention 67.如何缓解⼤模型inference的时候的重复问题
片段 5¶
er中FFN代码 64.⼿撕LayerNorm 65.⼿撕RMSNorm 66.⼿撕flash-attention 67.如何缓解⼤模型inference的时候的重复问题 68.训练时数据⻓度不⼀致怎么办,以及如何优化训练速度69.什么是Prefill-Decode分离?为什么分 离? 70.什么是PRM过程监督奖励?OpenAl的秘密武器? 71.从huggingface下载模型时有哪些⽂件? 72.到底什么是端到端模型 73.什么叫⻓尾问题?怎么解决⻓尾分布问题? 74-Transformer模型中,最占⽤参数的是MLP层吗? 75-Transformer模型中计算量(FLOPs)的分析 76-Transformer模型中计算量(FLOPs)和参数的表格分析 77-什么是交叉熵损失函数?⼤模型的哪⾥有交叉熵损失函数? 78-什么是⻓度外推? 79-ALiBi(AttentionwithLinearBiases)思路是什么? 80-为什么需要增量预训练? 81-增量预训练的过程当中,loss上升正常吗?
片段 6¶
79-ALiBi(AttentionwithLinearBiases)思路是什么? 80-为什么需要增量预训练? 81-增量预训练的过程当中,loss上升正常吗? 82-在增量预训练过程中如何设置学习率(learningrate,LR)? 83-什么是warmup_ratio?训练过程中怎么设置? 84-Multi-headLatentAttention(多头隐变量注意⼒)是什么? 85-LinearAttention(线性注意⼒)是什么? 86-Cross-Attention(交叉注意⼒)是什么?
87-SparseAttention(稀疏注意⼒)是什么? 88-不同Attention之间的区别是什么? 89-GroupNormalization(GN)和InstanceNormalization(IN)的区别是什么? 90-不同的Normalization之间有什么区别? 91-强化学习算法是怎么分类的? 92-DeepSeekV3有啥技术特点? 93-为什么要优化KVcache?
片段 7¶
90-不同的Normalization之间有什么区别? 91-强化学习算法是怎么分类的? 92-DeepSeekV3有啥技术特点? 93-为什么要优化KVcache? 94-MLA(Multi-LinearAttention)是什么? 95-怎么理解DPO的损失函数? 96-DPO的微调流程 97-为什么需要混合精度训练? 98-NTK⻓度外推⽅法是什么? 99-为什么推理速度受限于显存带宽? 100-PPL(Perplexity)及其数学公式 101-⼤海捞针测试和概率探针分别是什么? 102-DeepSeek-R1-Zero⾥的Zero含义? 103-DeepSeek-R1-Zero中的强化学习(RL)的原理? 104-DeepSeek-R1-Zero有什么弊端 105-什么是冷启动?为什么要冷启动? 106-在DeepSeek-R1上PRM和MCTS是否有⽤? 107-Deepseek中蒸馏R1是什么?是否⽐从零RL训练是否更好?
- Transformer前馈神经⽹络⽤的是什么激活函数?
- Transformer前馈神经⽹络结构
片段 8¶
么?是否⽐从零RL训练是否更好?
- Transformer前馈神经⽹络⽤的是什么激活函数?
- Transformer前馈神经⽹络结构 Transformer中的每个编码器和解码器层除了⾃注意⼒机制外,还包含⼀个两层的 前馈神经⽹络 (Feed-ForwardNeuralNetwork,FFN),该⽹络应⽤在每个位置的向量上,是位置⽆关的。这个 前馈⽹络通常有以下结构: • 两层全连接⽹络 :第⼀层将输⼊的向量维度扩展到⼀个更⾼的维度,第⼆层将其缩⼩回原维度。 • ⾮线性激活函数 :在两层之间插⼊⼀个⾮线性激活函数来引⼊⾮线性能⼒。 FFN的通⽤公式可以表⽰为: FFN(x) = max(0, xW + 1 b )W + 1 2 b2 其中: • 是输⼊向量。 x • 和 是第⼀层的权重矩阵和偏置向量。 W1 b1 • 和 是第⼆层的权重矩阵和偏置向量。 W2 b2 • 表⽰激活函数ReLU(RectifiedLinearUnit) max(0, ⋅)
- 激活函数选择:ReLU
片段 9¶
是第⼆层的权重矩阵和偏置向量。 W2 b2 • 表⽰激活函数ReLU(RectifiedLinearUnit) max(0, ⋅) 2. 激活函数选择:ReLU 在原始的Transformer模型中,前馈神经⽹络中使⽤的激活函数是ReLU(RectifiedLinearUnit), 即: • ReLU的优势: ◦ ⾮线性能⼒:通过ReLU引⼊⾮线性,使得模型可以捕捉更复杂的特征。 ◦ 计算效率⾼:ReLU的计算⾮常简单,只需要取输⼊和零的最⼤值,不需要像Sigmoid或Tanh那 样计算复杂的指数函数,因此它适合深层神经⽹络的训练。
◦ 缓解梯度消失问题:相⽐Sigmoid或Tanh,ReLU在正区间的梯度为常数,避免了梯度消失的问 题。 3. ReLU的使⽤⽬的 ReLU在Transformer的前馈⽹络中被⼴泛应⽤,原因在于它能够在两个全连接层之间引⼊⾮线性变 换,帮助模型学习更复杂的特征表⽰。它的计算效率⾼且性能表现良好,尤其适合⼤型模型。 4. 其他激活函数的变体
片段 10¶
的前馈⽹络中被⼴泛应⽤,原因在于它能够在两个全连接层之间引⼊⾮线性变 换,帮助模型学习更复杂的特征表⽰。它的计算效率⾼且性能表现良好,尤其适合⼤型模型。 4. 其他激活函数的变体 尽管ReLU是原始Transformer模型中的默认激活函数,后续的模型也探索了其他激活函数,如: GELU(GaussianErrorLinearUnit):在某些变体中,GELU也被⽤作替代激活函数,尤其是在 更深层的模型中(如BERT)。GELU在零点附近平滑过渡,被认为在某些情况下能够带来更好的性 能。 GELU的公式是基于正态分布的累积分布函数(CDF),定义如下: GELU(x) = x ⋅ Φ(x) 其中 是标准正态分布的累积分布函数, 是输⼊值。累积分布函数 可以通过误差函数 来计算,其中 是误差函数,定义为: Φ(x) x Φ(x) Φ(x) = 1 + erf 2 1 [ ( 2 x )] erf erf(x) = e dt π 2 ∫0 x −t2 在实际应⽤中,误差函数 通常通过查表或使⽤特定的数学库来计算,以提⾼效率和准确性。 erf(x)
片段 11¶
2 x )] erf erf(x) = e dt π 2 ∫0 x −t2 在实际应⽤中,误差函数 通常通过查表或使⽤特定的数学库来计算,以提⾼效率和准确性。 erf(x) GELU函数的直观解释是:它结合了线性和⾮线性特性,当输⼊值较⼩的时候接近于0,当输⼊值较 ⼤的时候接近于1,这使得它在处理不同范围的输⼊时具有不同的激活特性。这种特性使得GELU在 某些情况下⽐传统的ReLU激活函数表现得更好。 5. 总结 • 原始Transformer前馈神经⽹络中的激活函数是ReLU,因为它能提供简单⾼效的⾮线性能⼒,适 合深度学习。 • ReLU的特点:计算简单、⾼效,能够缓解梯度消失问题。 • 其他变体中的激活函数:有些后续模型(如BERT)使⽤了GELU作为替代激活函数,以实现更好的 性能。 2. 解释⼀下Lora的原理 1. LoRA 的背景和问题 在预训练⼤规模模型时,微调整个模型的参数可能会带来较⼤的计算和存储开销。对于像GPT-3这样 的⼤型模型,直接微调所有参数不仅⾮常耗时,还需要⼤量的存储资源。 2. LoRA 的原理
片段 12¶
带来较⼤的计算和存储开销。对于像GPT-3这样 的⼤型模型,直接微调所有参数不仅⾮常耗时,还需要⼤量的存储资源。 2. LoRA 的原理
LoRA通过引⼊低秩矩阵分解,在微调时不再调整原始模型的所有权重,⽽是通过将权重矩阵分解成两 个较⼩的低秩矩阵来表⽰权重的变化。尽管预训练模型拥有⼤量的参数,但许多参数在特定任务的微 调过程中实际上是不活跃的。LoRA通过低秩分解的⽅式,只更新那些对特定任务最重要的参数,这样 做可以在保持模型性能的同时,显著减少微调所需的计算资源和时间。 假设某个层的权重矩阵为 ,LoRA不微调 本⾝,⽽是通过两个低秩矩阵 和 来近似微调权重矩阵。LoRA的权重更新公式为: W ∈ Rd×k W A ∈ Rd×r B ∈ Rr×k W = new W + ΔW = r α W + (A × r α B) • :微调后的权重矩阵。 Wnew • :预训练模型的原始权重矩阵,保持不变。 W • 和 :低秩矩阵, 近似于权重变化量 。 A B A × B ΔW
使用建议¶
- 这些内容来自授权公开 PDF 的文本抽取结果,网页端会基于同一份静态索引做关键词检索。
- 面试复习时建议先用网页 PDF 原文检索定位题目,再回到主 notes 学系统化答案。
- 如果片段出现排版噪声,以原 PDF 语义为准,并优先整理成自己的回答模板。