ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

小林coding-大模型工程面试题

小林coding-大模型工程面试题 目录1什么是大语言模型和传统 NLP 模型有什么区别2讲讲 Transformer 架构基本原理Encoder 和 Decoder 是什么3多头注意力MHA有哪些局限MQA、GQA、Flash Attention 怎么解决4大模型的位置编码是干什么用的sin/cos、RoPE、ALiBi 有什么区别5什么是大模型项目的分词器原理是什么6大模型是怎么训练出来的7 什么是 Scaling Law大模型的「涌现能力」是怎么回事8大模型微调的方案有哪些9请讲一下 LoRA 技术除了减少参数量它还有哪些优点10SFT 之后还有哪些 Post-TrainingRLHF、DPO、GRPO、拒绝采样什么关系11大模型的 DPO 和 PPO 的区别是什么12大模型生成文本时的解码策略有哪些贪心、Beam Search、采样分别什么时候用13大模型的参数温度值、Top-P、Top-K 分别是什么各个场景下的最佳设置是什么14 KV Cache 是什么Prompt Caching 的原理是什么15大模型量化是什么INT8/INT4/AWQ/GPTQ 怎么选16如何写好 Prompt分享下 Prompt 工程实践经验17什么是 CoT为啥效果好它有什么缺点或局限性18大模型为什么会出现幻觉怎么缓解19MoE 混合专家模型是什么DeepSeek V3、Qwen 为什么用 MoE20大模型部署有哪些主流方案vLLM、TGI、llama.cpp、SGLang 实际项目里怎么选21大模型能力评测指标有哪些22对比使用过哪些主流大模型你们项目中最终选用了哪个模型为什么23为什么长上下文会出现 Lost in the Middle上下文窗口越大越好吗24总结1什么是大语言模型和传统 NLP 模型有什么区别我理解大语言模型的本质是一个用海量资料预训练、参数到百亿千亿规模、自回归生成文本的统一模型。它和传统 NLP 模型最根本的区别有三点。第一传统 NLP 是「一任务一模型」分词、命名实体识别、情感分析、问答各训各的每个模型只会干自己那点事LLM 是「一个模型干所有事」因为它在预训练阶段学的是「预测下一个 token」这件最通用的事下游任务用 Prompt 表达就行不用再分别训练。第二传统 NLP 模型是判别式的吃一段文本输出一个标签或概率LLM 是生成式的吃一段文本输出更多文本理解和生成在同一个模型里完成。第三也是最神奇的一点规模到了一定程度LLM 会「涌现」出训练目标里没有显式教过的能力比如多步推理、上下文学习、跨语言迁移这种「量变到质变」的现象在传统 NLP 模型上是看不到的。2讲讲 Transformer 架构基本原理Encoder 和 Decoder 是什么我理解 Transformer 最核心的创新是Self-Attention让每个 token 都能直接和序列里任意其他位置建立联系一次性并行计算彻底解决了RNN顺序计算慢、长距离信息衰减的两个老问题。//理解 Encoder 和 Decoder 的区别时我用这个角度Encoder 是双向的每个词能同时看前后文适合做「理解」类任务Decoder 是单向的只能看前面的词天然适合「生成」任务。//至于为什么现代大模型GPT、Claude、Qwen都选 Decoder-only核心原因是「预测下一个 token」这个训练目标极其统一、可以直接在海量无标注文本上做自监督学习规模越大涌现出的能力越强。3多头注意力MHA有哪些局限MQA、GQA、Flash Attention 怎么解决我理解 MHA 有三个核心痛点。第一是「显存爆炸」。推理时每个 head 都要为序列里所有 token 保存自己的 K 和 V 矩阵这就是 KV Cache。头数越多、序列越长显存占用越夸张。第二是「访存慢」。Attention 计算里softmax 那步要把整个 N×N 的注意力矩阵搬来搬去频繁读写 GPU 显存瓶颈不在算力而在「内存带宽」。第三是「N² 复杂度」。注意力分数矩阵是 N×N 的序列翻倍计算量翻 4 倍长上下文极其昂贵。MQA 让所有 head共享一份 K/V显存压到 1/H但表达力损失明显。GQA 是折中方案把 H 个 head 分成 G 组每组共享一份 K/V效果接近 MHA 但显存接近 MQA。Flash Attention 是另一条思路不改变 MHA 的结构而是从计算实现层面把 N×N 的注意力矩阵切成小块、用GPU 片上缓存做在线 softmax避免反复读写大矩阵显存从 O (N²) 降到 O (N)速度还更快。最关键的认知是MQA/GQA 是「结构层」的优化Flash Attention 是「实现层」的优化两者是叠加关系不冲突现在的主流模型基本上都是 GQA Flash Attention 一起用。4大模型的位置编码是干什么用的sin/cos、RoPE、ALiBi 有什么区别我理解位置编码要解决的问题本质上是 Self-Attention 的「位置盲」缺陷。Attention 的计算是对称的不管词序怎么变注意力分数都一样。「我打你」和「你打我」对模型来说是一回事所以必须显式注入位置信息。三种主流位置编码各有不同的设计哲学。第一种是 sin/cos绝对位置编码。给每个位置算一组固定的 sin/cos 值加到 token embedding 上。优点是简单、不需要训练参数缺点是「绝对位置」太死板模型实际关心的是「相对距离」。第二种是 RoPE旋转位置编码。它不是把位置信息「加」到 embedding 上而是「旋转」Q 和 K 向量。每个位置对应一个旋转角度位置越靠后旋转的角度越大。两个 token 做注意力时它们 Q/K 的点积自然带上了「相对距离」的信息。优点是相对位置直接编进了点积里、长上下文外推能力强。第三种是 ALiBi。最简单粗暴直接在注意力分数里加一个「距离惩罚」离得越远扣分越多斜率随 head 不同。优点是不引入任何可学习参数、长上下文外推天然就好缺点是表达力弱一些对位置的精细建模不如 RoPE。最关键的一句话是主流大模型几乎全部选择了 RoPE因为它在「相对位置编码 长上下文外推 兼容现代推理优化」三个维度上都最均衡。5什么是大模型项目的分词器原理是什么分词器Tokenizer是大模型的文本翻译官。负责把人类可读的字符串切割成模型能看懂的整数 Token ID推理结束后再把 Token ID 还原回文字。它是输入进模型前的第一道工序。6大模型是怎么训练出来的大模型训练我理解是分三个阶段每个阶段解决不同层次的问题。我用一个类比来记忆预训练就像一个人从小到大读了海量的书积累了语言能力和世界知识训练目标就是「预测下一个词」简单但威力巨大SFT(监督微调)是给这个博学的人做面试培训让他学会把知识转化成有问有答的对话形式而不是一直续写文章对齐阶段是给他做职业素养培训用RLHF或DPO让他的回答方式更符合人类偏好、更安全。三个阶段缺一不可预训练决定能力天花板SFT 给格式对齐给价值观这是目前所有主流大模型训练的基本框架。7 什么是 Scaling Law大模型的「涌现能力」是怎么回事Scaling Law缩放定律OpenAI 发现的经验规律简单说在保证训练数据充足的前提下增大模型参数量、增加训练数据量、延长训练计算量模型的损失会按照幂律平稳下降能力持续提升。涌现能力Emergent Ability模型规模比较小时某些任务表现很差当规模跨过一个临界点后能力突然大幅度跳变、一下子变好这种 “从小弱到强的突变现象” 就叫涌现。其实就是量变引起质变8大模型微调的方案有哪些我了解微调之后首先意识到的是微调不是首选而是最后手段。大多数问题先把 Prompt 写好、加 Few-shot 示例或者用 RAG 接外部知识基本都能解决。真正需要微调的场景是模型需要以特定风格持续输出、需要学会稳定的任务格式、或者需要大幅降低成本用小模型替代大模型。方案上LoRA/QLoRA 是最常用的因为它只训练一小部分参数普通 GPU 上就能跑不需要全量更新所有权重SFT是微调的目标形式让模型从续写模式变成指令回答模式有偏好对齐需求的话DPO 比 RLHF 简单得多、效果也不差。选模型不是看谁排行榜最高选微调方案也是同理核心是看资源约束和实际需求。9请讲一下 LoRA 技术除了减少参数量它还有哪些优点LoRA 我在项目里用过省参数这个优点大家都知道但它还有几个很实用的好处。第一个是推理零开销训练完之后LoRA 的 A、B 两个小矩阵可以直接合并回原始权重推理阶段完全不需要带额外模块速度和原始模型一样。第二个是部署特别灵活一个 7B 基础模型才 14GB每套 LoRA 只有几十 MB可以同时维护客服、代码、翻译几套 LoRA按请求类型热切换不需要为每个场景各跑一个完整模型。第三个是灾难性遗忘风险更低因为原始权重全程冻结只有旁路的小矩阵在学习相当于在原来知识旁边打补丁通用能力通常更容易保住。第四个是训练更稳定可训练参数少梯度空间小对学习率这类超参不那么敏感调参成本低。还有一个进阶的点是多个 LoRA 可以加权混合比如把指令遵循LoRA 和代码 LoRA 合并一下不用重新训练就能融合两种能力。10SFT 之后还有哪些 Post-TrainingRLHF、DPO、GRPO、拒绝采样什么关系Post-Training后训练就是预训练 Pretrain → SFT 监督微调之后继续对齐人类偏好的一系列训练流程目标让模型输出符合人类喜好。 SFT 是第一步对齐后面主流方案RLHF、DPO、GRPO、拒绝采样Rejection Sampling它们都是偏好对齐算法只是实现思路不同DPO/GRPO 是 RLHF 的替代方案拒绝采样是配套的数据增强手段。11大模型的 DPO 和 PPO 的区别是什么DPO 和 PPO 都是大模型对齐训练里的方法都是在 SFT 之后让模型的输出更符合人类期望。PPO 是强化学习里的一个算法在大模型里的用法是先额外训练一个「奖励模型」来给模型的回答打分然后用 PPO 这个RL 算法不断调整大模型的参数让它生成的内容往高分方向走。这套流程需要同时维护好几个模型工程复杂度高训练也容易不稳定所以成本比较大。DPO 是后来提出的简化方案它不需要单独训练奖励模型。它直接拿「人类偏好对」数据就是同一个问题的「好回答」和「差回答」让模型直接学「应该更像哪个」。更准确地说工程上可以把它理解成把复杂 RL 流程简化成监督学习问题只需要两个模型更稳定、更好实现。简单总结PPO 是「先训练裁判、再训练选手」DPO 是「直接拿比赛录像告诉选手哪个动作对哪个动作错」两者目标一致但 DPO 省去了裁判这个中间层。12大模型生成文本时的解码策略有哪些贪心、Beam Search、采样分别什么时候用我理解大模型的解码策略本质上是回答一个问题模型在每一步输出了一个 vocabulary 大小的概率分布我们怎么从中选下一个 token主流方案分两大类。第一类是确定性策略输入相同输出永远相同。贪心解码Greedy Decoding每一步选概率最高的 token。简单、可复现但容易重复啰嗦、缺乏多样性Beam Search每一步保留 Top-B 条候选路径B4、8 等最后选总概率最高的整条序列。比贪心更接近全局最优但对生成式任务有「天然缺陷」第二类是随机性策略引入随机性让输出有多样性。Temperature 采样通过缩放概率分布的「锐度」控制随机性强度。Temperature 越低越确定越高越发散Top-K 采样每步只从概率最高的 K 个 token 里采样截断长尾Top-P (Nucleus) 采样每步累加概率到 P 为止从这个「核」里采样自适应截断这两大类的核心区别是确定性策略保证质量但牺牲多样性随机性策略保证多样性但每次输出不同。所以现在的 LLM API 通常都会提供Temperature Top-P这类采样参数但默认值各家不完全一样有的默认更稳定有的默认更开放。更稳的工程表达是精确任务代码、数学、信息抽取用 Temperature0 或低温来提高可复现性对话 / 创意任务用较高 Temperature 配合 Top-P 平衡多样性和质量。13大模型的参数温度值、Top-P、Top-K 分别是什么各个场景下的最佳设置是什么我调这几个参数的经验是Temperature 是最关键的另外两个基本不用动。Temperature 控制输出的随机性越低越稳定可复现越高越发散有创意Top-P 是从累积概率达到 P 的候选词里采样比 Top-K 更灵活自适应Top-K 是固定从概率最高的 K 个词里选。实践下来代码生成或者精确问答我会把 Temperature 调到 0~0.2创意写作调到 0.8~1.2日常对话 0.5~0.7 就够了。Top-P 和 Top-K 保持默认就好同时调多个参数反而互相干扰。14 KV Cache 是什么Prompt Caching 的原理是什么我理解 KV Cache 和 Prompt Caching 是同一个机制在两个时间尺度上的应用。KV Cache 是「单次推理内」的优化。自回归生成时每次生成新 token 都要让模型重新对前面所有 token 算 attention。如果每次都从零开始算N 个 token 的总计算量是 O (N³)根本不可接受。KV Cache 把前面所有 token 的 K 和 V 矩阵缓存在 GPU 显存里每次新 token 只算自己的 Q、K、V然后跟缓存的 K/V 做 attention把总计算量从 O (N³) 降到 O (N²)。Prompt Caching 是「跨请求」的优化。把上面 KV Cache 的概念从「单次生成内」扩展到「不同请求之间」。如果两个请求的 Prompt 前缀完全相同第一个请求算完的 KV Cache 在API 服务器上保留下来第二个请求遇到相同前缀直接跳过计算、复用已有 KV Cache只算新增的部分。价值上的区别KV Cache 解决的是「让自回归生成可行」是 Transformer 推理的基本盘Prompt Caching 解决的是「降低 API 成本和延迟」是工程层面的ROI 优化。不同厂商的计费规则不一样比如 Claude 的缓存读取价格可以低到普通输入 token 的 10%OpenAI 等平台也有自己的缓存折扣延迟收益也和前缀长度、命中率、服务端负载有关不能死记一个固定比例最关键的认知是Prompt Caching 不是新发明是 KV Cache 这个底层机制的工程级延伸。理解了 KV CachePrompt Caching 几乎是自然推论。实际工程使用 Prompt Caching 的核心要点是固定内容在前、动态内容在后前缀只要差一个字符就缓存 miss。15大模型量化是什么INT8/INT4/AWQ/GPTQ 怎么选我理解量化Quantization的本质是把模型参数从「高精度浮点数」FP32 或 FP16映射到「低精度整数」INT8 或 INT4用更少的比特表示同样的信息。核心收益是显存和速度。一个 7B 模型 FP16 占 14GBINT4 量化后只剩 4GB显存压到 1/3.5同时 INT4 计算比 FP16 快、访存压力也小推理速度提升 2-4 倍。主流量化方案分两个维度。精度维度FP16 - INT8 - INT4 - 更激进的 NF4 / FP8 等。位数越少越省但精度损失越大。INT4 是当前的甜点点效果接近 FP16体积只有 1/4。算法维度GPTQGPT Quantization基于【误差补偿】的逐层量化。每量化一层权重用一小批校准数据测出量化误差把误差补偿到下一层去。优点是数学严谨、支持 INT3 这种极端精度AWQActivation-aware Weight Quantization基于【激活感知】的权重保护。核心洞见是「不是所有权重都同样重要」那些和激活值大的输入相关的权重要保护好其他的可以激进压缩。优点是推理速度快、效果稳QLoRA 里的 NF4NormalFloat 4-bit专为权重的近高斯分布设计的非均匀量化配合 LoRA 微调让 24GB 消费级显卡能微调 7B 模型16如何写好 Prompt分享下 Prompt 工程实践经验我在实际做项目时踩过不少坑发现 Prompt 写不好通常不是因为太短而是因为「模糊」模型根本不知道你想要什么格式、什么风格、给谁看的。后来总结下来写好 Prompt 核心就是做好五件事给模型设定角色、说清楚任务、交代背景上下文、约定输出格式、提供示例。其中格式约束是最容易忽略、但对程序解析影响最大的。而且 Prompt 不是写完就完了我们项目里一定要建测试集、每次改动都跑一遍才知道改好了还是改坏了。17什么是 CoT为啥效果好它有什么缺点或局限性CoT 我第一次用是在做一个需要多步逻辑推理的任务发现只要让模型先分步分析效果提升就很明显。后来理解了为什么模型是一个 token 一个 token 生成的让它先组织中间步骤等于给了它「草稿纸」后面生成答案时能利用前面的推理上下文自然出错就少了。缺点也很实际消耗的 token 会多很多延迟和成本都上去了而且推理链本身也可能出错、错误还会累积传导。所以我的经验是对需要多步推理的任务用 CoT简单问答直接回答就好对外产品里不一定展示完整 CoT展示简要理由或核查步骤通常更合适。18大模型为什么会出现幻觉怎么缓解我理解大模型的幻觉本质是模型生成了听起来很合理但实际是错的内容这是 LLM 的固有缺陷不是某个 bug。幻觉的根因可以归到三个层面。第一是训练数据层面互联网语料本身就有错误、矛盾、过时的信息模型把这些都「学进去」当作事实记忆。第二是生成机制层面LLM 本质是「按概率续写下一个 token」不是「查询知识库」。模型对「自己知不知道某件事」没有显式信号碰到不熟悉的问题会按训练时见过的相似上下文「编一个看起来合理的答案」。这就是为什么 Temperature0 也会幻觉因为概率最高的那条路径本身就是错的。第三是对齐目标层面SFT 和 RLHF 训练时「自信地回答」往往比「我不知道」得分更高模型被无形中训练成了「不会拒答」。幻觉分三类事实性幻觉编造不存在的事实把人物事件张冠李戴、推理性幻觉推理链条错乱、前后矛盾、上下文不一致违背用户给的明确条件。缓解方案要分三层组合用。训练层对齐数据里专门加入「不知道就说不知道」的样例做校准Calibration训练让模型学会拒答。推理层让模型先做必要的分步分析再答最终可以只展示简要依据、Temperature 调低减少随机偏差、Self-Consistency 多次采样投票错误答案不一定容易收敛、约束解码限制只能输出特定 vocabulary。系统层RAG 接入外部知识库让模型「看着资料答」而不是「凭记忆答」、答案后处理核查、强制带引用来源。最关键的认知是幻觉不可能完全消除因为它是 LLM 概率生成机制的固有副产物。工程上的目标是「降低发生率 让用户能识别」不是「彻底消灭」。19MoE 混合专家模型是什么DeepSeek V3、Qwen 为什么用 MoE我理解 MoEMixture of Experts混合专家模型的核心思想是把传统 Transformer 中的 FFN前馈网络层替换成 N 个并行的「专家网络」再加一个 Router 来决定每个 token 进哪个专家。核心设计哲学是「总参数大但激活参数小」。/*比如 DeepSeek V3 总参数 671B但每个 token 推理时只激活 37B约 1/18。这样能用「总参数 671B 的知识量」「激活参数 37B 的推理成本」达到 Dense 模型做不到的「学得多 跑得快」。具体看 MoE三个核心组件。多个专家Experts把 Transformer 每层的 FFN 复制 N 份典型 N8、64、256每份就是一个独立的「专家」在训练中各自学到不同的「擅长方向」语言、代码、数学、知识等Router路由器每个 token 进到 MoE 层时Router 算一个「专家偏好分数」决定这个 token 该去哪个专家。最常见的是 Top-K 路由K1 或 K2DeepSeek V3 是 Top-8 1 个共享专家负载均衡训练时要加辅助损失防止「专家不平衡」Router 偏爱某几个专家其他专家没被训过保证所有专家都在学*/为什么 DeepSeek V3、Mixtral、部分 Qwen 模型都在用 MoE训练性价比高同样算力下训出来的 MoE 模型效果接近一个大 Dense 模型但参数总量是 Dense 的 5-20 倍推理成本可控每个 token 只用一小部分参数推理速度和小 Dense 模型相当可扩展性强要增加模型容量加专家数比加层数容易但 MoE 也有挑战训练难度高专家不平衡、Router 训不稳、并行化复杂显存占用高虽然激活只用 37B但所有专家的参数都要加载到显存671B 全量推理时通信开销分布式部署时专家分散在多张 GPUtoken 路由有跨卡通信。MoE 是 2024-2026 年大模型最重要的架构方向之一DeepSeek V3、DeepSeek R1、Mixtral、Grok、部分 Qwen MoE 模型都用了这条路线。但它不是唯一答案很多主力 Dense 模型依然在生产里很常见尤其是中小规模和部署稳定性优先的场景。20大模型部署有哪些主流方案vLLM、TGI、llama.cpp、SGLang 实际项目里怎么选我理解大模型部署框架的本质问题是怎么在固定的硬件上跑得更快、更省显存、支持更多并发用户大模型部署分四大类单机本地部署、单机 GPU 服务化、分布式多卡部署、云厂商托管 API。选型核心看硬件、并发、延迟、模型大小。高并发线上业务优先vLLM追求精细调度、HuggingFace 生态选TGI极致低显存本地跑选 llama.cpp需要复杂多阶段流式、Agent 并行调用优先SGLang。21大模型能力评测指标有哪些我对这块的理解是学术 Benchmark 只能作为参考真正重要的是在自己业务数据上的表现。MMLU测综合知识HumanEval 测代码GSM8K测数学和科学推理LiveBench这类更新型评测用来缓解数据污染。这些指标看一眼能大概判断模型能力区间但不能直接等价成业务效果。我们实际项目里的做法是从真实用户请求里采样、人工标注期望输出建一个 50-200 条的测试集每次改 Prompt 或换模型都在上面跑一遍加上线上的用户满意率来形成闭环这才是可靠的评测体系。22对比使用过哪些主流大模型你们项目中最终选用了哪个模型为什么在项目选型阶段我会先把模型分成两类一类是国内可落地的生产候选比如 DeepSeek、Qwen、豆包这类模型另一类是海外能力标杆比如 GPT-5.5 /o 系列、Claude Sonnet / Opus 系列用来做能力上限参照。如果是面向国内企业用户的 Agentic RAG 系统我倾向于把国内模型作为主链路候选海外模型只做离线评测或非敏感场景兜底。原因不是海外模型不好而是企业项目里网络稳定性、成本预算、售后支持这些约束会直接决定方案能不能上线。最终落地时我不会死磕一个模型而是用Model Routing模型路由格式要求严格、Tool Use工具使用 多的节点优先选指令遵循和结构化输出稳定的模型高频推理、数据清洗、摘要归纳这类节点优先选性价比高的模型特别难的问题再路由给能力更强但更贵的模型。 选模型从来不是看谁跑分最高而是看谁最契合业务。23为什么长上下文会出现 Lost in the Middle上下文窗口越大越好吗我不会把长上下文能力简单理解成「模型最多能接收多少 token」。最大上下文窗口只是输入上限真正有用的是模型在不同长度、不同位置和不同干扰强度下能不能稳定找到证据并完成推理也就是它的有效上下文能力。Lost in the Middle 指的是关键信息放在长文本中间时模型的利用效果往往比放在开头或结尾更差。它不只是位置编码造成的还和训练时见过的长度分布、注意力的位置偏置、无关内容对注意力的稀释有关。所以窗口不是越大越好。输入越长稠密 Self-Attention 的计算量增长很快KV Cache和调用成本也会增加。工程上我会先做检索和重排只保留真正相关的片段再配合结构化摘要、清晰分区和关键约束布局最后用不同长度、不同证据位置的测试集验证而不是把所有资料一次性塞给模型。24总结大语言模型LLM是基于海量数据预训练、参数达百亿千亿级的自回归生成模型与传统NLP“一任务一模型”不同具备统一处理多种任务的能力。其核心架构为Transformer依赖Self-Attention实现并行计算与长距离建模现代主流采用Decoder-only结构以支持高效自监督学习。通过位置编码如RoPE解决序列顺序问题分词器完成文本到TokenID的转换。训练流程包括预训练、监督微调SFT与对齐优化如DPO实现从知识积累到人类偏好对齐的跃迁。规模扩展遵循缩放定律带来涌现能力。微调常用LoRA/QLoRA降低资源开销解码策略如Temperature、Top-P影响输出多样性。为提升效率引入KVCache、PromptCaching、量化INT4/AWQ、MoE等技术。幻觉源于生成机制与训练偏差可通过RAG、约束解码缓解。部署选型依场景而定评测需结合真实业务数据。最终模型选择应兼顾性能、成本与落地可行性而非单纯追求榜单排名。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进