bobofamilyNIU CHUN
标签36

#大模型

2026-10-12·—阅读·—点赞·跟着 AI 学 AI

词表不只决定切几刀:模型成本、多模态与分词边界

词表翻倍、序列缩短,为什么输出计算反而可能增加?从参数账与 ID 对应关系出发,区分连续视觉向量和离散视觉码,走完 Token Healing 的八个步骤,再用中文、数字、空白和 JSON / YAML 的切分例子说明表示差异。附双语图解与交互动画。

2026-10-12·—阅读·—点赞·跟着 AI 学 AI

输入查几行,输出算整表:从 Token ID 到下一 Token

Tokenizer 交出一串 ID 之后,模型怎样继续?用同一个五 Token 小模型,查两张向量表、走完一个 Transformer Block、展开 lm_head 的每个候选分数,再手算训练损失、概率抽取、温度、top-k 与 top-p。附三张双语图解、两个交互演示和可复算的完整代码。

2026-10-09·—阅读·—点赞·跟着 AI 学 AI

编号已经有了:minbpe 怎么恢复规则,又怎么处理特殊 Token

cl100k_base 给的是字节串到 rank / ID 的表,minbpe 要从中恢复左右两个组成部分。用 hello 追到 max_rank 为什么必须严格小于目标编号,再区分 merges 与完整 vocab、byte_shuffle 与原始字节。特殊标记则先由调用方策略决定走专用 ID 还是普通 BPE;最后核对完整编解码与测试范围。

2026-10-09·—阅读·—点赞·跟着 AI 学 AI

词表里的 Ġ 是什么:沿着 GPT-2 源码走完一次编解码

GPT-2 的 encoder.py 不直接合并字节编号,而是先把 256 种字节映射成可逆字符别名。沿着 Hi 你! 看清两张资源表、rank 与 ID、BPE 的两层循环、缓存和结束条件,最后把跨 token 的 UTF-8 字节拼齐再解码。附官方十四轮合并与七轮教学例子的交互动画。

2026-10-09·—阅读·—点赞·跟着 AI 学 AI

先划边界,再学合并:BPE 前面的那条正则

BPE 会把常挨在一起的字节合并,但不切块就会学出 e 加空格、逗号加空格这样的跨类别 token。GPT-2 用一条正则先划边界:每块独立统计和合并,全语料共用一张规则表。看懂四个缩进空格怎样被分成三加一,就能分清哪些差别来自正则,哪些来自训练。

2026-09-26·—阅读·—点赞·跟着 AI 学 AI

一张合并表就是分词器:为什么要分词,以及从零写 BPE

模型只看编号,分词器负责在文字和编号之间翻译。码点当 token 词表太大、字节当 token 序列太长,BPE 从 256 个字节出发,反复把最常挨在一起的一对合并成新 token —— 训练完手里只剩一张按顺序排好的合并表。编码时每一步挑表里最早学到的那一对,所以表里明明有 ' th',切 'the thin' 时却用不上:顺序决定结果。

2026-09-26·—阅读·—点赞·跟着 AI 学 AI

基础补课 · 一个「你」,五串字节:字符集管编号,编码管存储

第 23 篇说 tokenizer 把文本变成整数,但没说第一步是把文本变成字节。字符集只管「这是第几号字」,编码只管「这个号码写成哪几个字节」—— 分开之后,UTF-8 的四种模板能手算,半个汉字为什么显示成 � 有了确定的答案,而分词器词表最底下那 256 个条目也不再是约定,是机械事实。

2026-09-24·—阅读·—点赞·跟着 AI 学 AI

差别都在工程上:对照原论文和 nanoGPT,再看 GPT 怎么变成 ChatGPT

第二十五篇写出来的模型,对着 2017 年的原论文看是解码器那一半、去掉交叉注意力;对着 nanoGPT 看,结构几乎一模一样,差别都在工程。最值得啃的是多头合并那三行:c_attn 把小矩阵并排,view + transpose 把「头」挪到前面 —— 用一个 2 头的小例子手算到底。顺带修正一个说法(q 的偏置不是白加的),算清 6N 那笔账,最后看预训练、SFT、RLHF 怎么把一个只会续写的模型变成 ChatGPT。

2026-09-24·—阅读·—点赞·跟着 AI 学 AI

thou 后面那个 r 是怎么消失的:一个注意力头长成 GPT

