附录 A · 术语表
按主题分组收录全书术语,每条一句话解释,括号内为首次展开的章节。技术名词保留英文原形,中文为通行译法。查不到的词多半在《ht-gpt:从零搭建 GPT 训练与推理实战》(预训练实战)或《Happy-LLM:从零训练大语言模型》(理论)里——本书前半程的术语不在本表重复。
一、数据与分词
| 术语 |
一句话解释 |
| SFT(Supervised Fine-Tuning,监督微调) |
用"指令→合格回答"数据继续训练基座,教行为不教知识(0.1) |
| 基座模型(base model) |
只做预训练、只会续写的模型(0.1) |
| 预训练(pretraining) |
海量文本上的下一词预测训练,知识的主要来源(1.1) |
| FineWeb-Edu |
nanochat 使用的高质量教育向网页预训练语料(1.1) |
| BPE(Byte Pair Encoding) |
从字节/字符起迭代合并高频对的分词算法(1.2) |
| 词表(vocabulary) |
分词器能输出的全部 token 集合,nanochat 约 2000(1.2) |
| 字节级兜底(byte-level fallback) |
词表没覆盖的文本退回按 UTF-8 字节切分——中文的常态(8.1) |
| messages 契约 |
{"messages": [{role, content}...]} 的 JSONL 数据格式(2.1) |
| system 提示 |
定义人设与规则的首条消息,不算 loss(2.1) |
| 多轮对话 / 指代消解 |
结合上文回答追问;"第二句"指的是哪一句(2.1) |
| 蒸馏(distillation) |
让强模型生成训练数据——"强模型当作者、你当主编"(2.3) |
| 种子指令(seed instructions) |
蒸馏回环的起点指令,其分布就是未来模型的能力分布(2.3) |
| 灾难性遗忘(catastrophic forgetting) |
微调把预训练能力冲掉;处置首选数据回掺(3.3) |
二、训练
| 术语 |
一句话解释 |
| 下一词预测(next-token prediction) |
一切 GPT 训练的目标函数:给前文猜下一个 token(0.1) |
| 交叉熵(cross-entropy) |
猜词误差的度量,全体平均即 loss(3.1) |
| prompt masking(提示掩码) |
只对 assistant 回答算 loss——"考试只批答案"(3.1) |
| labels = -100 |
PyTorch 交叉熵的"此处不计分"忽略标记(3.1) |
| 有效 batch(effective batch) |
单卡 batch × 梯度累积步数,SFT 建议 32~128(3.2) |
| 梯度累积(gradient accumulation) |
小 batch 多次累积再更新,等效大 batch(3.3) |
| 学习率(learning rate) |
每步改权重的步长;SFT 取预训练的 1/5~1/10(3.2) |
| warmup / cosine 调度 |
训练初期 lr 爬升、随后余弦衰减到零(3.2) |
| 过拟合(overfitting) |
开始背训练集:train 降 val 升;三征兆复读/变短/逐字复述(3.2) |
| checkpoint |
训练中途的完整存档,回退与评测的基本单元(3.2) |
| 梯度检查点(gradient checkpointing) |
用约 30% 重算换激活显存大降(0.2) |
| 混合精度(bf16) |
低比特权重训练;省显存三开关之一(0.2) |
三、协议与模板
| 术语 |
一句话解释 |
| chat template |
把 messages 序列化成 token 序列的协议(4.1) |
| special tokens |
进词表的协议标记:边界 + 作者 + 终止三件套(4.1) |
| Harmony 风格标记 |
nanochat 采用的消息边界标记家族(<|beginmessage|> 等,4.1) |
| add_generation_prompt |
渲染时补上 assistant 起始标记,给出"起跑线"(4.1) |
| 逐字节一致 |
推理提示必须是训练序列的前缀——模板一致性的机器表达(4.1) |
| 模板错位 |
三处对序列形态意见不一:换模板未重训/漏拼起始标记/id 错位(4.3) |
| 单一事实源 |
模板只在 tokenizer 目录定义一次,三处消费(4.3) |
| 回环校验 |
训练/推理/部署三处渲染逐位比对的焊死手段(4.3) |
四、采样与手感
| 术语 |
一句话解释 |
| temperature |
分布削尖(<1 保守)或拉平(>1 发散)的温度旋钮(4.2) |
| top-p(nucleus sampling) |
只在累计概率 ≥p 的最小 token 集合里采样(4.2) |
| 贪心解码(greedy) |
每步取 argmax;评测可比性的默认选择(4.2) |
| repeat_penalty |
给已出现 token 降权,治复读(4.2) |
| 手感四诊法 |
发散/复读/死板/胡编四症状对旋钮的处方表(4.2) |
五、评测
| 术语 |
一句话解释 |
| 探针(probe) |
三固定的固定生成任务,切片观察能力(5.1) |
| 能力涌现(emergence) |
能力台阶式出现:loss 平滑下降,能力跳档点亮(5.1) |
| 回归题库 |
冻结的 30~50 道分层题,跨版本对比的统一量尺(5.2) |
| rubric |
带锚点描述的多维打分表(5.2) |
| LLM 裁判(LLM-as-judge) |
强模型按 rubric 批量打分;有三偏需校准(5.2) |
| 盲评(blind review) |
去掉版本名与摆放位置的对比评审(5.2) |
| 致命零分率 |
任一维度 0 分的题目占比,回归监控主指标(5.2) |
| 分数台账 |
每次评测一行记录,跨版本可比可报警(5.2) |
六、部署
| 术语 |
一句话解释 |
| llama.cpp |
C/C++ 推理引擎生态:GGUF、量化、llama-server(6.1) |
| GGUF |
单文件模型格式:权重 + 词表 + 模板等元数据(6.1) |
| 量化(quantization) |
权重压成低比特整数,换体积与速度(6.1) |
| Q8_0 / Q4_K_M |
近无损档 / 常用平衡档——越小越伤(6.1) |
| K-quants |
按权重重要性分组的量化家族(6.1) |
| 困惑度(perplexity) |
语言模型质量的常用度量;量化损失用它看(6.1) |
| llama-server |
把 GGUF 变 OpenAI 方言 HTTP 服务的二进制(6.2) |
七、语音
| 术语 |
一句话解释 |
| Whisper |
OpenAI 开源语音转写模型,档位 tiny→large(7.1) |
| 档位换实时性 |
大档更准更慢;交互闭环优先速度(7.1) |
| 静音幻觉 |
Whisper 对静音/噪声段"编"出旁白的已知弱点(7.1) |
| VAD(Voice Activity Detection) |
检测说话起止,自动断句(7.2) |
| whisper.cpp |
llama.cpp 姊妹项目,CPU 高效跑 Whisper(7.2) |
| TTS(Text-to-Speech) |
文字转语音,闭环的可选出口(7.2) |
八、改造与对齐
| 术语 |
一句话解释 |
| 70/30 配比 |
中文主力约 70% + 英文掺入约 30% 防遗忘(2.3/8.1) |
| 翻译腔 |
机翻数据的直译句式,小模型照单全背(8.1) |
| TinyStories |
合成儿童故事语料:任务容量匹配则小模型也能连贯叙事(8.2) |
| 对齐(alignment) |
SFT 之后教"好坏"的训练统称(8.3) |
| RLHF |
奖励模型 + 强化学习(PPO)的经典对齐路线(8.3) |
| DPO(Direct Preference Optimization) |
偏好对直接进 loss,跳过奖励模型(8.3) |
| GRPO |
组内相对比较的强化学习变体(8.3) |
| 偏好对(preference pair) |
同一 prompt 的 chosen/rejected 两条回答(8.3) |