LongWriter: Unleashing 10,000+ Word Generation from Long Context LLMs

📄 arXiv: 2408.07055v1 📥 PDF

作者: Yushi Bai, Jiajie Zhang, Xin Lv, Linzhi Zheng, Siqi Zhu, Lei Hou, Yuxiao Dong, Jie Tang, Juanzi Li

分类: cs.CL, cs.LG

发布日期: 2024-08-13

🔗 代码/项目: GITHUB


💡 一句话要点

LongWriter:通过长输出数据对齐,解锁长上下文LLM的万字以上生成能力

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 长文本生成 长上下文LLM 监督微调 数据增强 AgentWrite LongWriter-6k LongBench-Write

📋 核心要点

  1. 现有长上下文LLM虽然能处理长输入,但生成长度受限,主要原因是缺乏长输出的监督微调数据。
  2. 论文提出AgentWrite,通过代理将超长生成任务分解为子任务,生成高质量的长文本数据。
  3. 构建LongWriter-6k数据集并微调模型,显著提升了生成长度和质量,并在LongBench-Write上取得SOTA。

📝 摘要(中文)

当前的长上下文大型语言模型(LLM)可以处理高达10万个token的输入,但难以生成超过2000字的输出。通过受控实验,我们发现模型的有效生成长度本质上受到监督微调(SFT)期间所见样本的限制。换句话说,它们的输出限制是由于现有SFT数据集中缺乏长输出示例。为了解决这个问题,我们引入了AgentWrite,一个基于代理的pipeline,将超长生成任务分解为子任务,使现成的LLM能够生成超过20000字的连贯输出。利用AgentWrite,我们构建了LongWriter-6k,一个包含6000个SFT数据的数据集,输出长度范围从2k到32k字。通过将此数据集纳入模型训练,我们成功地将现有模型的输出长度扩展到10000字以上,同时保持了输出质量。我们还开发了LongBench-Write,一个用于评估超长生成能力的综合基准。我们9B参数的模型,通过DPO进一步改进,在这个基准上实现了最先进的性能,甚至超过了更大的专有模型。总的来说,我们的工作表明,现有的长上下文LLM已经具备了更大的输出窗口的潜力——你所需要的只是在模型对齐期间使用具有扩展输出的数据来解锁这种能力。

🔬 方法详解

问题定义:现有长上下文LLM虽然能够处理长输入,但在生成长文本时存在显著的长度限制,通常难以生成超过2000字的连贯文本。这限制了它们在需要长篇内容生成的应用中的潜力。现有方法的痛点在于,监督微调(SFT)数据集缺乏足够长的输出样本,导致模型无法学习生成长文本的能力。

核心思路:论文的核心思路是通过构建包含大量长输出样本的SFT数据集来解决长文本生成问题。具体而言,他们设计了一个基于代理的pipeline(AgentWrite),将超长文本生成任务分解为多个子任务,从而利用现有的LLM生成高质量的长文本数据。然后,使用这些数据对模型进行微调,使其能够生成更长的文本。

技术框架:整体框架包含两个主要部分:1) AgentWrite pipeline:该pipeline负责生成长文本数据,它将长文本生成任务分解为多个子任务,并使用LLM作为代理来完成这些子任务。2) 模型微调:使用AgentWrite生成的数据集(LongWriter-6k)对现有的LLM进行微调,使其能够生成更长的文本。同时,论文还提出了LongBench-Write基准,用于评估长文本生成能力。

关键创新:最重要的技术创新点在于AgentWrite pipeline,它能够有效地生成高质量的长文本数据,从而解决了SFT数据集中缺乏长输出样本的问题。与直接让LLM生成长文本相比,AgentWrite通过分解任务,降低了生成难度,提高了生成质量。

关键设计:AgentWrite pipeline的关键设计包括:1) 任务分解策略:如何将长文本生成任务分解为合适的子任务?2) 代理选择:选择哪个LLM作为代理?3) 子任务执行:如何控制代理执行子任务?4) 数据过滤:如何过滤掉质量较差的生成结果?此外,LongWriter-6k数据集的构建也需要考虑数据多样性和质量。

🖼️ 关键图片

img_0

📊 实验亮点

论文构建了LongWriter-6k数据集,包含2k到32k字的长文本数据。通过在该数据集上微调9B参数的模型,成功将生成长度扩展到10000字以上,并在LongBench-Write基准上取得了SOTA性能,甚至超过了更大的专有模型。DPO的进一步优化也带来了性能提升。

🎯 应用场景

该研究成果可广泛应用于需要长文本生成的领域,如小说创作、报告撰写、新闻报道、论文写作等。通过提升LLM的长文本生成能力,可以显著提高内容创作的效率和质量,并为用户提供更丰富的创作工具。未来,该技术有望应用于智能客服、教育辅导等领域,实现更个性化和深入的交互。

📄 摘要(原文)

Current long context large language models (LLMs) can process inputs up to 100,000 tokens, yet struggle to generate outputs exceeding even a modest length of 2,000 words. Through controlled experiments, we find that the model's effective generation length is inherently bounded by the sample it has seen during supervised fine-tuning (SFT). In other words, their output limitation is due to the scarcity of long-output examples in existing SFT datasets. To address this, we introduce AgentWrite, an agent-based pipeline that decomposes ultra-long generation tasks into subtasks, enabling off-the-shelf LLMs to generate coherent outputs exceeding 20,000 words. Leveraging AgentWrite, we construct LongWriter-6k, a dataset containing 6,000 SFT data with output lengths ranging from 2k to 32k words. By incorporating this dataset into model training, we successfully scale the output length of existing models to over 10,000 words while maintaining output quality. We also develop LongBench-Write, a comprehensive benchmark for evaluating ultra-long generation capabilities. Our 9B parameter model, further improved through DPO, achieves state-of-the-art performance on this benchmark, surpassing even much larger proprietary models. In general, our work demonstrates that existing long context LLM already possesses the potential for a larger output window--all you need is data with extended output during model alignment to unlock this capability. Our code & models are at: https://github.com/THUDM/LongWriter.