端侧 AI · 15 天工程路线
目录首页 English
DAY 07

LLM 基础

从语言模型起源建立发展脉络、工作原理与关键术语地图

建议阅读:约 20 分钟

学习目标

理解 LLM 从统计语言模型、神经语言模型到 Transformer、预训练与指令对齐的发展脉络,并能准确解释 token、参数、上下文、预训练、推理与幻觉等核心术语。

本章关键词

关键词解释ESP32 工程类比
语言模型估计 token 序列概率或下一个 token 条件概率的模型。像根据已收到的协议字段预测下一字段类型与取值范围。
参数训练得到并在推理时固定复用的权重,是模型的长期统计状态。像编译进固件、跨请求复用的查表常量和控制系数。
预训练 / 对齐预训练学习通用模式;对齐用指令、偏好或规则塑造可用行为。像先训练通用协议解析器,再按产品规范收紧命令与错误处理。
幻觉模型生成流畅但不受事实证据支持或与现实不一致的内容。像校验和正确、格式完整,但 payload 语义仍然错误的数据包。

承上:回顾与定位

前六天已经建立从神经网络、模型产物到端侧资源与视觉流水线的传统 AI 工程闭环。今天从模型类别切换到生成式语言模型,先建立一张不会被工具名和参数量带偏的全局地图。

从源头看今天

历史发展脉络

LLM 的形成不是单一论文带来的跳跃,而是语言概率建模、分布式表示、并行架构、规模化预训练和人类偏好对齐逐步叠加的结果。理解这些典型时刻,才能分清哪些能力来自训练目标,哪些来自结构,哪些来自部署时的系统工程。

1948

信息论为语言的概率与不确定性提供度量

Shannon 用熵与条件概率研究通信和英文序列的可预测性,奠定了把语言视为随机过程、用上下文降低不确定性的思想起点。

Shannon 原始论文 ↗
2003

神经概率语言模型学习分布式词表示

Bengio 等人用共享的连续词向量和神经网络估计下一个词概率,使相似上下文可以共享统计强度,缓解传统 n-gram 的维度灾难。

神经概率语言模型原始论文 ↗
2017

Transformer 以 Attention 重写序列建模主干

《Attention Is All You Need》移除循环和卷积主干,用 self-attention、前馈网络、残差与位置编码构建可并行训练的 encoder–decoder。

Transformer 原始论文 ↗
2018

BERT 证明大规模预训练可迁移到多种理解任务

BERT 通过双向 Transformer 预训练后再微调,在多项自然语言理解任务上展示“一个基础表示、多种下游适配”的范式。

BERT 原始论文 ↗
2020

GPT-3 展示规模化自回归模型的上下文学习

GPT-3 在不更新参数的情况下,通过提示中的描述或少量示例完成多类任务,使规模、prompt 与 in-context learning 成为重要研究和产品变量。

GPT-3 原始论文 ↗
2022

InstructGPT 把指令遵循与人类偏好引入对齐链

监督指令数据、奖励模型与人类反馈强化学习被组合起来,让基础模型更倾向于遵循用户意图,同时也暴露出对齐评估与安全边界的重要性。

InstructGPT 原始论文 ↗
今天为什么仍然重要: 今天的本地或端侧 LLM 仍沿用这条链:tokenizer 定义输入,Transformer 权重承载预训练与对齐结果,runtime 管理上下文与逐 token 生成。设备工程优化的是表示、状态和数据移动,不能改变模型原本没有学会或无法可靠保证的事情。
借熟悉的系统建立直觉

类比图解

一套持续修订、现场只读的协议预测固件

研发中心先用大量历史报文训练一套预测固件,把常见结构压进参数;产品团队再用规范样例校正它如何响应指令。设备收到一次新请求时,只加载固定固件,把当前报文放入会话缓冲区,逐段预测后续内容。预测可以很流畅,但关键字段仍必须通过确定性协议校验。

历史报文仓库 预训练语料与数据治理
预测固件 冻结并跨请求复用的模型参数
当前报文缓冲 本次请求的 token 上下文
协议校验器 工具、规则、检索与人工复核边界

类比的边界: LLM 参数不是可逐条查询的数据库,token 也不等于协议中的固定语义字段;类比只用于区分训练期长期状态、请求期短期状态与外部校验责任。

本章讲解

先从任务定义开始:LLM 是条件概率模型

语言模型学习的是在已有 token 前缀条件下,下一个 token 的概率分布。训练时把真实序列向右错一位形成监督信号,一段文本就能贡献许多预测样本;推理时则从分布中选择一个 token,再把它追加到前缀继续预测。这个统一目标能迫使模型压缩语法、语义、事实共现与任务格式,但它优化的是预测似然,不是事实数据库的一致性、逻辑证明的完备性或现实世界的安全性。

从统计计数到分布式表示,核心问题一直是泛化

