从开发者角度理解大语言模型:文字接龙、token 与采样参数
LLM 的本质是在预测下一个 token,但「token」这个单位本身就是初学者误解最多的地方——它既不是字也不是词。这篇讲模型实际看到的输入是什么、为什么它数不清单词里有几个字母、上下文 8K 到底能装多少中文,以及温度和 top_p 各自在调整概率分布的哪一维。
LLM 的本质是在预测下一个 token,但「token」这个单位本身就是初学者误解最多的地方——它既不是字也不是词。这篇讲模型实际看到的输入是什么、为什么它数不清单词里有几个字母、上下文 8K 到底能装多少中文,以及温度和 top_p 各自在调整概率分布的哪一维。
典型 MLLM 由视觉编码器、投影层和语言模型三部分构成。但选 MLP 还是 Q-Former,真正决定的不是表达能力而是 token 数量——576 与 32 的差距在预填充阶段会被平方放大 324 倍。这篇还讲了换高分辨率编码器时必须做的位置编码插值,以及视觉 token 借用一维位置编码带来的固有限制。
KV Cache 显存随序列长度是线性增长,不是二次方;公式里要用的是 KV 头数而不是注意力头数,用错在 Llama-3-8B 上会高估 4 倍。算对之后会发现真正的瓶颈在预填充而不是解码——这直接决定了减少 token、量化缓存、分页管理这三件事的优先级顺序。
混合图文 token 时,损失只应该作用在助手回答的位置上。这篇讲掩码怎么构造,以及两种最常见的错法各自的特征:漏掉视觉 token 会让 loss 起点异常高并卡在一个平台;漏掉指令部分则 loss 曲线完全正常,但模型推理时会自问自答。
框架帮你解决自动求导、GPU 加速和现成的层。但教程很少说清楚的是:训练用的框架不是部署用的格式,.pt 文件不含网络结构、无法独立分发。这篇讲两大框架的取舍、动态图与静态图的差别在何处真正显现、怎么识别过时教程,以及为什么装不上 GPU 是最消耗新手信心的那一关。
手算一次 5×5 输入与 3×3 kernel 的离散卷积,解释输出尺寸、padding、stride、感受野和 im2col。
用 3 个 token 手算 scaled dot-product attention,解释 Q/K/V、softmax、mask、多头注意力和 KV cache。
在二维二次函数上手算梯度下降前几步,比较 Momentum 和 Adam 的轨迹,并用代码生成 loss contour。