注册并分享邀请链接,可获得视频播放与邀请奖励。

Mengxin Liu (@liumengxinfly) “看到 Redis 的作者 X 上发声,说总有人反复说中国的模型是蒸馏出来的,是根本不懂机器” — TopicDigg

Mengxin Liu 的个人资料封面
Mengxin Liu 的头像
Mengxin Liu
@liumengxinfly
Kube-OVN Creator | @AlaudaInc Founding Engineer | |
加入 February 2010
242 正在关注    4K 粉丝
看到 Redis 的作者 X 上发声,说总有人反复说中国的模型是蒸馏出来的,是根本不懂机器学习。 之前看到有人说中国的模型是蒸馏出来的我还都会辩驳一番,后来实在是见到太多了,累了不想说了,干脆写出来算了。 很多人说蒸馏其实根本不知道蒸馏是什么,他们背后的意思可能是收集了大量的 Claude/ChatGPT 的对话就能让自己的模型能力也变成和 Claude/ChatGPT 一样,但根本没考虑技术上的可行性。 举个图像识别的例子,如果有一个模型可以识别动物,我想把它蒸馏到我自己的模型。如果我只是拿图片和老师模型分类结果给到学生模型,那这个蒸馏毫无意义。因为这和我直接拿标注好的样本进行训练没有区别,甚至标注结果比老师模型更准确,用老师模型的结果反而会降低准确性。 如果老师模型的分类结果对蒸馏没有意义,那什么对蒸馏有意义?有意义的是最终结果前一层各个分类的权重。例如分类识别结果是猫,那前一层可能是猫的概率 80%,老虎概率 5%,豹子概率 7%,狗概率 0% ...,这一层其实才是模型的预测概率分布,是学生模型要学的。因为这里面比最后一个单一的结果包含了更多的隐含信息,比如猫和豹子更像,和狗更不像,这个更接近真实世界的概率分布。 在 LLM 里也是类似的,看似 LLM 是生成下一个 Token,其实生成的是下一个 Token 的一个概率分布。本质上 LLM 的参数是固定的,那么同样的输入,对应输出也是固定的。现在之所以每次对话生成都不一样,是因为在输出的时候并不是选择概率最大的那个 Token,而是在一定概率范围内随机挑一个 Token 导致的输出随机性。这也就是 Temperature, Top-k 这些参数干的事情,调整最后的概率分布,增加输出的随机性。 所以只是收集 Claude/ChatGPT 的大量对话输出并没有办法做严格意义的蒸馏,因为无法获得概率分布的信息,也就没有办法让模型快速收敛到 Claude/ChatGPT 的样子。 那么用这些对话输出做 SFT 呢,蒸馏概念扩张后也有人把这一类叫做语料蒸馏。理论上是可以的,但是 SFT 通常作用是把语言风格和偏好进行对齐,一般认为 SFT 会牺牲大模型本身的泛化能力和智能水平,变得更像一个专业模型,我个人倾向于认为这种方式无法让模型获得能力上的提升。 再有一种可能就是把这些对话内容直接作为预训练语料的一部分。在现有的模型论文里也可以看到预训练的时候已经开始使用生成数据了。但是一般认为这种工具调用和 agent 能力需要通过大规模的 RL 才能激发出来,在预训练阶段能发挥多大作用我比较怀疑。而且预训练其实更需要通用的能力,不可能让大量生成数据污染整体的数据质量。我个人倾向猜测预训练阶段会有一部分从 Claude/ChatGPT 来的数据,甚至很难避免,因为他们已经大量成为这个世界数据的一部分了,但靠这个是远远无法实现类似的编码和 agent 能力的。 你看别人只是说一句模型蒸馏,我要费那么大劲去解释,真的是不想再说了。
显示更多
0
10
53
4
转发到社区