早期 n-gram 语言模型按有限历史统计下一个词,简单、可解释,却容易遭遇未见组合和维度爆炸。神经语言模型用 embedding 把离散词映射到连续空间,并用共享参数在相似上下文之间迁移统计强度。word2vec 等方法进一步展示分布式表示的可复用性。LLM 并非突然出现的魔法,而是语言建模目标、表示学习、计算规模与数据工程长期汇合的结果。

Transformer 让长依赖与大规模并行训练更可行

循环网络必须沿序列逐步传递状态,长路径让训练并行与远距离信用分配都更困难。Transformer 用 self-attention 建立 token 间的直接交互,再叠加逐位置前馈网络、残差连接、归一化与位置机制,使训练阶段可以并行处理整段序列。它并没有让自回归生成失去先后顺序;输入处理与输出生成是两种不同的计算形态,后续章节会分别拆解 Attention、Prefill、Decode 与 KV cache。

预训练、微调与对齐是三种不同责任

预训练从大规模语料学习通用表示和生成能力;监督微调用更小、更明确的数据塑造任务格式;指令对齐再用偏好数据或规则,让回答更符合人的意图与安全约束。三者都改变权重,却使用不同数据、目标和验收标准。工程上还要区分 prompt 内学习:它只在当前上下文中提供示例,并不会永久修改参数。把这些过程混称为“训练一下”会导致成本、隐私和可回滚性判断错误。

规模带来能力,也放大数据、评估与系统问题

参数量、训练数据和计算量共同扩大模型容量,但任一数字都不能单独代表能力。更大的模型可能展现更强的少样本迁移和任务泛化,也会需要更高训练成本、更多权重存储、更多推理带宽和更严格的数据治理。所谓基础模型强调一个预训练模型可适配许多下游任务;它不是“懂一切”的认证。比较模型时应固定任务、提示模板、上下文、精度、硬件和评估集。

把常见术语放回正确的生命周期

token 是 tokenizer 定义的离散编号;embedding 是编号进入模型后的向量;参数是训练后冻结并跨请求复用的长期状态;context 是本次请求可见的 token 序列;KV cache 是该序列在各层产生的临时中间状态;logits 是下一 token 的未归一化分数;sampling 决定如何从分布选出输出。术语一旦归位,模型文件、会话内存、服务调度与产品体验就能进入同一张资源账本。

概率流畅不等于事实可靠,能力必须用证据界定

模型会根据训练分布和当前上下文补全最可能的文本,因此可以生成语法流畅但事实错误、来源虚构或前后矛盾的内容。检索、工具调用、结构化约束和人工复核能降低风险,却不能把概率模型自动变成真值机。端侧产品要标出允许模型建议的范围,把设备控制、安全判断和不可逆操作留在确定性验证边界内,并用真实失效样本持续评估。

让数据真正跑起来

动态过程演示

一条语言能力如何从语料进入一次回答

播放器把长期训练阶段与一次请求的短期推理阶段分开,避免把参数更新、上下文和缓存混成同一件事。

步骤 1 / 6

收集与治理语料 · documents + provenance

清洗、去重、过滤并记录来源

观察点

模型能力与风险都从数据分布开始

循环 / 返回条件: 生成阶段从“逐 token 生成”回到自身,直到 EOS、长度上限或取消;只有离线训练或微调才会回到参数更新。

查看静态全景图
文本语料 ──tokenize──► token 序列 ──预训练:预测下一个 token──► 基础模型
用户指令 ──template──► context ──逐 token 推理──► 概率分布 ──sampling──► 输出

代码或命令示例

tokens = tokenizer(chat_template(messages))
for token in tokens:
    state = model(token, state)
while not stop:
    logits, state = model(next_token, state)
    next_token = sample(logits)

动手实验

选择一句中英文混合提示,先记录字符数,再用任意开源 tokenizer 得到 token 数;随后用同一模型分别以 temperature=0 与较高 temperature 生成三次,记录输出差异。最后画出“语料→预训练→基础模型→指令对齐→部署推理”的五段链路,并给每段写出输入、输出和不能保证的事情。
实验记录与导出

工程陷阱

避免误判: 把参数量当成智能刻度,或把流畅回答当成已验证事实。LLM 的能力取决于数据、训练目标、提示、上下文与评估任务;生成结果进入设备动作前必须经过确定性校验。

核心测试

完成 3 道单选题后提交;提交前不会显示答案。

1. LLM 预训练中最典型的自监督目标是什么?
2. 哪项最准确地区分参数与上下文?
3. 为什么经过指令对齐的模型仍可能幻觉?

一起把本章讲清楚

在 GitHub 上讨论本章

登录 GitHub 后提问、补充实测或分享你的实现;评论会保存在本课程的 GitHub Discussions 中。

评论区需要 JavaScript;也可以直接打开 GitHub 讨论区: 打开 GitHub 讨论区 ↗

延伸阅读

启下:下一章如何使用本章能力

下一章进入 Tokenizer:追踪文本如何变成 token id,并把词表、特殊 token 与 chat template 视为模型 ABI。

下一天: Day 8 · Tokenizer