LongWriter: 基于LLM代理可以将输出窗口大小扩展到10,000+个单词

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文介绍了一种名为AgentWrite的方法,旨在克服大型语言模型(LLM)生成长文本时的局限。通过将任务分解为子任务,AgentWrite使LLM能生成超过20,000词的连贯文本。研究揭示了监督微调数据中的输出长度限制是导致LLM生成长度受限的主要原因。通过构建LongWriter-6k数据集并对模型进行再训练,成功扩展了输出长度至10,000词以上,且未牺牲输出质量。

LLM可以处理长达100,000个token的输入,但在生成超过2,000词的适度长度输出时仍然面临困难,因为模型的有效生成长度本质上受到其在监督微调(SFT)过程中所见样本的限制。

为解决这个问题,本文的作者引入了AgentWrite,这是一个基于代理的流程,它将超长生成任务分解为子任务,使现成的LLM能够生成超过20,000词的连贯输出。

主要贡献如下:

  • 介绍了限制当前(长上下文)LLM输出长度的主要因素,即SFT数据中对输出长度的约束。
  • 提出AgentWrite,使用分而治之的方法和现成的LLM自动构建具有超长输出的SFT数据。并且使用这种方法,构建了LongWriter-6k数据集。
  • 将LongWriter-6k数据集进行SFT训练,成功地将现有模型的输出窗口大小扩展到10,000+词,同时不影响输出质量。

成长度限制的原因

论文先构建LongWrite-Ruler评估(创建8个不同的指令,中英文各4个,并在指令中改变输出长度要求"L")来探测LLM的生成长度限制。然后,通过改变模型SFT阶段数据的最大输出长度,发现训练模型在LongWrite-Ruler测试中的最大输出长度与SFT数据的最大输出长度显示出显著的正相关。

如下图所示,LongWrite-Ruler测试表明所有测试模型的最大输出长度限制约为2k词。

对照实验

在这三个训练集上训练GLM-4-9B模型,并测量结果模型在LongWriter-Ruler上的最大输出长度。下图显示了在不同最大输出长度的SFT数据集上训练的GLM-4-9B的LongWriter-Ruler测试。

上图表明,模型的最大输出长度与SFT数据中的最大输出长度成正比增加,分别达到约600、900和1,800词。

AgentWrite: 自动数据构建

AgentWrite是一个分而治之风格的代理,流程如下图所示。

AgentWrite首先将长写作任务分解为多个子任务,每个子任务要求模型只写一段。然后模型依次执行这些子任务,我们将子任务输出连接起来以获得最终的长输出。

更详细的描述概述如下步骤:

i) 步骤1: 规划

使用LLM根据写作指令生成写作大纲,其中包括每段的主要内容和字数要求。使用的提示如下:

ii) 步骤2: 写作

串行调用LLM完成每个子任务,逐节生成写作内容。为确保输出的连贯性,在调用模型生成第n节时,还输入之前生成的n-1节,允许模型基于现有的写作历史继续写下一节。

使用的提示如下:

iii) 验证

在两个长篇写作数据集上测试了所提出的AgentWrite方法的生成长度和质量

a) LongWrite-Ruler

用于精确测量该方法可以提供多长的输出。

b) LongBench-Write

通过收集120个不同的用户写作提示构建了这个数据集,其中60个是中文,60个是英文。为评估模型的输出长度是否满足用户要求,作者确保所有这些指令都包含明确的字数要求,组织成四个子集:0-500词、500-2,000词、2,000-4,000词和4,000词以上。

该数据集的关键统计数据如下:

采用两个指标进行评估:一个用于评分输出长度,另一个用于评分输出质量。模型的输出长度应尽可能接近指令中规定的要求。因此,我们使用分段线性函数计算输出长度得分Sl(其中l是要求的长度,l'是实际输出长度):

验证结果

下图显示了LongWrite-Ruler上的输出长度测量结果

观察到AgentWrite成功将GPT-4o的输出长度从最大2k词扩展到约20k词。考虑到GPT-4o在评估AgentWrite性能时可以成功完成输出长度不超过2,000词的任务,所以仅在要求输出长度为2,000词或更多的指令上应用AgentWrite。此外还评估了AgentWrite的一个变体,表示为"+Parallel",它在步骤2中并行调用模型为每个段落生成输出。

下表概述了LongBench-Write上AgentWrite策略的评估:

在整合AgentWrite后,GPT-4o可以生成长达20k词的内容。这显著提高了GPT-4o的长度跟随得分(Sl),特别是在[4k, 20k)词的输出长度范围内。检查质量得分(Sq),可以看到AgentWrite在扩展长度的同时不会影响输出质量。通过比较六个维度的质量得分,发现AgentWrite显著提高了广度和深度得分(+5%),同时略微降低了连贯性和清晰度得分(-2%)。虽然+Parallel略微提高了模型的输出长度得分,但它损害了AgentWrite的输出质量,特别是在连贯性方面(-6%)。这表明在AgentWrite的步骤II中为模型提供先前生成的上下文是必要的。

LongWriter: 教会模型生成更长的输出

i) 数据构建

