Seq2SeqLM
類別keras_nlp.models.Seq2SeqLM()
序列到序列語言建模任務的基類。
Seq2SeqLM
任務包裝了一個 keras_nlp.models.Backbone
和一個 keras_nlp.models.Preprocessor
,以建立一個模型,當生成以序列到序列設定中的額外輸入序列為條件時,該模型可用於生成和生成式微調。
Seq2SeqLM
任務提供了一個額外的、高階的 generate()
函數,可用於逐個標記地自動回歸取樣輸出序列。 Seq2SeqLM
類別的 compile()
方法包含一個額外的 sampler
參數,可用於傳遞一個 keras_nlp.samplers.Sampler
來控制如何對預測分佈進行取樣。
呼叫 fit()
時,每個輸入應該包含一個輸入序列和一個輸出序列。該模型將被訓練成使用因果遮罩逐個標記地預測輸出序列,類似於 keras_nlp.models.CausalLM
任務。與 CausalLM
任務不同,必須傳遞一個輸入序列,並且輸出序列中的所有標記都可以完全關注該輸入序列。
所有 Seq2SeqLM
任務都包含一個 from_preset()
建構函數,可用於載入預先訓練的配置和權重。
範例
# Load a Bart backbone with pre-trained weights.
seq_2_seq_lm = keras_nlp.models.Seq2SeqLM.from_preset(
"bart_base_en",
)
seq_2_seq_lm.compile(sampler="top_k")
# Generate conditioned on the `"The quick brown fox."` as an input sequence.
seq_2_seq_lm.generate("The quick brown fox.", max_length=30)
from_preset
方法Seq2SeqLM.from_preset(preset, load_weights=True, **kwargs)
從模型預設值實例化一個 keras_nlp.models.Task
。
預設值是一個包含配置、權重和其他檔案資產的目錄,用於儲存和載入預先訓練的模型。 preset
可以作為以下其中之一傳遞:
'bert_base_en'
'kaggle://user/bert/keras/bert_base_en'
'hf://user/bert_base_en'
'./bert_base_en'
對於任何 Task
子類別,您可以執行 cls.presets.keys()
來列出該類別上可用的所有內建預設值。
可以使用兩種方式呼叫這個建構函式。一種是從特定於任務的基類呼叫,例如 keras_nlp.models.CausalLM.from_preset()
,另一種是從模型類別呼叫,例如 keras_nlp.models.BertTextClassifier.from_preset()
。如果從基類呼叫,則會從預設目錄中的配置推斷出返回物件的子類別。
參數
True
,則會將儲存的權重載入模型架構中。如果為 False
,則會將所有權重隨機初始化。範例
# Load a Gemma generative task.
causal_lm = keras_nlp.models.CausalLM.from_preset(
"gemma_2b_en",
)
# Load a Bert classification task.
model = keras_nlp.models.TextClassifier.from_preset(
"bert_base_en",
num_classes=2,
)
compile
方法Seq2SeqLM.compile(
optimizer="auto", loss="auto", weighted_metrics="auto", sampler="top_k", **kwargs
)
配置 CausalLM
任務以進行訓練和生成。
CausalLM
任務使用 optimizer
、loss
和 weighted_metrics
的預設值,擴展了 keras.Model.compile
的預設編譯簽章。若要覆寫這些預設值,請在編譯期間將任何值傳遞給這些參數。
CausalLM
任務會在 compile
中新增一個新的 sampler
,可用於控制 generate
函式使用的取樣策略。
請注意,由於訓練輸入包含從損失中排除的填充權杖,因此使用 weighted_metrics
而不是 metrics
進行編譯幾乎總是一個好主意。
參數
"auto"
、優化器名稱或 keras.Optimizer
執行個體。預設為 "auto"
,它會針對指定的模型和任務使用預設的優化器。如需可能的 optimizer
值的詳細資訊,請參閱 keras.Model.compile
和 keras.optimizers
。"auto"
、損失名稱或 keras.losses.Loss
執行個體。預設為 "auto"
,其中會針對權杖分類 CausalLM
任務套用 keras.losses.SparseCategoricalCrossentropy
損失。如需可能的 loss
值的詳細資訊,請參閱 keras.Model.compile
和 keras.losses
。"auto"
或要在訓練和測試期間由模型評估的指標清單。預設為 "auto"
,其中會套用 keras.metrics.SparseCategoricalAccuracy
來追蹤模型在猜測遮罩權杖值時的準確性。如需可能的 weighted_metrics
值的詳細資訊,請參閱 keras.Model.compile
和 keras.metrics
。keras_nlp.samplers.Sampler
執行個體。配置在 generate()
呼叫期間使用的取樣方法。如需內建取樣策略的完整清單,請參閱 keras_nlp.samplers
。keras.Model.compile
。generate
方法Seq2SeqLM.generate(inputs, max_length=None, stop_token_ids="auto")
根據提示 inputs
生成文字。
此方法會根據指定的 inputs
生成文字。可以用於生成的方法,可以使用 compile()
方法設定。
如果 inputs
是 tf.data.Dataset
,則會「逐批」生成輸出並進行串聯。否則,所有輸入都將作為單一批次處理。
如果模型附加了 preprocessor
,則會在 generate()
函式內部預先處理 inputs
,並且應符合 preprocessor
層預期的結構(通常是原始字串)。如果未附加 preprocessor
,則輸入應符合 backbone
預期的結構。如需兩者的示範,請參閱上面的範例用法。
參數
tf.data.Dataset
。如果模型附加了 preprocessor
,則 inputs
應符合 preprocessor
層預期的結構。如果未附加 preprocessor
,則 inputs
應符合 backbone
模型預期的結構。preprocessor
設定的最大 sequence_length
。如果 preprocessor
為 None
,則應將 inputs
填充至所需的最大長度,並且會忽略此參數。None
、「auto」或 token ID 的元組。預設值為「auto」,它使用 preprocessor.tokenizer.end_token_id
。未指定處理器將會產生錯誤。None 會在產生 max_length
個 token 後停止產生。您也可以指定模型應停止處理的 token ID 清單。請注意,token 序列將分別被解釋為停止 token,不支援多 token 停止序列。save_to_preset
方法Seq2SeqLM.save_to_preset(preset_dir)
將任務儲存至預設目錄。
參數
preprocessor
屬性keras_nlp.models.Seq2SeqLM.preprocessor
用於預處理輸入的 keras_nlp.models.Preprocessor
層。
backbone
屬性keras_nlp.models.Seq2SeqLM.backbone
具有核心架構的 keras_nlp.models.Backbone
模型。