我们如何训练小型语言模型

ScaleDown的压缩端点由任务专用的小型语言模型(SLM)驱动,这些模型识别上下文中与给定查询相关的部分。本文介绍了我们如何训练这些模型,重点放在数据流水线上,因为大部分工作(和大部分决策)都在这里。

1、任务:抽取式句子选择

我们的压缩模型不生成文本。给定一个查询,它对上下文中的哪些token应该保留、哪些可以丢弃进行分类。这是一个刻意的设计选择:通过完全避免生成,我们消除了幻觉风险并保持推理速度。这帮助我们在保持低延迟和高吞吐量的同时大规模处理长上下文。

模型对每个token的相关性进行评分,我们使用这些token级别的评分来构建上下文中句子级别相对于查询的相关性。我们返回得分最高的句子来形成压缩后的输出。训练方法遵循已建立的模式:使用从已知良好答案派生的监督来学习(query, sentence)对上的相关性函数。

2、构建训练数据

训练流水线从(context, query, answer)三元组开始。从中,我们使用教师模型推导每个句子的相关性标签。

步骤1:获取多样化的长上下文文档

文档语料库需要是长上下文的(当有很多内容需要压缩时,压缩最有价值)和领域多样化的(模型需要泛化)。

我们的训练语料来自:

  • MS-MARCO:微软的大规模信息检索数据集,包含约100万个真实的Bing查询和网页段落。这是一个天然的选择:数据已经结构化为(query, passage, relevance)形式,涵盖了广泛的网络搜索主题。它构成了我们数据集的骨干。
  • Natural Questions:Google的QA数据集,包含307k个真实搜索查询,配对完整的维基百科文章。每个示例需要阅读整篇维基百科页面来找到答案,为我们提供了天然的长上下文(完整文章,而不仅仅是段落)以及人工标注的答案片段。这提供了涵盖历史、科学、地理等领域的密集、事实性、多主题上下文。
  • S2ORC(Semantic Scholar开放研究语料库):Allen AI的1.36亿+学术论文语料库,包含解析后的全文,涵盖生物医学、计算机科学、物理学、数学等数十个学科。我们将其用作生物医学和通用科学文档的来源。S2ORC包含PubMed Central的全文论文以及arxiv和其他出版商的内容,为我们提供了带有章节、引用和技术符号的冗长结构化科学文档。
  • SEC文件(EDGAR:直接从SEC的EDGAR系统获取的原始10-K、10-Q和8-K文件。金融文件是特别好的训练数据,因为它们很长、结构上重复,并且充满了优秀的压缩器应该学会跳过的样板文本。
  • 合成数据:我们生成涵盖多个类别的多样化文本数据。我们还设计了多样化的提示策略,以提高生成数据的多样性和真实性。

步骤2:生成QA对

我们的一些源数据集如MS-MARCO、Natural Questions和CUAD已经带有(query, answer)对或相关性标注。对于这些,我们可以直接进入教师标注步骤。

对于原始文档语料库,我们使用一个强大的教师模型在文档上生成(query, answer)对。提示很简单:给定一个文档,生成需要阅读特定章节才能回答的问题以及正确答案。

质量过滤在这里很重要。我们丢弃以下QA对:答案可以仅从查询中轻易推导出来的、问题太泛以至于不需要具体证据的、或者教师模型自己的答案在源文本面前站不住脚的。

步骤3:通过教师评分标注句子相关性

这是流水线的核心。给定一个(context, query, answer)三元组,我们需要确定上下文中的哪些句子与回答查询相关。

我们使用教师模型对token级别的相关性进行评分,然后聚合到句子级别的标签。过程如下:

  1. Token级别相关性评分:教师模型评估上下文中的每个句子对为给定查询生成正确答案的贡献程度。由此,我们创建token级别的相关性分数。
  2. 句子级别聚合:Token分数被聚合以产生每个句子的相关性分数。如果聚合分数超过阈值,则该句子被标记为相关。
  3. 验证:我们验证所选句子子集是否足以回答查询。如果答案不能仅从所选句子中推导出来,则调整标签或丢弃该示例。

这为我们提供了以下形式的训练示例:(context, query) → 每个句子的二元标签。

3、训练模型

SLM作为token级别的分类器进行训练:给定完整文档上下文中的一个(query, sentence)对,预测该token是否应该保留。

基础模型架构的关键属性是其大小:它足够小,可以在长上下文上以低延迟和低成本运行推理,同时足够大,可以捕获跨领域的跨句子相关性模式。

4、为什么这能泛化

我们不为金融、法律、医疗或任何其他领域单独微调模型。多领域训练组合处理泛化:通过在EDGAR文件和S2ORC论文以及Natural Questions上一起训练,模型学习领域无关的相关性模式——什么使一个句子对回答问题有用,无论这个问题是关于心脏风险因素还是季度收入。

这就是为什么模型在没有在训练期间见过FinanceBench的情况下在FinanceBench上表现良好的原因。我们训练集中的EDGAR文件教会了模型金融文档的结构和语言,而更广泛的语料库教会它跨领域泛化相关性函数。

5、评估压缩质量

压缩质量不能仅通过分类指标来衡量。一个保留每个句子的模型获得完美的召回率但没有任何压缩。一个丢弃一切的模型在"不相关"类上获得完美的精确率但摧毁了上下文。

真正的评估是下游的:压缩后的上下文是否能从LLM产生相同(或更好)的答案?ScaleBench,我们的开源基准测试框架,运行这个端到端流程:压缩上下文,发送给下游模型,通过F1、精确匹配和其他任务特定指标对照黄金答案衡量答案质量。

这就是我们验证抽取式方法有效性的方式。我们确保不仅是模型选择了合理的句子,而且这些句子足以完成下游任务。

6、结束语

  • 抽取优于生成。 不生成意味着没有幻觉和快速推理。模型选择句子,不重写它们。
  • Token级别的教师标注相关性。 细粒度的教师评分,聚合到句子标签,产生比启发式方法更高质量的监督。
  • 多样化的、非基准测试的训练数据。 广泛的数据集混合,辅以合成生成的QA对,赋予模型领域通用的压缩能力。
  • 下游评估是唯一重要的评估。 句子标签上的分类准确性只是一个代理指标。真正的指标是压缩后的上下文是否在更低token成本下保持答案质量。

原文链接: How We Train Small Language Models for Context Compression

汇智网翻译整理,转载请标明出处