
一个脚本,五千句语料进去,56 秒之后出来一个能答话的模型,中间经过预训练、指令微调、偏好对齐、量化。每一步之后量三个数:验证集困惑度、自由写句子的合法率、问四个从没进过任何训练数据的人能答对几个。困惑度看它还会不会写这…

推理时的显存,一头是 KV cache,另一头是权重本身。一个 fp32 参数占 4 字节,换成 int8 剩 1 字节,换成 int4 只剩半个字节。我拿困惑度那篇里那个预训练模型做实验,一位一位往下砍,看它什么时候还…

生成循环在讲采样那篇里是这么写的:把已有的字送进模型,取最后一个位置的分布,采一个字接上去,再把整段送一遍。每多一个字,前面那些字都得重新过一遍整个模型。 两种写法,同样的输出 笨办法 每一步把整段送进模型。带缓存 每一…

数据并行跑起来,每个进程手上都有一整份模型、一整份梯度、一整份优化器状态,四个进程就是四份。讲数据并行那篇没提这件事。模型并行为了放下模型把它切开,代价是每一层都要通信。ZeRO 走第三条路,模型该怎么算还怎么算,只把那…

数据并行解决的是一批数据算得慢,每张卡上放的还是整个模型。这回是模型本身就放不进一张卡。前面把显存一项项数过。参数、梯度、优化器状态加起来超过卡的容量时,数据并行帮不上忙,得把模型本身切开。切法有两种,一种横着切每一层里…

一张 24GB 的卡能塞多大的模型,前面算过。塞得下之后,还得看一批数据要算多久。数据并行的办法是把这一批拆开,几张卡各算各的,再把梯度合到一起。我在一台没有显卡的笔记本上开了四个进程,用 PyTorch 自带的 glo…

RLHF 的三个阶段跑完,中间那个奖励模型在没见过的提示上只有六成准,策略照着它爬,就爬歪了。DPO 用四步代数把这一步整个消掉,偏好数据直接进策略的损失函数。 那个目标有闭式解 RLHF 要最大化的目标是 J(π)=E…

指令微调训出了一个会照格式作答的模型,奖励模型那篇训出了一个能给回答打分的函数。RLHF 的第三步是拿第二步那个分数去改第一步那个模型。三步接起来跑一遍,看它什么时候有用、什么时候把事情办坏。 三个阶段各自吃什么 imp…

模型会照着问答格式说话了,这是指令微调教的;LoRA 又把那次微调压到了 4.35% 的参数。这两篇里没有任何一步告诉过模型「哪个答案更好」,它学的全是「照着这个样子写」。要让它知道好坏,得先有一个能说清好坏的数。 标注…

指令微调那篇用六条问答把一个只会续写的模型改造成了会应答的模型。那一次微调动了它全部 636032 个数。六条句子换六十三万个数,看着就不划算。 六条句子,动了六十三万个数 先把那次指令微调原样重做一遍,顺带记下每个矩阵…

预训练模型只会接着往下写。你问它一个问题,它不回答,它把这句问话当成一段没写完的文本,顺着续下去。「不会答」跟「不知道」听上去像一回事,其实能分开来量。 它知道,但它不答 我先训一个底模,再拿两种问法去问它。 impor…

困惑度是报告语言模型时最常见的那个数,可它单独拿出来,几乎什么都比不了。 定义只有一行 前面讲过交叉熵。困惑度就是交叉熵取指数: PPL=eH=exp(−1N∑i=1Nlogp(xi∣x<i)) \mathrm{PP…