把第二十四篇的注意力头装进模型,再堆深、放大,val 从 2.49 一路降到 1.48。多头的参数一个没多,提升来自分工;FFN 补上唯一的非线性;残差让深网络在初始化时约等于浅网络,LayerNorm 换个方向归一化,Dropout 只扔分支、不碰主干。同一个问题问了四次 —— thou 后面接什么:原文里一次都没出现过的 r,从第一名一路跌到 0.001。

2026-09-23·—阅读·—点赞·跟着 AI 学 AI

只改一行:注意力公式里的每一个符号是怎么来的

softmax(QKᵀ/√dₖ)V —— 这一篇把它的每个符号一个一个挣出来。从最笨的「求平均」开始,经过「下三角矩阵乘就是加权求和」「softmax 配 −∞ 屏蔽未来」,再到「分数由 q·k 算出来」:从求平均到注意力,代码只改了一行。encoder 和 decoder 也只差一行。最后那个 √dₖ,是第十五篇那条方差公式换了个地方用。

2026-09-21·—阅读·—点赞·跟着 AI 学 AI

初始 loss 比瞎猜还差一半:从莎士比亚到 2.49 这条基线

换数据集重开:莎士比亚、65 个字符的词表、一条 val 2.49 的 bigram 基线 —— 后面每加一个模块都跟它比。这三段没有新数学,但引入了两样贯穿整集的东西:token 是你自己定义的(顺带解释了阶段四为什么选 Qwen),以及 (B, T, C) 这三个形状。还有一个能一眼看穿的等价:查表就是一层没有偏置的全连接。

2026-09-20·—阅读·—点赞·跟着 AI 学 AI

差 0.0001:二十六步压成六组,手写的梯度训出了同一个模型

前三篇把 loss 到每个参数的二十六步全推了一遍,但那是打开黑盒逐步走。这一篇把黑盒合回去:交叉熵的八步压成一行、BatchNorm 的十步压成一行,用的是同一个方法 —— 数一数变量在前向里出现几次,反向就有几项。压完撤掉 backward() 训 20 万步,val loss 2.1105,而 PyTorch 训的是 2.1106。

2026-09-18·—阅读·—点赞·跟着 AI 学 AI

看着对的那一行:96 次查表落在 27 行上,和 Ex1 收官

最后五步,没有分叉点,前三步是上一篇的复制粘贴。真正新的是后两步:view 的反向为什么就是它自己的逆操作(判据只有一条 —— 数的个数变没变),以及 dC[Xb] += demb 这行看着完全正确的代码为什么是错的。跑完这五步,4137 个参数的梯度全部手算出来。

2026-09-18·—阅读·—点赞·跟着 AI 学 AI

同一个偏差,既当分子又去造分母:BatchNorm 反向的十三步

上一篇停在 logits —— 那是网络的边界,八步里一个参数都没碰到。这一篇往里走十三步,参数第一次出现。而 BatchNorm 那九步之所以是全集最绕的一段,原因和 softmax 是同一个:归一化的分子必须先被拿去造分母。顺带遇到第一个「系数不是 1」的求和反向,以及一个只差 3% 的错 —— 它的 maxdiff 小到像浮点误差。

2026-09-06·—阅读·—点赞·跟着 AI 学 AI

2.1752:先有尺子,再谈调参

模型的参数从 train 学,你的超参数从 val 学 —— 所以 test 得再留一份。切分要按名字不按样本,否则验证集当场被污染。调完参 val 2.1752,而那 27 个字符的嵌入图上,元音自己聚成了一团。

2026-09-05·—阅读·—点赞·跟着 AI 学 AI

27 维压成 2 维:结构是压缩逼出来的

one-hot 让 a 和 e 的关系与 a 和 q 完全相同,只有把 27 维压进 2 维才逼得出结构。上下文从 1 扩到 3,统计表 729 → 531441,第一层参数 8100 → 600;以及索引的形状规律和点积为什么不是余弦。

2026-09-03·—阅读·—点赞·跟着 AI 学 AI

从 2 类到 27 类:只需要补三个零件

猫狗二分类和「预测下一个字符」是同一件事,只是类别数从 2 变成 27。为此要补的三个零件:one-hot、softmax、交叉熵 —— 以及交叉熵为什么不是「更高级的平方误差」。