Transformers.js 文档
生成/logits_处理
并获得增强的文档体验
开始使用
生成/logits_处理
- 生成/logits_处理
- .LogitsProcessor
- .LogitsWarper
- .LogitsProcessorList
- .ForcedBOSTokenLogitsProcessor
- .ForcedEOSTokenLogitsProcessor
- .SuppressTokensAtBeginLogitsProcessor
- .WhisperTimeStampLogitsProcessor
- .NoRepeatNGramLogitsProcessor
new NoRepeatNGramLogitsProcessor(no_repeat_ngram_size)
.getNgrams(prevInputIds)
⇒Map.<string, Array<number>>
.getGeneratedNgrams(bannedNgrams, prevInputIds)
⇒Array.<number>
.calcBannedNgramTokens(prevInputIds)
⇒Array.<number>
._call(input_ids, logits)
⇒Tensor
- .RepetitionPenaltyLogitsProcessor
- .MinLengthLogitsProcessor
- .MinNewTokensLengthLogitsProcessor
- .NoBadWordsLogitsProcessor
- .ClassifierFreeGuidanceLogitsProcessor
- .TemperatureLogitsWarper
- .TopPLogitsWarper
- .TopKLogitsWarper
生成/logits_处理.LogitsProcessor
所有在生成过程中可应用的 logit 处理器抽象基类。
类型:generation/logits_process
的静态类
logitsProcessor._call(input_ids, logits)
将处理器应用于输入 logits。
类型:LogitsProcessor
的实例抽象方法
抛出:
Error
如果子类中未实现 `_call`,则抛出错误。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | 要处理的 logits。 |
生成/logits_处理.LogitsWarper
所有 logit warper 的抽象基类,可在生成过程中通过多项式采样应用。
类型:generation/logits_process
的静态类
logitsWarper._call(input_ids, logits)
将处理器应用于输入 logits。
类型:LogitsWarper
的实例抽象方法
抛出:
Error
如果子类中未实现 `_call`,则抛出错误。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | 要处理的 logits。 |
生成/logits_处理.LogitsProcessorList
表示 logits 处理器列表的类。logits 处理器是修改语言模型 logits 输出的函数。此课程提供添加新处理器并将所有处理器应用于一批 logits 的方法。
类型:generation/logits_process
的静态类
new LogitsProcessorList()
构造 LogitsProcessorList
的新实例。
logitsProcessorList.push(item)
将新的 logits 处理器添加到列表中。
类型:LogitsProcessorList
的实例方法
参数量 | 类型 | 描述 |
---|---|---|
item | LogitsProcessor | 要添加的 logits 处理器函数。 |
logitsProcessorList.extend(items)
将多个 logits 处理器添加到列表中。
类型:LogitsProcessorList
的实例方法
参数量 | 类型 | 描述 |
---|---|---|
items | Array.<LogitsProcessor> | 要添加的 logits 处理器函数。 |
logitsProcessorList._call(input_ids, logits)
将列表中所有 logits 处理器应用于一批 logits,并就地修改它们。
类型:LogitsProcessorList
的实例方法
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 语言模型的输入 ID。 |
logits | 张量 |
生成/logits_处理.ForcedBOSTokenLogitsProcessor
一个 LogitsProcessor,强制在生成序列的开头使用 BOS 标记。
类型:generation/logits_process
的静态类
new ForcedBOSTokenLogitsProcessor(bos_token_id)
创建一个 ForcedBOSTokenLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
bos_token_id | 数字 | 要强制的序列开头标记的 ID。 |
forcedBOSTokenLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
将 BOS 标记强制应用于 logits。
类型:ForcedBOSTokenLogitsProcessor
的实例方法
返回:Tensor
- 带有 BOS 标记强制的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.ForcedEOSTokenLogitsProcessor
一个 logits 处理器,当达到 max_length
时,强制将指定标记作为最后一个生成的标记。
类型:generation/logits_process
的静态类
new ForcedEOSTokenLogitsProcessor(max_length, eos_token_id)
创建一个 ForcedEOSTokenLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
max_length | 数字 | 要生成的序列的最大长度。 |
eos_token_id | number | Array<number> | 序列结束标记的 ID。 |
forcedEOSTokenLogitsProcessor._call(input_ids, logits)
将处理器应用于 input_ids 和 logits。
类型:ForcedEOSTokenLogitsProcessor
的实例方法
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits 张量。 |
生成/logits_处理.SuppressTokensAtBeginLogitsProcessor
一个 LogitsProcessor,它在 `generate` 函数开始使用 `begin_index` 标记生成时,立即抑制标记列表。这应确保在生成开始时不会采样 `begin_suppress_tokens` 定义的标记。
类型:generation/logits_process
的静态类
new SuppressTokensAtBeginLogitsProcessor(begin_suppress_tokens, begin_index)
创建一个 SuppressTokensAtBeginLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
begin_suppress_tokens | Array.<number> | 要抑制的标记 ID。 |
begin_index | 数字 | 在抑制标记之前要生成的标记数量。 |
suppressTokensAtBeginLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
将 BOS 标记强制应用于 logits。
类型:SuppressTokensAtBeginLogitsProcessor
的实例方法
返回:Tensor
- 带有 BOS 标记强制的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.WhisperTimeStampLogitsProcessor
一个 LogitsProcessor,用于处理向生成的文本添加时间戳。
类型:generation/logits_process
的静态类
new WhisperTimeStampLogitsProcessor(generate_config, init_tokens)
构造一个新的 WhisperTimeStampLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
generate_config | * | 传递给 transformer 模型 |
init_tokens | Array.<number> | 输入序列的初始标记。 |
whisperTimeStampLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
修改 logits 以处理时间戳标记。
类型:WhisperTimeStampLogitsProcessor
的实例方法
返回:Tensor
- 修改后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入标记序列。 |
logits | 张量 | 模型输出的 logits。 |
生成/logits_处理.NoRepeatNGramLogitsProcessor
一个 logits 处理器,禁止重复某个大小的 n-gram。
类型:generation/logits_process
的静态类
- .NoRepeatNGramLogitsProcessor
new NoRepeatNGramLogitsProcessor(no_repeat_ngram_size)
.getNgrams(prevInputIds)
⇒Map.<string, Array<number>>
.getGeneratedNgrams(bannedNgrams, prevInputIds)
⇒Array.<number>
.calcBannedNgramTokens(prevInputIds)
⇒Array.<number>
._call(input_ids, logits)
⇒Tensor
new NoRepeatNGramLogitsProcessor(no_repeat_ngram_size)
创建一个 NoRepeatNGramLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
no_repeat_ngram_size | 数字 | 不重复 n-gram 的大小。此大小的所有 n-gram 只能出现一次。 |
noRepeatNGramLogitsProcessor.getNgrams(prevInputIds) ⇒ <code> Map. < string, Array < number > > </code>
从标记 ID 序列生成 n-gram。
类型:NoRepeatNGramLogitsProcessor
的实例方法
返回:Map.<string, Array<number>>
- 生成的 n-gram 映射
参数量 | 类型 | 描述 |
---|---|---|
prevInputIds | Array.<bigint> | 之前的输入 ID 列表 |
noRepeatNGramLogitsProcessor.getGeneratedNgrams(bannedNgrams, prevInputIds) ⇒ <code> Array. < number > </code>
从标记 ID 序列生成 n-gram。
类型:NoRepeatNGramLogitsProcessor
的实例方法
返回:Array.<number>
- 生成的 n-gram 映射
参数量 | 类型 | 描述 |
---|---|---|
bannedNgrams | Map.<string, Array<number>> | 被禁止的 n-gram 映射 |
prevInputIds | Array.<bigint> | 之前的输入 ID 列表 |
noRepeatNGramLogitsProcessor.calcBannedNgramTokens(prevInputIds) ⇒ <code> Array. < number > </code>
计算被禁止的 n-gram 标记
类型:NoRepeatNGramLogitsProcessor
的实例方法
返回:Array.<number>
- 生成的 n-gram 映射
参数量 | 类型 | 描述 |
---|---|---|
prevInputIds | Array.<bigint> | 之前的输入 ID 列表 |
noRepeatNGramLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
将不重复 n-gram 处理器应用于 logits。
类型:NoRepeatNGramLogitsProcessor
的实例方法
返回:Tensor
- 经过不重复 n-gram 处理的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.RepetitionPenaltyLogitsProcessor
一个 logits 处理器,通过惩罚来防止重复之前的标记。这种惩罚每个标记最多应用一次。请注意,对于像大多数 LLM 这样的仅解码器模型,考虑的标记包括提示。
在原始论文中,作者建议使用大约 1.2 的惩罚,以在真实生成和缺乏重复之间取得良好平衡。为了惩罚和减少重复,请使用大于 1.0 的 penalty
值,其中值越高,惩罚越强。为了奖励和鼓励重复,请使用 0.0 到 1.0 之间的 penalty
值,其中值越低,奖励越强。
类型:generation/logits_process
的静态类
new RepetitionPenaltyLogitsProcessor(penalty)
创建一个 RepetitionPenaltyLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
penalty | 数字 | 重复惩罚的参数。
|
repetitionPenaltyLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
将重复惩罚应用于 logits。
类型:RepetitionPenaltyLogitsProcessor
的实例方法
返回:Tensor
- 经过重复惩罚处理的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.MinLengthLogitsProcessor
强制最小标记数量的 logits 处理器。
类型:generation/logits_process
的静态类
new MinLengthLogitsProcessor(min_length, eos_token_id)
创建一个 MinLengthLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
min_length | 数字 | 低于此最小长度时, |
eos_token_id | number | Array<number> | 序列结束标记的 ID。 |
minLengthLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
应用 logit 处理器。
类型:MinLengthLogitsProcessor
的实例方法
返回:Tensor
- 处理后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.MinNewTokensLengthLogitsProcessor
强制最小新标记数量的 logits 处理器。
类型:generation/logits_process
的静态类
new MinNewTokensLengthLogitsProcessor(prompt_length_to_skip, min_new_tokens, eos_token_id)
创建一个 MinNewTokensLengthLogitsProcessor。
参数量 | 类型 | 描述 |
---|---|---|
prompt_length_to_skip | 数字 | 输入标记的长度。 |
min_new_tokens | 数字 | 低于此最小“新”标记长度时, |
eos_token_id | number | Array<number> | 序列结束标记的 ID。 |
minNewTokensLengthLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
应用 logit 处理器。
类型:MinNewTokensLengthLogitsProcessor
的实例方法
返回:Tensor
- 处理后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.NoBadWordsLogitsProcessor
类型:generation/logits_process
的静态类
new NoBadWordsLogitsProcessor(bad_words_ids, eos_token_id)
创建一个 NoBadWordsLogitsProcessor
。
参数量 | 类型 | 描述 |
---|---|---|
bad_words_ids | Array.<Array<number>> | 不允许生成的标记 ID 列表。 |
eos_token_id | number | Array<number> | “序列结束”标记的 ID。可选地,使用列表来设置多个“序列结束”标记。 |
noBadWordsLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
应用 logit 处理器。
类型:NoBadWordsLogitsProcessor
的实例方法
返回:Tensor
- 处理后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.ClassifierFreeGuidanceLogitsProcessor
[LogitsProcessor
] 用于无分类器指导 (CFG)。分数在批次维度上分割,其中前半部分对应于条件 logits (从输入提示预测),后半部分对应于无条件 logits (从空或“空”提示预测)。处理器计算条件和无条件 logits 的加权平均值,由 guidance_scale
参数化。
有关更多信息,请参阅论文。
类型:generation/logits_process
的静态类
new ClassifierFreeGuidanceLogitsProcessor(guidance_scale)
创建一个 ClassifierFreeGuidanceLogitsProcessor
。
参数量 | 类型 | 描述 |
---|---|---|
guidance_scale | 数字 | 无分类器指导 (CFG) 的指导尺度。通过设置 |
classifierFreeGuidanceLogitsProcessor._call(input_ids, logits) ⇒ <code> Tensor </code>
应用 logit 处理器。
类型:ClassifierFreeGuidanceLogitsProcessor
的实例方法
返回:Tensor
- 处理后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.TemperatureLogitsWarper
[LogitsWarper
] 用于温度(指数缩放输出概率分布),这实际上意味着它可以控制预测标记的随机性。通常与 [TopPLogitsWarper
] 和 [TopKLogitsWarper
] 一起使用。
类型:generation/logits_process
的静态类
new TemperatureLogitsWarper(temperature)
创建一个 TemperatureLogitsWarper
。
参数量 | 类型 | 描述 |
---|---|---|
temperature | 数字 | 严格正浮点值,用于调制 logits 分布。小于 |
temperatureLogitsWarper._call(input_ids, logits) ⇒ <code> Tensor </code>
应用 logit warper。
类型:TemperatureLogitsWarper
的实例方法
返回:Tensor
- 处理后的 logits。
参数量 | 类型 | 描述 |
---|---|---|
input_ids | 数组.<数组<大整数>> | 输入 ID。 |
logits | 张量 | logits。 |
生成/logits_处理.TopPLogitsWarper
[LogitsWarper
] 执行 top-p,即限制到概率和小于等于 prob_cut_off
的顶部标记。通常与 [TemperatureLogitsWarper
] 和 [TopKLogitsWarper
] 一起使用。
类型:generation/logits_process
的静态类
new TopPLogitsWarper(top_p, options)
创建一个 TopPLogitsWarper
。
参数量 | 类型 | 默认 | 描述 |
---|---|---|---|
top_p | 数字 | 如果设置为 < 1,则仅保留概率总和为 | |
选项 | 对象 | top-p 采样的附加选项。 | |
[options.filter_value] | 数字 | -无穷大 | 所有过滤后的值都将设置为此浮点值。 |
[options.min_tokens_to_keep] | 数字 | 1 | 不能被过滤的最小标记数量。 |
generation/logits_process.TopKLogitsWarper
[LogitsWarper
] 执行 Top-K 采样,即将范围限制到概率最高的 k 个元素。常与 [TemperatureLogitsWarper
] 和 [TopPLogitsWarper
] 一起使用。
类型:generation/logits_process
的静态类
new TopKLogitsWarper(top_k, options)
创建一个 TopKLogitsWarper
。
参数量 | 类型 | 默认 | 描述 |
---|---|---|---|
top_k | 数字 | 如果设置为 > 0,则仅保留 top | |
选项 | 对象 | Top-K 采样的附加选项。 | |
[options.filter_value] | 数字 | -无穷大 | 所有过滤后的值都将设置为此浮点值。 |
[options.min_tokens_to_keep] | 数字 | 1 | 不能被过滤的最小标记数量。 |
< > 在 GitHub 上更新