1. 为什么要钻研 LongWriter
随着大言语模型的开展,越来越多的大言语模型都具有了长高低文才干,甚至有的到达了100万token。然而,相较于大家关注的海量输入,大模型的生生长篇幅的内容时就显得力所能及了。
比如,如上图,作者在各种模型上要求生成超越2000字的内容时,基本上都没有成功。随着提醒词中要求输入的内容长度的参与,输入的最终长度一直逗留在2K左右。然而,在对WildChat的用户日志剖析时发现,有 1% 的用户明白要求生成的内容长度要超越2K,这证实生生长篇幅内容也是大家迫切须要的才干之一。
2. 为什么大少数模型只能生成2K左右的内容?
为了探求为什么简直一切的模型都只能生成2K左右的数据这一疑问,作者启动了一系列试验。
首先,创立了LongWrite-Ruler评价工具,来探求大言语模型(LLMs)的生生长度下限。
接着,剖析了生生长度受限的基本要素:经过调整模型在监视微调(SFT)阶段数据的最大输入长度,发现训练后的模型在LongWrite-Ruler测试中的最大输入长度与其SFT数据的最大输入长度存在清楚的正相关性。
在此论文中,一致以单词(或中文文本的字符)来权衡输入长度,而不是token,由于不同模型的token化方法或者会有所不同。
LongWrite-Ruler 测试方案
制订了8条不同指令,中英文各半,并在指令中调整输入长度要求“L”。
例如,“撰写一篇关于罗马帝国历史的L词文章”。测试时,选取L值包括{1000, 2000, 5000, 10000, 20000, 30000},共发生了48个测试案例。
测评环节
在LongWrite-Ruler上对4个开源模型和4个专有模型启动了最大输入长度的测量(评价模型的详细消息如上表)。
• 温度参数设为0.5
• 关于专有模型,依据各自模型API支持的最大输入长度设置了max tokens参数。
• 关于开源模型,将其设为32k。确保了没有模型因max tokens限度而发生截断输入,这或者会低估它们的最大输入才干。
测试结果在上图中启动了可视化展现:关于每个长度要求(x轴),在8条相应指令下的平均输入长度(y轴),并经常使用了对数刻度。
从图中可以看出,一切模型的最大输入长度大概为2k词。专有模型的有效输入窗口理论未能到达它们宣称的最大token生生长度。而且,随着所需长度超越10k,由于拒绝照应的案例增多,平均输入长度甚至发生了降低趋向。
控制变量试验
由上述试验推测,普遍存在的2000字输入长度限度可动力于SFT数据自身固有的输入长度解放(便捷的说,就是模型没见过这么长的输入长度)。为测验这一假定,经过调整SFT数据,展开了一系列控制性试验。
决定GLM-4-9B作为基准模型,并选取GLM-4的聊天SFT数据(总计180k条,为GLM-4所有SFT数据的一个子集)作为完整的训练数据集。为控制训练数据的最大输入长度,区分剔除了输入长度超越500、1000和2000字的数据,构成了三个不同的训练集,区分保管了原始数据的72%、98%和99.9%。
基于这些训练集,对GLM-4-9B模型启动了训练,并在LongWriter-Ruler上测试了模型的最大输入长度(测试L值包括{500, 1000, 2000, 0})。
如上图,模型的最大输入长度与SFT数据中的最大输入长度成正比,区分优化至约600、900和1800字。这种最大输入长度的增长雷同反映在模型对各指定长度要求的指令的平均输入长度的提高上。
这一发现提醒了模型输入限度的根源在于SFT数据中输入长度的无余。此外,这种限度不可经过LLM分解的训练数据或迭代SFT来克制,由于 现有模型生成的数据照旧不可逾越这一长度限度 。
为了解除这个限度,作者推出了 AgentWriter,一种新的基于 Agent 的流程,能够应用大言语模型智能构建、裁减连接的长文本输入。
3. AgentWrite 设计思绪
AgentWrite分两步口头义务:
• 首先,依据用户输入制订详尽的写作方案,明白每段的结构和目的字数。
• 接着,依照方案,疏导模型顺序生成每个段落的内容。
AgentWrite首先将长篇写作义务拆解为多个小义务,每个小义务仅需模型撰写一个段落。模型随后按顺序成功这些小义务,再将这些段落的输入兼并,构成最终的长篇大作。
3.1 内容布局
似乎人类作家在着手长篇写作前会制订一个全局性的筹划,包括构思文章结构、布局各局部内容及其篇幅长度,自创了这一思绪。应用大型言语模型(LLMs)的筹划性能,依据写作指令生成写作纲要,明白每个段落的**内容和所需字数。以下是作者驳回的提醒词:
I need you to help me break down the following long-form writing instruction into multiple subtasks. Each subtask will guide the writing of one paragraph in the essay, and should include the main points and word count requirements for that paragraph.
The writing instruction is as follows:
{User Instruction}
Please break it down in the following format, with each subtask taking up one line:
Paragraph 1 - Main Point: [Describe the main point of the paragraph, in detail] - Word Count: [Word count requirement, e.g., words]
Paragraph 2 - Main Point: [Describe the main point of the paragraph, in detail] - Word Count: [word count requirement, e.g. 1000 words].
Make sure that each subtask is clear and specific, and that all subtasks cover the entire content of the writing instruction. Do not split the subtasks too finely; each subtask’s paragraph should be no less than 200 words and no more than 1000 words. Do not output any other content.
3.2 分步撰写
在第一步布局终了后,依次调用大言语模型(LLM)来逐个成功子义务,逐段构建写作内容。为保证文本的连接性,每当恳求模型撰写第n段时,也会一并提供前n-1段的内容,使模型能够在已有写作的基础上续写。
虽然这种串行解决模式不可让模型同时并行解决多个子义务,但这种模式生成的文本在全体连接性和质量上,远远超越了并行生成的结果。
以下是经常使用的提醒词:
You are an excellent writing assistant. I will give you an original writing instruction and my planned writing steps. I will also provide you with the text I have already written. Please help me continue writing the next paragraph based on the writing instruction, writing steps, and the already written text.
Writing instruction:
{User Instruction}
Writing steps:
{The writing plan generated in Step I}
Already written text:
{Previous generated (n-1) paragraphs}
Please integrate the original writing instruction, writing steps, and the already written text, and now continue writing {The plan for the n-th paragraph, i.e., the n-th line in the writing plan}
3.3 验证测试
对提出的AgentWrite方法在两个长篇写作数据集上启动了生生长度和质量的测试:
• LongWrite-Ruler:用于准确测量该方法能够生成的文本长度。
• LongBenchWrite:用以评价模型生成文本在长度和写作质量上与用户指令的契合度。
LongBench-Write
为了更片面地评价模型在多种长篇写作指令上的表现,搜集了120条多样化的用户写作指令,其中中文和英文各占一半。确保一切指令均明白指出了字数要求。
依据 字数 要求被划分为四组:0-500字、500-2000字、2000-0字和0字以上。
依据 输入类型 ,将指令分为七大类:文学与创意写作、学术与专著、科普、适用写作、资讯报道、社区论坛以及教育与培训。
评价时,驳回了两项权衡规范:
• 评价输入长度:当文本输入恰恰满足长度要求时,得分到达满分100分。若输入长度超越要求的四倍或低于三分之一,则得分将线性递减至零。鉴于篇幅过短的文本理论比过长的文本疑问更大,为篇幅无余的文本设置了更高的扣分率。
• 评价输入质量。希冀模型生成的文本长度尽或者贴近指令中的要求。有鉴于此,经过一个分段线性函数来计算输入长度得分Sl(其中l代表预期长度,l'代表实践生生长度):从六个维度对文本启动评分:相关性、准确性、连接性、明晰度、内容广度与深度以及阅读体验,以下是作者用GPT-4o打分的提醒词:
You are an expert in evaluating text quality. Please evaluate the quality of an AI assistant’s response to a user’s writing request. Be as strict as possible.
You need to evaluate across the following six dimensions, with scores ranging from 1 to 5. The scoring criteria from 5 to 1 for each dimension are as follows:
1. Relevance: From content highly relevant and fully applicable to the user’s request to completely irrelevant or inapplicable.
2. Accuracy: From content completely accurate with no factual errors or misleading information to content with numerous errors and highly misleading.
3. Coherence: From clear structure with smooth logical connections to disorganized structure with no coherence.
4. Clarity: From clear language, rich in detail, and easy to understand to confusing expression with minimal details.
5. Breadth and Depth: From both broad and deep content with a lot of information to seriously lacking breadth and depth with minimal information.
6. Reading Experience: From excellent reading experience, engaging and easy to understand content to very poor reading experience, boring and hard to understand content.
Please evaluate the quality of the following response to a user’s request according to the above requirements.
⟨User Request⟩
{User request}
⟨/User Request⟩
上图展现了LongWrite-Ruler的输入长度的对比结果。AgentWrite清楚优化了GPT-4o的输入才干,将其从最高2000词延伸至约20000词。
还在LongBench-Write上对输入质量及其对所需长度的契合度启动了评价。鉴于GPT-4o在AgentWrite性能测试中能轻松应答2000词以内的义务,仅对要求2000词以上输入的指令驳回AgentWrite。还调查了AgentWrite的一个变种“+Parallel”,它在第二步中驳回并行模式调用模型,为每个段落生成输入。
上表展现了LongBench-Write的测试结果。融入AgentWrite后,GPT-4o能创作长达20000词的内容,清楚优化了其长度合乎度得分(Sl),特意是在[4k, 20k)词的输入范围内。
AgentWrite在拓展输入长度的同时,并未降低输入质量。经过对比六个维度的质量得分,AgentWrite清楚优化了内容的广度与深度得分(优化5%),而在连接性和明晰度上略有降低(降低2%)。在扫视输入数据时,偶然发现 经常使用AgentWrite生成的文本中存在细微的重复现象 ,如模型或者会重述前文内容, 或在输入中频繁启动总结 。此外,+Parallel虽然在必定水平上优化了模型的输入长度得分,却 就义了AgentWrite的输入质量,尤其是在连接性上(降低6%) 。这标明在AgentWrite的第二步中,向模型提供已生成的高低文是至关关键的。
4. 如何训练一个超长文本生成模型
能否进一步教会这些模型生成超长文本的才干,让它们能够一次性性成功长篇写作义务?
4.1 数据构建
从现有数据集中精选了6000条须要超长输入的用户指令(字数超越2000)。即:从GLM-4的SFT数据中挑选了3000条,多以中文为主。同时也从WildChat1M中挑选了3000条指令,这个数据集收录了用户与ChatGPT/GPT-4的地下对话日志,以英文为主。
智能挑选环节中,调用了GPT-4o。还应用基于规定的婚配技术剔除了蕴含毒性的指令以及那些用于数据抓取的指令。
经过智能挑选后,对这些指令启动了人工查看,确认超越95%的指令确实须要长篇回复,字数到达数千。针对这些指令,驳回了AgentWrite流水线,并搭配GPT4o来生成回答。
还对搜集到的数据启动了前期解决,包括剔除过短的输入以及因AgentWrite第一步中布局步骤过多造成模型输入失败的案例。大概0.2%的数据因此被扫除。同时,也肃清了模型或者在每个输入段的扫尾参与的诸如“第一段”、“第二段”等不相关的标识符。将最终获取的长篇输入数据集命名为“longwriter-6k”。
在模型训练阶段,为保证模型的通用性,将“longwriter-6k”与惯例SFT数据联合起来,构成了完整的训练集。
经常使用了180k条来自GLM-4的聊天SFT数据作为惯例SFT数据。
所获数据的输入长度散布如上图。从图中可以清楚看出,“longwriter-6k”有效地补偿了惯例SFT数据在2k字以上输入长度的无余,且在2k至10k字的范围内,输入长度散布相对平均。
4.2 模型训练
监视式微调
决定了两个最新的开源模型作为基础,区分为GLM-4-9B和Llama-3.1-8B,均支持高达128k tokens的高低文窗口,十分适宜启动长文本输入的训练。
经过训练,获取了两个新模型:LongWriter-9B和LongWriter-8B。
一切模型均在 8xH800 80G GPU的节点上,应用DeepSpeed和ZeRO-3以及CPU offloading启动训练。训练参数包括批量大小为8,学习率为1e-5,经过4个周期的训练,大概须要2500至3000步。
对齐优化(DPO)
为了进一步优化模型输入质量,增强其遵照指令中长度限度的才干,在经过监视式微调的LongWriter-9B模型上实施了间接偏好优化。
还联合了长度合乎度得分,选取得分最高的输入作为侧面样本,随机决定残余三个输入中的一个作为负面样本。经过上述数据混合训练250步后,获取的LongWriter-9B-DPO模型。
4.3 评价结果
4.3.1 关键成绩
在LongBench-Write基准上评价了4种专有模型和5种开源模型,以及训练的LongWriter系列模型。
与LongWrite-Ruler的评价性能相反,将输入温度设定为0.5,并依据模型API准许的最大值设置生成的最大token数。关于开源模型,此值设定为32,768。
关键的评价结果如上表。
上图展现了LongBench-Write中120条指令要求长度与模型照应长度之间的相关。
相较于先前模型难以到达2000字以上长度的要求,LongWriter系列模型能够一向地提供更长、更详尽的回答。
从各长度区间内提醒的输入长度得分Sl来看,现有模型在2000至0字的区间内普遍得分较低(低于70分),仅有Claude 3.5 Sonnet模型得分尚可。在0至20000字的区间内,简直一切现有模型都不可到达目的输入长度,得分甚至为零(即一切输入长度都不到要求长度的三分之一)。
经过融入LongWriter-6k的训练数据,训练的模型不只能有效满足长度要求,还能坚持输入质量,这一点从2000至20000字区间的Sl和Sq得分以及下面散点图可以看出。
DPO有效地优化了模型在长文本生成中的输入质量及其遵照长度要求的才干。
对比LongWriter-9B与经过DPO训练的LongWriter-9B-DPO的评分,发现DPO在Sl(优化了4%)和Sq(优化了3%)上都有清楚优化,且这种优化效果在各个长度区间内都坚持分歧。这证实了在长文本生成义务中,DPO不只能增强模型的输入质量,还能更精准地控制输入长度以满足要求。相似地,在短文本生成义务中也能得出了这一论断。
此外,还对GPT-4o及三款Longwriter模型在LongBench-Write上的输入启动了人工成对比拟,并在上图展现了却果。数据显示,在58%的状况下,人们更偏向于决定经过DPO训练的模型而非LongWriter-9B。值得留意的是,虽然模型规模较小,LongWriter-9B-DPO的表现却能与GPT-4o持平。
LongWriter模型的输入限度已裁减至1万至2万字,但为了支持更长文本的输入,仍需更多长文本数据的撑持。
在上图中雷同展现了LongWriter模型的测试成绩。
模型的最大生生长度能够到达1万至2万字。缺乏长输入的SFT数据很或者是限度模型成功更长输入长度的关键要素。
输入长度到达或超越2万字的数据点无余100个。
未来构建更长的训练SFT数据将进一步打破模型输入长度的限度,有望成功10万甚至更长的文本输入。
4.3.2 消融剖析
去除LongWriter-6k数据集
对LongWriter-6k数据集的消融剖析。数据显示,在融入LongWriter-6k数据集之后,LongWriter-9B模型能够轻松应答2000字以上的输入义务,这一点从输入长度目的Sl中获取了表现。
在输入质量方面,该模型在参与LongWriter-6k数据集后的质量评分优化了5%,特意是在解决须要输入长度在2000至0字范围内的义务时表现尤为突出。
模型在“广度和深度”这一维度上的质量优化最为清楚,与基线模型相比有18%的相对增长。LongWriter-6k数据集的参与并没有造成模型趋向于生成更长篇幅的照应,显示出数据集对模型输入长度没有引入偏向。
写作方案增强数据
对参与写作方案的输入数据启动消融剖析。
经过思想链或思想树,能有效优化解决复杂义务的性能。这启示探求一个疑问:在生成写作内容之前,先让模型输入写作方案,能否能够为长篇写作义务带来好处?
为了解答这一不懂,创立了一份参与了方案的LongWriter-6k数据集。
详细做法是,将经过AgentWrite第一步获取的写作方案与写作内容的起始局部兼并,并用两个换行符作为分隔,将兼并后的文本作为SFT数据的输入。
在评价时,会从模型生成的文本扫尾移除写作方案的输入。
上表中的结果显示,经常使用这份参与了方案的数据训练的模型,在输入长度目的Sl上有所优化,但在输入质量上却有所降低。总体来看,与间接生成写作内容相比,先让模型输入其推理环节(即写作方案),再生成写作内容,并 没有清楚优化义务口头的效率 。这或者是由于模型在学习间接生成写作内容的环节中,曾经内化了思想链(CoT)的步骤,因此不再须要显性地输入推理环节。
与传统的分解数据相比拟
探求了应用指令来创立长篇输入的SFT数据,这一方法在以往的大型言语模型(LLM)长篇生成钻研中颇为经常出现。
基于指令数据训练出的模型在生成更长文本方面未能到达用户希冀。其输入长度得分Sl并未逾越仅经常使用通用SFT数据训练的模型,且输入质量Sq亦有所降低。
这种方法之所以不利于模型学习,关键有两个要素:
• 其次,回译的指令与实在用户的指令在散布上存在差异,这限度了模型学习到更宽泛的运行才干。
本文转载自,作者: