Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

停止条件

上一章,我们学会了控制模型推理采样的质量和多样性。现在思考另一个问题:模型什么时候停止生成?

默认情况下,模型会一直生成直到最大长度。但很多时候,我们希望模型在合适的时机停下来:

  • 生成一句话就停;

  • 生成一个段落就停;

  • 遇到特定的词元或序列就停。

停止条件

停止条件(Stopping Criteria)是控制终止生成的规则。常见的停止条件有:

  • 最大长度:生成固定数量的词元后停止。这也是最基本的默认停止条件;

  • 停止词元:遇到特定词元(比如:句号、换行符、EOF)后停止;

  • 停止序列:遇到特定序列(比如:空行)后结束。

实现原理

每生成一个词元,检查是否满足某个停止条件。满足条件就提前终止,不再继续生成。

GPT 停止条件训练器

GPT 训练器的 generate 函数支持最大长度停止条件。

GPT 停止条件训练器 GPTTrainerWithStopping 继承自 GPT 训练器,扩展了 generate 函数:

  • 停止序列:新增参数 stop_sequences 接受一个字符串(停止序列)列表;

  • 匹配词元:每生成一个词元,检查生成的后缀是否匹配任何一个停止序列;

  • 提前终止:匹配成功就跳出循环,结束生成。

超参数

模型参数

模型参数需要保持和预训练阶段一致。

建模

加载模型

最大长度

ROMEO:
Cut on Duke of York. Whence news
but thinkful should he divines

停止词元

ROMEO:
His many choses!

停止序列

ROMEO:
Ay, see your children will be frails
Tybalt's fear; for himself, here this duck?


本章,我们实现了停止条件:按停止词元(如句号)或者停止序列(如空行)让模型在合适的时机停止生成。

课后练习

  1. 尝试添加一个最大重复次数的停止条件:如果同一个词元连续出现超过 3 次(比如:aaaa),就停止生成。