菜单

生成策略

相关源文件

本页面介绍了 Hugging Face Transformers 库中可用的各种文本生成策略。它涵盖了用于从语言模型生成文本的核心算法和技术,包括贪婪搜索、束搜索、采样方法以及更专业的方案。

有关生成系统架构和实现细节的信息,请参阅生成系统。有关生成过程中使用的缓存机制的详细信息,请参阅缓存机制

生成策略概述

Transformers 库提供了多种生成策略,用于控制如何从语言模型生成文本。这些策略在 GenerationMixin 类中实现,该类由支持文本生成的模型类继承。

来源

基本生成策略

贪婪搜索是最简单的生成策略。在每一步中,它选择概率最高的词元。

优点

  • 简单且确定性
  • 执行速度快

缺点

  • 经常生成重复的文本
  • 可能会陷入循环
  • 可能无法生成最自然的文本

用途

来源

束搜索在每一步中维护多个候选序列(束)。它用可能的下一个词元扩展每个束,并只保留累积概率最高的 Top-k 序列。

优点

  • 对概率空间进行更彻底的探索
  • 通常比贪婪搜索生成更高质量的输出
  • 可以返回多个候选序列

缺点

  • 比贪婪搜索慢
  • 内存使用量更高
  • 可能仍然生成重复的文本

用途

变体

  • 多样化束搜索:鼓励束组之间的多样性
  • 受限束搜索:强制包含特定词元或短语

来源

基于采样的策略

多项式采样

基于采样的生成根据词元的概率分布选择词元,而不是总是选择最可能的词元。

关键参数

  • 温度:控制随机性(值越低 = 越确定性)
  • Top-k:将采样限制在 k 个最可能的词元中
  • Top-p (核心采样):从累积概率超过 p 的最小词元集合中采样

优点

  • 更多样化和更具创造性的输出
  • 避免了确定性方法中常见的重复问题
  • 可以针对不同级别的随机性进行调整

缺点

  • 非确定性(相同输入产生不同输出)
  • 在高度随机性下可能生成连贯性较差的文本

用途

来源

带采样的束搜索

该策略将束搜索与采样相结合,在探索多条路径的同时引入随机性。

用途

来源

高级生成策略

对比搜索在词元可能性与其与先前生成内容的差异性之间取得平衡。它有助于避免重复,同时保持连贯性。

关键参数

  • penalty_alpha:控制退化惩罚的强度
  • top_k:将候选集限制为 k 个最可能的词元

用途

来源

受限束搜索强制生成包含特定词元或短语,这对于受控文本生成非常有用。

约束类型

  • 强制词元:必须出现在输出中的特定词元
  • 短语约束:必须出现在输出中的特定短语
  • 析取约束:几个可能的词元/短语中必须出现其中一个

用途

来源

辅助生成

辅助生成使用一个较小的“辅助”模型来提出候选词元,然后由主模型进行验证。这可以显著加快生成速度。

关键参数

  • assistant_model:用于生成候选词元的较小模型
  • num_assistant_tokens:使用辅助模型生成的词元数量
  • assistant_confidence_threshold:辅助模型置信度阈值

用途

来源

Logits 处理器和调整器

生成过程可以通过使用 Logits 处理器和调整器进一步定制,它们在词元选择之前修改词元概率。

常用 Logits 处理器

处理器目的
MinLengthLogitsProcessor防止在最小长度之前生成 EOS 词元
NoRepeatNGramLogitsProcessor防止 n-gram 重复
NoBadWordsLogitsProcessor防止生成特定词元
RepetitionPenaltyLogitsProcessor惩罚重复的词元
ForcedBOSTokenLogitsProcessor强制在开头生成特定词元
ForcedEOSTokenLogitsProcessor强制在结尾生成特定词元

常用 Logits 调整器

调整器目的
TemperatureLogitsWarper调整采样的随机性
TopKLogitsWarper限制为 Top-k 最可能的词元
TopPLogitsWarper限制为累积概率大于 p 的词元
TypicalLogitsWarper根据词元的典型性选择词元

用途

来源

停止标准

停止标准决定何时结束生成过程。

常用停止标准

标准目的
MaxLengthCriteria在生成特定数量的词元后停止
MaxTimeCriteria在特定时间后停止
EosTokenCriteria在生成特定结束词元时停止
StopStringCriteria在生成特定字符串时停止

用途

来源

生成配置

生成参数可以使用 GenerationConfig 类进行配置,该类可以独立于模型进行保存和加载。

用途

来源

生成过程流程

下图说明了 Transformers 库中的完整生成过程流程

来源

与模型类的集成

生成功能在 GenerationMixin 类中实现,该类由支持文本生成的模型类继承。

来源

结论

Transformers 库提供了一套丰富的生成策略,可以根据不同的文本生成目标进行定制。通过理解和正确配置这些策略,您可以控制确定性与创造性、速度与质量之间的权衡,以及文本生成的其他方面。

有关特定组件的更多详细信息