GPT的实现细节
Swift Lv6

关于GPT的代码细节,这里梳理了一下:

数据集构造

根据Transformer Decoder-Only特点,直接将多轮对话拼成一条session样本,过一次前向传播,得到多条回复的loss:

sample

而以往的方法是将多轮对话拆成多条样本,存在大量重复计算问题,效率低下。且该方法对于靠前轮次对话影响权重更大,不符合对话常识,靠后轮次应该权重更大,证明见:大模型微调样本构造trick

生成

karpathy/minGPT项目中,是直接粗暴地生成固定长度的文本。这样做的问题就是生成的文本无法判断何处截断。

在构造模型输入的时候,我们就加入了 <EOS> token,来标记文本的结束。那么在推理阶段,如果碰到该token,则结束生成

1
2
if token == "<EOS>":
break


参考

Powered by Hexo & Theme Keep
Unique Visitor Page View