发布 QwQ-LongCoT-130K

社区文章 发布于 2024 年 12 月 5 日
kmmlu

图 1:使用 [Flux](https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design) 生成的可爱图片

今天,我很高兴发布 QwQ-LongCoT-130K,这是一个专为训练类似 O1 的大型语言模型(LLM)设计的 SFT 数据集。该数据集包含大约 13 万个实例,每个实例的响应都是使用 QwQ-32B-Preview 生成的。该数据集采用 Apache 2.0 许可证,因此您可以随意使用。

数据集链接:QwQ-LongCoT-130K

数据集构建

创建 QwQ-LongCoT-130K 的挑战在于策划真正值得进行更长链式思维推理的种子指令。简而言之,我不希望为简单的提示(例如“天空是什么颜色?”)生成数千个 token 的冗长响应。同时,我希望它们没有许可问题。因此,我使用以下两种方法收集种子指令。

最初,我从 NuminaMath-CoT 数据集中获取数据,该数据集包含 86 万个数学问题及其对应的答案。该数据集采用 Apache 2.0 许可证。为了增加多样性并包含数学以外的类别,我使用 Magpie 方法从 QwQ-32B-Preview 模型中提取问题。Magpie 的常见方法是输入一个空格(有时带有一个用户 token),并期望模型生成一个用户查询。然而,对于 QwQ-32B-Preview,我们观察到这种方法经常导致模型拒绝响应,通常会回复类似“如果您能提供更多细节,我将能够更好地协助您”的内容。此外,使用这种方法,我们几乎无法控制生成的指令。因此,在我们的实验中,我们使用以下模板:

import random
adjective = random.choice(["Physics", "Chemistry", "Biology", ...])
subject = random.choice([ "difficult", "tough", "long", "challenging", "tricky", ...])

This is one {adjective} {subject} question. I'll first repeat the question word-by-word before I start to solve.

收集完种子指令后,我使用 QwQ-32B-Preview 为每个指令生成一个响应。生成完成后,我应用简单的基于规则的过滤来删除包含“Sorry”或“As an AI model”等短语的响应。我还过滤掉了句子重复过多的实例,并试图排除包含中文字符的实例——尽管可能仍有一些残留。无论如何,仍有进一步改进的空间。

数据集分析

该数据集包含来自 NuminaMath 的 9 万个样本和通过 Magpie 生成的约 4.3 万个样本。在我第一次使用 Magpie 时,我意外地忘记记录用于生成每个指令的主题,但在下图中,您可以看到我没有忘记的主题分布(哎呀)。如果我能找到更多的计算资源,我计划添加更多的 Magpie 数据。

kmmlu

图 2:数据集分布

下面是 QwQ-LongCoT 数据集中实例长度分布的比较,其中使用 Magpie-Ultra 中的 top_300k_longer_conversations 子集作为基准。为了图表的可读性,我排除了 QwQ-LongCoT 数据集中一些超过 2 万个字符的异常值,尽管最长的样本有超过 17 万个字符。从图中可以看出,QwQ-LongCoT 通常包含更长的实例。

kmmlu

图 3:长度比较

使用 QwQ-LongCoT-130K 训练的经验教训

嗯,我最初尝试在一个简单的 SFT 设置中用这个数据集进行训练,结果发现效果不好。我的随机猜测是,QwQ-LongCoT 中的思维路径包含了故意生成错误陈述然后进行修正的情况。这种“故意生成错误内容”似乎对模型不利——我没有任何证据。我可能需要不同的方法来在 SFT 期间掩盖错误的轨迹,或者使用强化学习。这个模型仍然令人尴尬,不便分享,我还在尝试更多的训练运行,所以我希望很快能得到一个像样的、可分享的模型。

等等

非常感谢 Qwen 团队和 Project-Numina。
如果您有兴趣进一步探索该数据集或与我合作,请随时通过以下方式联系我:spthsrbwls123@yonsei.ac.kr

社区

注册登录 以评论