从GLM-4的SFT数据[2]中选择了3,000条指令,主要是中文。从WildChat-1M3中选择了3,000条指令,主要是英文。并使用GPT-4o进行自动选择过程。手动检查自动选择的指令,并验证超过95%的指令确实需要几千词的回应。

对于这6,000条指令,使用带有GPT-4o的AgentWrite流程来获得回应。进一步对获得的数据进行后处理,包括过滤掉太短的输出和因AgentWrite步骤I中获得的规划步骤过多而导致模型输出崩溃的情况,其中包括0.2%的数据被过滤掉。

清理模型可能在每个输出部分开头添加的无关标识符,如"段落1"、"段落2"等。我们将最终获得的长输出数据集称为"longwriter-6k"。为确保模型的通用能力,将longwriter-6k与通用SFT数据结合,形成整个训练集。

ii) 模型训练

a) 监督微调

基于两个最新的开源模型进行训练,即GLM-4-9B和Llama-3.1-8B。对这两个模型的训练结果是两个模型:LongWriter-9B(GLM-4-9B-LongWriter的缩写)和LongWriter-8B(Llama-3.1-8B-LongWriter的缩写)。

b) 对齐(DPO)

对监督微调的LongWriter-9B模型进行直接偏好优化。DPO数据来自GLM-4的聊天DPO数据(约50k条)。还专门针对长篇写作指令构建了4k对数据。

对于每个写作指令,从LongWriter-9B中抽样4个输出,并按照[4]中的方法对这些输出进行评分。然后我们选择得分最高的输出作为正样本,并从剩余的三个输出中随机选择一个作为负样本。结果模型LongWriter-9B-DPO在上述数据混合上训练了250步。

实验结果

下表概述了在LongBench-Write上的评估结果。由于使用GPT4-o来判断输出质量Sq,在判断自身时可能带来不公平。

i) 大多数之前的模型无法满足超过2,000词的长度要求,而LongWriter模型能够持续为此类提示提供更长、更丰富的回应。

之前的模型在[2k, 4k)范围的提示上普遍表现不佳(得分低于70),只有Claude 3.5 Sonnet达到了不错的分数。

对于[4k, 20k)范围的提示,几乎所有之前的模型都完全无法达到目标输出长度,甚至得分为0(意味着所有输出长度都小于要求长度的1/3)。

通过添加来自LongWriter-6k的训练数据,作者训练的模型可以有效地达到要求的输出长度,同时保持良好的质量,这从[2k, 20k)范围的Sl和Sq以及下图的散点图中可以看出。

在测试中,作者使用了两个现有的支持128k上下文窗口的长上下文模型:GLM-4-9B和Llama-3.1-8B。下图报告了它们在三个LongWriter模型生成的约100个长于8,192个token的文本样本的不同位置上的累积平均NLL损失。较低的NLL值表示更好的预测。

两个模型在后期位置的预测显著改善,表明LongWriter模型输出中存在长程依赖。

ii) DPO有效提高了模型的输出质量和在长生成中遵循长度要求的能力

通过比较LongWriter-9B和LongWriter-9B-DPO的得分,作者发现DPO显著提高了Sl(+4%)和Sq(+3%)得分,并且改进在所有范围内都是一致的。

作者手动注释了GPT-4o和三个longwriter模型在LongBench-Write中输出的成对胜负,并在下图中可视化了结果。

iii) LongWriter模型的输出长度限制扩展到10k到20k词之间,而需要更多具有长输出的数据来支持更长的输出

下图显示了LongWriter模型的LongWrite-Ruler测试结果,显示它们的最大生成长度在10k-20k词之间。

