明敏发自凹非寺
量子位公众号 QbitAI
一口气生成 2 万字,大模型输出也卷起来了!
清华&智谱 AI 最新研究,成功让 GLM-4、Llama-3.1 输出长度都暴增。
相同问题下,输出结果直接从 1800 字增加到 7800 字,翻 4 倍。
要知道,目前大模型的生成长度普遍在 2k 以下。这对于内容创作、问题回答等都存在影响,可能导致模型回答问题不全面、创造性降低等。
该研究由智谱 AI 创始人、清华大学教授李涓子和唐杰共同领衔。
论文及代码都已放在 GitHub 上开源。
有网友已经抢先体验。LongWriter-llama3.1-8b 可生成万字长文《罗马帝国衰落史》,在 MacBook Pro 2018(32GB)上就能运行。
输出内容很准确,可以得A++。
9B 模型搞定万字输出
本项研究主要包括 3 方面工作。
- 分析文本生成长度限制因素
- 提出 AgentWrite
- 扩展 LLM 输出窗口大小
首先,研究人员构建了一个测试工具 LongWrite-Ruler。通过测试多个大模型,他们发现所有模型在生成超过 2000 字的文本时都遇到了困难。
进一步分析用户和大模型的交互日志,研究人员发现只有超过1% 的用户请求明确提到要生成超过 2000 字的文本。
为此,他们改变了模型在监督式微调(SFT)阶段使用的数据集的最大输出长度。
结果发现,模型的最大输出长度与 SFT 数据集中的最大输出长度呈显著正相关。
所以得出结论,现有模型在输出长度上受限主要是因为SFT 数据集中缺少长输出样本。
即使模型在预训练阶段见过更长的序列,但是 SFT 阶段缺乏长文本样本,还是会影响输出长度。
为了克服这个限制,研究人员提出了AgentWrite。
这是一个基于 Agent 的 pipline。
它允许将超长文本生成任务分解为多个子任务,每个子任务处理其中的一段。
具体流程是 AgentWrite 先根据用户指令制定出一个详细的写作计划,计划包括每个段落的主要内容点和目标词数。根据计划,AgentWrite 依次提示模型生成每个段落的内容。
在 AgentWrite 基础上,团队利用 GPT-4o 生成了 6000 个长输出 SFT 数据,输出长度在 2k 到 32k 词之间,构成了数据集 LongWriter-6k。并将这些数据添加到训练过程中。
为了验证方法的有效性,团队还提出了一个 LongBench-Write。其中包含了多样化的用户写作指令,输出长度规格分别为0-500 词、500-2000 词、2000-4000 词以及 4000 词以上。
评估结果显示,使用 AgentWrite 后模型输出长度明显增加。
通过直接偏好优化(DPO),GLM-4-9B 在一众模型中实现了最佳性能。
手速快的网友已经抢先实测。
Reddit 上一位网友让 LongWriter-llama3.1-8b 生成罗马帝国衰败史,整体需要 22 分钟(与硬件有关),平均每秒生成 3.34 个 token。
生成内容比较公式化,回答不同问题的结构、节奏相似。无论如何这是个好的开始,带来的提升很明显。
研究团队也表示未来将进一步扩展模型的输出长度和输出质量,同时也会开始研究如何在不牺牲生成质量的情况下提高效率。
参考链接: