大家好,我是刘聪NLP。
就在今晚,Kimi发布了最新模型k1.5, 先来看榜单效果,简直爆炸 。
在长推理上,k1.5在数学能力上,无论是纯文本还是视觉多模态上,都远超openai的o1模型;在codeforces与其持平,LiveCode上略差,但相比于QVQ和QWQ有较大的优势。
在短推理上,k1.5的数学能力真实遥遥领先,无论是gpt-4o还是claude3.5-sonnet都远不如k1.5, 尤其是在AIME榜单上,k1.5有60.8,而最高的deepseek-v3只有39.2,堪称断层式碾压。 这个应该得益于他们的Long2short RL技术(后面介绍);并且k1.5在其他场景中大多都跟顶尖的开源和闭源模型打成平手。 有一说一,这次kimi的新模型有点东西的哈。
最重要的是kimi发了技术报告《 Kimi k1.5: Scaling Reinforcement Learning with Large Language Models 》,看了一下,25页,干货满满,他家针对强化学习,真的是做了好多工作,无论是data、strategy、还是Infra。
Paper link: https://github.com/MoonshotAI/Kimi-k1.5/blob/main/Kimi_k1.5.pdf
先简单看了一下,让我印象最深刻的就是 RL数据收集 部分、 Long2short 部分、以及 Infra 的Hybrid Deployment Framework 部分。
Long2short部分,这个应该k1.5模型可以在短推理上取得超优效果的核心。自从o1出来之后,我们都知道,增加test time可以提高模型的推理效果,大大提高模型智能,这也是为什么o1出来后,又带起一波LLM新浪潮的原因。
但 long-cot虽然优秀,但在推理阶段需要消耗大量的token预算,以及时间 ,那么是不是可以将long-cot模型的推理先验知识转移到short-cot模型中呢?k1.5尝试了多种方法:
- 模型合并 :之前都是通过模型合并来提高模型的泛化性,k1.5发现long-cot模型和short-cot模型也可以合并,从而提高输出效率,中和输出内容,并且无需训练。
- 最短拒绝采样 :对于模型输出结果进行n次采样(实验中n=8),选择最短的正确结果进行模型微调。
- DPO :与最短拒绝采样类似,利用long-cot模型生成多个输出结果,将最短的正确输出作为正样本,而较长的响应(包括:错误的长输出、比所选正样本长 1.5 倍的正确长输出)作为负样本,通过构造的正负样本进行DPO偏好学习。
- Long2Short的强化学习 :在标准的强化学习训练阶段之后,选择一个在性能和输出效率之间达到最佳平衡的模型作为基础模型,并进行单独的long-cot到short-cot的强化学习训练阶段。在这一阶段,采用长度惩罚,进一步惩罚超出期望长度,但保证模型仍然可能正确的输出答案。
Long2short效果如下所示,在提高输出效率的同时,大幅度提高模型效果。
RL数据收集部分,我觉得kimi真的 说到的了我的心趴上 。毕竟在做LLM之后,我很长一段时间都在做数据相关的工作。而RL阶段依然也不例外,强化学习阶段数据的质量和多样性,不仅能够引导模型进行稳健的推理,还能减少 reward hacking 和overfitting的风险。
高质量的RL提示数据的三要素:
- 覆盖范围-广 :提示数据应涵盖广泛的学科领域,如科学、技术、工程和数学(STEM)、代码和一般推理,增强模型在不同领域的普适性。这里k1.5开发了一个标签系统,对提示按照领域和学科进行分类,确保不同学科领域的数据平衡。
- 难度分布-均 :提示数据应包含易、中、难不同难度级别的问题,让模型逐步学习,防止模型过拟合到一些特定复杂的问题上。这里k1.5通过模型自身的推理能力,来评估每个prompt的难度,就是对相同的prompt利用相对较高温度生成10次答案,然后计算答案的通过率,通过率越低,代表prompt难度越高。
- 可评估性-准 :提示数据应允许验证器进行客观且可靠的评估,确保模型结果是基于正确的推理过程,而不是简单模式或随机猜测。这里k1.5利用没有任何链式推理步骤的情况下预测可能的答案,如果在N次尝试内,均预测正确答案,认为该prompt容易产生reward hacking。
在k1.5的报告中,写了大段infra的内容,看完之后受益匪浅,因为我本身不是做infra的,所以对infra的很多细节,之前并不是很了解,看完k1.5的内容之后,真的学到很多。
其中,Hybrid Deployment Framework部分,有一些工程上的东西的。RL阶段主要有以下几个阶段:
- 训练阶段 :Megatron(Shoeybi et al. 2020)和 vLLM(Kwon et al. 2023)分别在独立的容器中运行,这些容器被一个名为 检查点引擎(checkpoint-engine) 的外壳进程封装(详见第 2.6.3 节)。Megatron 首先启动训练过程。训练完成后,Megatron 会释放 GPU 内存,并准备将当前权重传递给 vLLM。
- 训练阶段 :Megatron和 vLLM分别在独立的容器中运行,容器称为checkpoint-engine的外壳进程封装。Megatron 首先启动训练过程,训练完成后,Megatron 会释放 GPU 内存,并准备将当前权重传递给 vLLM。
- 推理阶段 :在 Megatron 释放内存后,vLLM 以虚拟模型权重启动,并通过 Mooncake 从 Megatron 接收最新的权重更新。完成回放后,checkpoint-engine会停止所有 vLLM 进程。
- 后续训练阶段 :释放 vLLM 所占用的内存后,Megatron 重新加载内存并开始下一轮训练。
而现有框架很难同时满足以下所有特性:
- 复杂的并行策略 :Megatron 和 vLLM 可能采用不同的并行策略。Megatron 中分布在多个节点上的训练权重很难与 vLLM 共享。
- 最小化闲置 GPU 资源 :对于在线策略强化学习,SGLang和 vLLM可能会在训练过程中保留一些 GPU,导致训练 GPU 的闲置。如何共享相同的设备,将训练变得更加高效。
- 动态扩展能力 :通过增加推理节点的数量,同时保持训练过程不变,可以显著加速训练。如何高效利用闲置的 GPU 节点。
如图下图所示,k1.5在Megatron 和 vLLM 的基础上实现了这种混合部署框架,将训练阶段切换到推理阶段的时间 缩短到不到一分钟 ,而从推理阶段切换到训练阶段大约 只需要十秒。
我看完整个paper,是学到不少, 还有一些其他的内容,后面有机会在继续给大家分享吧 ,期待其他infra大佬和rl大佬来解读。
最后说一下,k1.5 刚刚发布,现在正在进行灰度上线,也许你马上成为那个幸运儿,可以提前体验到k1.5的整体效果。我反正是十分期待ing。
PS:看到这里,如果觉得不错,可以来个点赞 、在看 、关注 。给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「NLP工作站」,加入交流群,交个朋友吧,一起学习,一起进步!