跳到主要内容

大语言模型基础

大语言模型(LLM)是根据前面的文本逐个预测下一个 Token 的生成模型。应用开发不要求会训练模型,但要能解释一次调用里发生了什么:文本怎样变成 Token,上下文窗口限制了什么,输出为什么每次可能不同,用量和费用怎样计算。本文讲 Token、生成过程、采样参数和模型的能力边界;模型内部结构见 Transformer 与注意力机制。

1. 面试核心​

先记住这几条,再读正文
  • 模型的输入输出单位是 Token,由分词器把文本切成子词片段。Token 数决定上下文能否放下、费用多少和生成耗时;同样的内容在不同模型的分词器下 Token 数不同,以接口返回的用量为准。卡 · Token 与上下文窗口
  • 生成是自回归的:模型对整段输入计算一次(预填充),然后每一步根据已有内容输出下一个 Token 的概率分布,按采样规则选出一个,追加后再算下一步,直到结束标记或长度上限。卡 · 一次生成的过程
  • temperature 调整概率分布的陡峭程度,top-k 只在概率最高的 k 个 Token 中选,top-p 在累计概率达到 p 的最小集合中选。需要稳定、可解析的输出时调低随机性,创作类任务可以调高。卡 · 采样参数
  • 模型的知识来自训练数据,有截止时间,也不知道私有数据;它生成的是“看起来合理”的文本,不保证事实正确,这是幻觉的来源。
  • 训练分为预训练(学习语言和知识)、指令微调(学会按指令回答)和偏好对齐(让输出符合人类偏好)。应用侧只需能说清各阶段解决什么问题,以及何时选择提示、RAG 或微调。

2. Token 与上下文窗口​

分词器把文本切成模型词表中的片段。常见的英文单词是一个 Token,罕见词被切成多段;中文按字或词组切分。同一段中文在不同分词器下的 Token 数可能相差很多,用词表更大的新模型通常更省。估算只能作为参考,计费和截断以模型提供方的分词结果和接口返回的 usage 为准。

一次请求的用量由三部分组成:

部分内容说明
输入 Token系统提示、工具定义、对话历史、检索材料、本轮输入多轮对话每轮都会重新发送历史,输入随轮数增长
输出 Token模型生成的文本、工具调用参数单价通常高于输入;推理模型的思考过程也按输出计
缓存命中的输入与之前请求相同的前缀多数提供方按较低价格计费,见上下文管理

上下文窗口是一次调用中输入和输出 Token 的总上限。超出时请求失败或被截断,因此要为输出预留空间。窗口大不等于效果好:材料越长,费用和延迟越高,位于中间的信息也更容易被忽略。

3. 一次生成的过程​

  1. 分词:把消息按模型的对话模板拼成一段文本,再转成 Token ID 序列。系统提示、用户消息、工具定义都在这一步变成 Token。
  2. 预填充(prefill):模型一次性处理全部输入 Token,得到每个位置的中间结果(KV Cache)。输入越长,这一步越久,决定了首 Token 延迟。
  3. 解码(decode):每一步根据已有序列计算词表上每个 Token 的概率,按采样规则选出一个,追加到序列末尾,再计算下一步。每一步只新增一个 Token,可以复用之前的 KV Cache。输出越长,总耗时越长。
  4. 停止:遇到结束标记、停止词或达到最大输出长度时结束。接口返回结束原因(例如正常结束、长度截断、工具调用),程序要据此处理。
  5. 反分词:把 Token 转回文本,以流式或一次性方式返回给调用方。

模型一次调用不会保留状态。多轮对话的“记忆”是程序每次把历史消息重新放进上下文。

4. 采样参数​

模型在每一步输出的是概率分布,采样参数决定从中选哪个 Token。

参数作用常见取值
temperature用温度缩放原始分数后再计算概率。低于 1 时分布更尖锐,高概率 Token 更容易被选中;高于 1 时更平坦抽取、分类、代码、工具调用取低值;创作、头脑风暴取高值
top-k只保留概率最高的 k 个候选,再在其中采样限制极低概率的离谱输出
top-p按概率从高到低累加,保留累计达到 p 的最小集合(核采样)候选数量随分布自适应;通常与 temperature 只调一个
max tokens最大输出长度防止输出失控和费用超支
stop停止序列截断到指定标记

