Skip to content

LLM 原理

大模型不是什么神秘生物,它只是把「预测下一个 token」这件事做到极致的语言模型:先在海量文本上预训练学统计规律(Scaling 放大一切),再通过对齐让输出符合人类期望。本文打通「token 化 → 自回归 → 预训练 → 对齐 → 采样解码」这条完整链路;对应论文精读见 文献收藏 LLM 前沿,原理落地为应用见 Prompt 工程RAG 与 Agent

一、语言模型:给文本序列分配概率

  • 语言模型的目标:对任意 token 序列算出概率 P(w₁…w_n),训练用最大似然:给定前文预测下一个 token,等价最小化交叉熵;
  • 自回归生成:逐个预测下一个 token,把自己刚生成的 token 接回输入再预测下一个——训练与推理都按此顺序,所以天然适配「对话 = 把历史拼成一段文本」;
  • Tokenizer(分词):文本 ↔ token 的桥梁。BPE(字节对编码)反复合并最常见相邻片段,词表通常几万~几十万;token 不是词:如 "unbelievable" 可能被切成 2-3 个 token,中文单字/词粒度也由词表决定——计费、上下文长度、生成速度都以 token 计;
  • 一个 token ≈ 0.75 个英文单词 / 0.5~1 个汉字(经验值,依词表而异)——估算成本与长度时记住这个换算。

二、Decoder-only Transformer:现代大模型的标准骨架

  • Transformer 精读 出发,主流 LLM 几乎全是 decoder-only 变体:因果(掩码)自注意力保证每个位置只能看自己与之前;
  • 三个必须懂的工程机制:
    • 因果掩码:训练时一次算整段,掩码遮住未来,等价于「逐个预测」的并行化;
    • KV cache:推理时把历史 K/V 缓存,新 token 只需算自身注意力——生成速度从 O(序列长²) 降到 O(新长×历史长) 的增量;
    • RoPE(旋转位置编码):把「位置」旋进 Q/K 的几何角度,天然表达相对位置且有更好的长度外推(长上下文的关键超参是 RoPE 的 base/缩放策略);
  • 组件的当代选型(2026 语境):注意力输出层后接 RMSNorm(省均值归一化)、激活函数用 SwiGLU(门控线性单元)、FFN 按 2~4× 隐藏维扩宽、深层用 Pre-Norm + 残差;这些与论文原版不同,但骨架「注意力+FFN+残差」不变;
  • 缩放直觉:参数量 × 数据量 × 算力同涨,能力涌现——见「预训练与 Scaling」节。

三、预训练:从数据中学会世界

  • 目标:next-token 预测,数据 = 互联网规模文本(网页、书籍、代码、多语),要清洗(去重、去低质、过滤有害)与按比例混配;
  • Scaling Laws(经验律):在计算预算 C 内,损失 L 随参数量 N 与数据量 D 的幂律下降;Chinchilla(2022) 的结论是模型规模与数据 token 数应按约 1:1 平衡——「同样的钱,买多少参数的模型配多少数据」有最优解;
  • 训练曲线:loss 平滑下降但极慢收敛;checkpoint 每隔一段存,不同步数=不同「模型个性」;
  • 预训练后的大模型已「知道」很多,但不会「好好说话/不编造」——这靠对齐:
    • 监督微调(SFT):喂高质量的指令-回答示范,学会对话格式(参见 模型微调);
    • 人类反馈强化学习(RLHF / DPO):让「讨喜且有用」成为优化目标——论文原理见 InstructGPT 精读;
  • 上下文窗口与长上下文:窗口=能同时「看到」的 token 上限;长窗口 ≠ 长记忆好——注意力分散、中间信息易漏("lost in the middle");服务侧的成本是 KV cache 随长度线性涨(工程对策见 AI 工程化);把长文档塞窗口 vs 检索(见 RAG 与 Agent)是按场景取舍。

四、推理与采样:生成时模型在干什么

  • 推理时模型输出「下一个 token 的概率分布」,怎么从分布里挑就是解码策略:
策略行为用途
greedy(贪心)每步取概率最大快但重复、无多样性
temperature分布软化(τ>1 更均匀)创意写作调高,事实任务接近 0
top-k只在概率前 k 个里采样防长尾烂词
top-p(nucleus)在累积概率 p 的最小集里采样自适应截断,默认推荐
beam search保留 top-k 条候选序列推进翻译/摘要等有「最优解」任务
  • 工程顺序建议:先 greedy/temperature≈0 拿到稳定答案,需要多样时再 top-p+温度;
  • 结构化输出:让 JSON/代码结果稳定可解析——靠 prompt(JSON schema 示例)+ 约束解码(grammar/正则强约束采样)双保险;函数调用/工具本质上也是「约束输出 + 解析」;
  • 幻觉从哪来:自回归在「不知道」时也会按概率编出合理文本;知识截断(训练数据时间边界)、无检索支撑的开放式生成、采样随机性都是来源——缓解手段:引用来源(见 RAG)、温度调低、模型自查/验证、把「不确定就明说」写进系统提示;
  • 上下文学习(ICL)与思维链(CoT):不更新参数,靠示例/引导激发能力;详见 Prompt 工程

五、能力、成本与选型视角

  • 单次推理成本 ≈ 输入 token × 单价 + 输出 token × 单价(输出一般更贵),量化估算公式:模型在 GPU 上的推理显存 ≈ 权重(fp16 下每 10 亿参数约 2 GB)+ KV cache + 激活;
  • 7B 级模型量化后单卡可跑、70B+ 需多卡与量化(详见 AI 工程化);自建 vs API 的核心权衡 = 数据不出域 vs 成本/迭代速度;
  • 能力边界诚实版:LLM 是「流畅的先验生成器」,不是数据库、计算器或事实引擎——需要精确、最新、私有时,外接检索/工具/规则(见 RAG 与 Agent);「涌现能力」的说法在学界有争议,把期望锚在「下一 token 概率」模型上最不容易失望。

六、术语速查

术语含义一句话
Token / 词表模型的基本单位 / 允许出现的 token 集合
上下文窗口模型单次能处理的最大 token 数
Prefill / Decode先并行处理输入 / 再逐 token 生成(两阶段)
KV cache缓存的历史注意力键值,加速解码
SFT / RLHF / DPO指令微调 / 人类反馈强化 / 直接偏好优化
ICL / CoT上下文学习 / 思维链提示
Scaling Law损失随参数与数据量按幂律改善
幻觉生成了流畅但错误/无依据的内容
System prompt对话开场注入的角色与规则(见 Prompt 工程)

七、踩坑清单

  1. 把 token 当词:计费、长度、切分全看 token;先用实际 API/库数 token 再设计缓存预算;
  2. 长上下文万能论:长窗口会「中间丢失」且贵,长文档任务先想检索分块;
  3. temperature 全任务用默认:事实性任务不调低温度就是自找幻觉;
  4. 拿自回归模型当查库:最新/私密/精确信息必须外接来源或微调,别指望模型「记牢」;
  5. 对齐当不存在:不设系统提示、不校验输出,部署后行为不可控;
  6. 忽略 KV cache 成本:长会话服务内存暴涨——及时截断/摘要历史,或上 KV 复用;
  7. Scaling 生搬硬套:Chinchilla 结论服务于「最优训练预算」,推理侧另有取舍,别拿它论证模型越大越好;
  8. 把 CoT 当万能药:需要外部事实/计算的步骤,推理再久也救不了缺失的输入——交给工具;
  9. 输出直接当结构化数据用:不约束解码、不重试、不校验 schema,必然出现解析炸裂;
  10. 不测就上线:模型升级/换 API 前用黄金评测集回归(见 AI 工程化 评测小节)。

继续学习:上手写提示词见 Prompt 工程;把 LLM 接上你的知识与工具见 RAG 与 Agent;自己改模型行为见 模型微调;把推理跑稳跑便宜见 AI 工程化

基于 VitePress 构建 · 内容以知识共享方式沉淀