总结

这篇论文确定了当前LLM的2,000词生成限制,并提出通过在对齐过程中添加长输出数据来增加它们的输出窗口大小。为自动构建长输出数据,开发了AgentWrite,这是一个基于代理的流程,使用现成的LLM创建扩展的、连贯的输出。

使用论文构建的LongWriter-6k成功地将当前LLM的输出窗口大小扩展到10,000+词。

https://avoid.overfit.cn/post/509d148d53554a28b7532a0b8b42ec61

目录
相关文章
|
5月前
|
存储 算法 调度
探索AIOS:LLM智能代理操作系统的未来
【4月更文挑战第5天】AIOS是一种创新的LLM智能代理操作系统,旨在解决资源分配、上下文维护和异构代理集成的挑战。它将OS作为代理的“大脑”,采用模块化设计优化LLM功能,包括代理调度、上下文管理、内存和存储管理。AIOS提供并发执行、工具集成及访问控制,提升效率和安全性。其SDK加速应用开发,开源特性促进研究合作。尽管有调度优化、上下文管理效率和安全性的改进空间,AIOS为智能代理的发展开辟了新途径。
393 11
探索AIOS:LLM智能代理操作系统的未来
|
2月前
|
存储 自然语言处理 索引
|
3月前
|
人工智能 数据可视化 数据挖掘
LLM代理应用实战:构建Plotly数据可视化代理
构建数据可视化代理解决了LLM(大型语言模型)在理解和生成定制图表时的局限性。代理提供DataFrame信息和自定义样式工具,简化与LLM的交互。选择了Plotly而非Matplotlib,因其交互性和Web渲染能力更适合现代可视化。代理通过元数据索引了解数据集详情,并根据样式指示生成符合特定审美的图表。通过ReActAgent和Groq模型,代理能理解用户指令,生成准确的Plotly代码,从而创建定制图表,提高了数据可视化的效率和准确性。
93 1
|
5月前
|
自然语言处理
LLM上下文窗口突破200万!无需架构变化+复杂微调,轻松扩展8倍
【5月更文挑战第12天】LongRoPE研究突破LLM上下文窗口限制,无需架构变更和复杂微调,实现8倍扩展至2048万个token。该方法利用位置嵌入非均匀性,通过高效搜索和优化初始化,适用于处理长文本任务,对模型性能影响小。但可能需要较多计算资源,且2048万的长度是否足够所有任务尚待探讨。[论文链接](https://arxiv.org/abs/2402.13753)
158 1
|
5天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
|
3天前
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
5天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
4天前
|
人工智能 前端开发
大模型体验体验报告:OpenAI-O1内置思维链和多个llm组合出的COT有啥区别?传统道家理论+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布时,虽然让人提前体验,但自己并未进行测试。近期终于有机会使用,却仍忘记第一时间测试。本文通过两个测试案例展示了o1的强大能力:一是关于丹田及练气的详细解答,二是解决一道复杂的中学生物理奥赛题。o1的知识面广泛、推理迅速,令人印象深刻。未来,或许可以通过赋予o1更多能力,使其在更多领域发挥作用。如果你有好的测试题,欢迎留言,一起探索o1的潜力。
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
前端大模型入门(三):编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
本文介绍了大规模语言模型(LLM)中的两个核心概念:Tokenizer和Embedding。Tokenizer将文本转换为模型可处理的数字ID,而Embedding则将这些ID转化为能捕捉语义关系的稠密向量。文章通过具体示例和代码展示了两者的实现方法,帮助读者理解其基本原理和应用场景。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
企业内训|LLM大模型技术在金融领域的应用及实践-某商业银行分行IT团队
本企业培训是TsingtaoAI技术团队专们为某商业银行分行IT团队开发的LLM大模型技术课程。课程深入分析大模型在金融行业中的发展趋势、底层技术及应用场景,重点提升学员在大模型应用中的实际操作能力与业务场景适应力。通过对全球商用 LLM 产品及国内外技术生态的深度对比,学员将了解大模型在不同企业中的发展路径,掌握如 GPT 系列、Claude 系列、文心一言等大模型的前沿技术。针对金融行业的业务需求,学员将学会如何结合多模态技术改进用户体验、数据分析等服务流程,并掌握大模型训练与工具链的实操技术,尤其是模型的微调、迁移学习与压缩技术。
32 2