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 上更新