在大语言模型不断进步的今天,尽管它们能处理的输入上下文已超过100k+ tokens,但在输出长文本时常常受限。为了解决这一问题,研究者们尝试了分步生成的方法,即让模型分段撰写,虽然这在一定程度上缓解了问题,却也带来了效率低下和内容不连贯的副作用。

突破限制

研究团队发现,模型输出长度受限的主要原因是监督微调(SFT)数据集中缺乏足够长的文本样例。为了克服这一限制,他们构建了一个名为LongWriter-6k的数据集,包含6000多条2k至20k词的长文本样本。利用这个数据集,研究者们对GLM-4-9B模型进行了SFT微调和DPO对齐,成功提升了模型生成超过10,000字连贯文本的能力。

实际应用

研究者们使用LongWriter-9B模型,以“黑神话・悟空”为题,撰写了一部玄幻小说,展示了模型在实际应用中的表现。此外,他们还提供了相关资源的链接,包括论文、代码、模型和数据集,以便其他研究者和开发者进一步探索和利用。

技术细节

通过对现有长上下文模型的测试,研究者们发现所有模型生成的内容几乎都不超过2000字。进一步的研究发现,模型的最大生成长度实际上被SFT数据集中的输出长度上限所限制。基于这一发现,他们设计了名为“AgentWrite”的pipeline,通过分解长生成任务,让现有模型生成更长且连贯的文本。

训练与优化

研究者们从GLM-4的SFT数据和WildChat-1M中筛选并生成了6000条长输出的SFT数据,即LongWriter-6k。在模型训练中,他们将这些数据与通用SFT数据结合,形成了完整的训练集。通过对GLM-4-9B和Llama-3.1-8B模型进行SFT微调,以及对LongWriter-9B模型进行DPO优化,研究者们进一步提升了模型的输出质量和遵循长度约束的能力。

结果评估

在LongBench-Write评测中,研究者们对比了多个专有模型和开源模型,结果显示LongWriter模型在超过2000字长度要求的任务中,始终提供更长且更丰富的响应。DPO优化显著提升了模型的输出质量和遵循长度要求的能力。研究者们认为,通过构建更长的SFT训练数据,可以进一步突破模型输出长度的限制,达到100k甚至更长的输出长度。