语言模型学习的任务看起来很简单：根据前面的符号预测下一个符号。
简单的目标经过大规模数据和计算以后，会形成丰富的语言规律。
模型看到的不是词语本身，而是 tokenizer 产生的一串 token 编号。
编号先经过嵌入层变成向量，向量携带可以被训练更新的表示。

注意力让每个位置根据当前任务，从历史位置中读取不同的信息。
查询向量提出问题，键向量用于匹配，值向量携带要被汇总的内容。
查询与键的点积越大，经过 softmax 后得到的注意力权重通常越高。
因果遮罩阻止当前位置看到未来，因此模型不能偷看正确答案。
多头注意力把表示分到多个子空间，不同头可以学习不同关系。

Transformer 层不仅有注意力，还有前馈网络、归一化和残差连接。
注意力负责 token 之间的信息交换，前馈网络负责每个位置内部的变换。
残差连接为信息和梯度提供直接通道，使深层网络更容易训练。
归一化控制激活的尺度，使优化过程更加稳定。

预训练阶段使用大量普通文本学习通用知识和语言规律。
监督微调使用指令和回答，教模型按照对话格式完成任务。
偏好优化使用优选回答和较差回答，继续调整模型的行为倾向。
微调不能可靠地把所有事实写进模型，检索增强可以提供更新的外部资料。

推理分成预填充与解码。预填充并行处理输入，解码逐个产生新 token。
KV Cache 保存历史 token 的键和值，避免每次生成都重算全部历史。
量化减少权重占用和内存读取量，但可能带来模型质量损失。
批处理能够提高吞吐，却可能增加单个请求的排队时间。

训练损失下降只说明模型更适合训练数据，不代表真实能力一定提高。
验证集用于观察泛化，测试集必须与训练过程隔离。
困惑度衡量模型对正确下一个 token 的不确定程度。
能力评测、安全评测和人工检查需要结合，单一分数不能代表全部质量。

好的实验一次只改变一个变量，并记录模型、数据、随机种子和软件版本。
可以复现的结果比偶然跑出的最好数字更有价值。
学习大模型不要只记工具命令，要能够解释张量形状、损失来源和性能瓶颈。
从小模型理解完整机制，再迁移到大模型和多卡系统，是可靠的学习路径。