temperature 接近 0 时接近贪心解码,每步选概率最高的 Token。即使如此,同一请求也不保证逐字相同:服务端的批处理和浮点计算顺序会带来微小差异。需要稳定结果时,还要依靠结构化输出、校验和重试,而不是只依赖参数。部分推理模型固定或忽略采样参数,以提供方文档为准。

5. 训练阶段与能力边界​

阶段数据得到的能力
预训练海量文本,预测下一个 Token语言能力和训练数据中的知识
指令微调(SFT)指令与高质量回答对按指令完成任务、遵循对话格式
偏好对齐(RLHF、DPO 等)人类或模型对回答的偏好比较更有帮助、更安全、更符合格式要求

由此可以推出应用侧的边界:

  • 知识截止与私有数据:模型不知道训练之后的事件和企业内部资料,需要 RAG 或工具提供。
  • 事实不可靠:模型按概率生成,不区分“记得”和“编造”,见模型幻觉。
  • 精确计算与长链推理:多位数运算、严格计数容易出错,适合交给代码或工具。
  • 工具调用能力来自训练:模型学会了按格式输出调用请求,真正执行的是程序,见 Function Calling。

6 · 面试题卡片​

6.1 一次模型请求的 Token 用量怎样计算?中文和英文有什么差异?​

出现公司:凌脉、字节跳动

考察重点

  • 分词器的作用,以及 Token 数为什么依赖具体模型。
  • 输入、输出、缓存命中三部分用量,以及多轮对话的输入增长。

相关内容:Token 与上下文窗口。

参考回答

分词器把文本切成模型词表中的片段,每个片段是一个 Token。英文常见词通常是一个 Token,罕见词会被拆开;中文按字或常见词组切分,同一段中文在不同模型下 Token 数可能差别很大,词表包含更多中文片段的模型更省。所以不能用字数直接换算,估算可以用对应模型的分词器离线计算,计费以接口返回的 usage 为准。

一次请求的用量包括输入、输出和缓存命中的输入。输入不只是用户这句话,还包括系统提示、工具定义、历史消息和检索材料;多轮对话每轮都重新发送历史,所以输入随轮数增长,这是控制成本时最先要看的部分。输出单价通常更高,推理模型的思考内容也算输出。与之前请求相同的前缀命中缓存后按较低价格计费。

6.2 完整描述一次大模型生成,底层发生了什么?​

出现公司:阿里云、快手

考察重点

  • 分词、预填充、逐 Token 解码、停止条件的顺序。
  • 首 Token 延迟和总耗时分别由什么决定。

相关内容:一次生成的过程、采样参数。

参考回答

程序先按模型的对话模板把系统提示、工具定义和消息拼起来,由分词器转成 Token ID。服务端进入预填充阶段,一次性计算所有输入 Token,把每层的 Key、Value 存进 KV Cache;这一步的耗时随输入长度增长,决定首 Token 延迟。

然后进入解码循环:每一步模型根据已有序列输出词表上的概率分布,按 temperature、top-p 等规则选一个 Token,追加到序列,复用 KV Cache 只计算新位置,再进入下一步。遇到结束标记、停止词或最大长度就停止,并返回结束原因,例如正常结束、长度截断或需要调用工具。最后把 Token 转回文本,以流式或整段返回。整个过程不保留状态,多轮对话依靠程序每次重新发送历史。

6.3 temperature、top-p、top-k 分别是什么?不同场景应该怎样设置?​

出现公司:TCS、ZS、快手

考察重点

  • 三个参数分别作用在概率分布的哪一步。
  • 按任务选择参数,以及参数之外保证稳定输出的手段。

相关内容:采样参数、结构化输出。

参考回答

模型每一步输出下一个 Token 的概率分布。temperature 先缩放分数:调低让高概率 Token 更占优势,输出更确定;调高让分布更平坦,输出更多样。top-k 只保留概率最高的 k 个候选;top-p 按概率从高到低累加,保留累计达到 p 的最小集合,候选数随分布变化。通常只调 temperature 或 top-p 其中一个。

信息抽取、分类、代码生成、工具调用要求可解析和可复现,用低 temperature;写作和创意生成可以调高。但低 temperature 也不能保证逐字一致,服务端批处理会带来微小差异,所以稳定性还要靠结构化输出、Schema 校验和失败重试。推理模型可能固定这些参数,以提供方文档为准。

7. 参考资料​