清华唐杰团队新作:一口气生成2万字,大模型开卷长输出

  明敏发自凹非寺

  量子位公众号 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。

  生成内容比较公式化,回答不同问题的结构、节奏相似。无论如何这是个好的开始,带来的提升很明显。

  研究团队也表示未来将进一步扩展模型的输出长度和输出质量,同时也会开始研究如何在不牺牲生成质量的情况下提高效率。

  参考链接:

  https://github.com/THUDM/LongWriter