#443·llama2.c

在小模型中与q8定量发生重大质量退化

作者: tzipproth创建于 2023年11月11日更新于 2025年2月18日

我观察到,在应用q8量化法时,生成文本的质量明显下降。 在浮点16训练的模型 在训练期间,我将q8量化模型与原型一起保存如下:

hill.save(检查点,os.path.join(出 dir,"ckpt.pt"))
model export(raw model, os.path.join (out dir, "model.bin"), 版本=0)
model export(raw model, os.path.join (out dir, “modelq8.

使用的超参数如下: dtype="float16", max seq len=512, dim=256, n layers=8, n heads=8, n kv heads=4, multile of=4. 导出后的型号尺寸为:型号.bin为18 MB;型号q8.bin为4.7 MB.

非定量模型就其大小产生了合理的文字. 然而,q8-量化模型的输出中包含的已不存在的字. 为了量化这一点,我用一个缩小了的TinyStories数据集进行了测试,该数据集只包含8,232个字,但大小仍为3.1GB.

从这个数据集,我利用模型.bin和modelq8.bin生成了5万个小故事.

其结果如下:

对于模型. bin 生成的文本 :

共计:7 166 263 培训单元中未出现词语总数:1 901 单词: 8,182 培训组中不独有的词:1 486个

对于模型q8. bin 生成的文本 :

共计:7 262 807 培训单元中未出现词语总数:179 535 独有词:55 211 培训组中不独有的词:48 494个

简而言之:

model.bin:在3,769个生成的词中,约有1个不在培训中。 modelq8.bin:40个生成词中约有1个不在培训中。

使用q8模型的已不存在字的频率的这种大幅上升,表明质量大幅下降,表明q8量化对于小模型来说可能过于激进,或者量化过程可能存在根本问题.

内容来源: karpathy/llama2.c