CausalLM
類別keras_nlp.models.CausalLM()
生成式語言建模任務的基類。
CausalLM
任務包裝了 keras_nlp.models.Backbone
和 keras_nlp.models.Preprocessor
,以建立可用於生成和生成式微調的模型。
CausalLM
任務提供了一個額外的、高階的 generate()
函數,可用於以字串輸入、字串輸出的簽章自動遞迴地逐個標記地對模型進行採樣。所有 CausalLM
類別的 compile()
方法都包含一個額外的 sampler
參數,可用於傳遞 keras_nlp.samplers.Sampler
來控制如何對預測分佈進行採樣。
呼叫 fit()
時,會使用因果遮罩逐個標記地預測標記化的輸入,這為控制推理時間生成提供了預訓練和監督式微調設定。
所有 CausalLM
任務都包含一個 from_preset()
建構函數,可用於載入預先訓練好的配置和權重。
範例
# Load a GPT2 backbone with pre-trained weights.
causal_lm = keras_nlp.models.CausalLM.from_preset(
"gpt2_base_en",
)
causal_lm.compile(sampler="top_k")
causal_lm.generate("Keras is a", max_length=64)
# Load a Mistral instruction tuned checkpoint at bfloat16 precision.
causal_lm = keras_nlp.models.CausalLM.from_preset(
"mistral_instruct_7b_en",
dtype="bfloat16",
)
causal_lm.compile(sampler="greedy")
causal_lm.generate("Keras is a", max_length=64)
from_preset
方法CausalLM.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
方法CausalLM.compile(
optimizer="auto", loss="auto", weighted_metrics="auto", sampler="top_k", **kwargs
)
設定 CausalLM
任務以進行訓練和生成。
CausalLM
任務擴充了 keras.Model.compile
的預設編譯簽章,其中包含 optimizer
、loss
和 weighted_metrics
的預設值。若要覆寫這些預設值,請在編譯期間將任何值傳遞給這些參數。
CausalLM
任務在 compile
中新增了 sampler
,可用於控制 generate
函式使用的取樣策略。
請注意,由於訓練輸入包含從損失中排除的填充標記,因此使用 weighted_metrics
而不是 metrics
進行編譯幾乎總是一個好主意。
參數
"auto"
、優化器名稱或 keras.Optimizer
實例。預設為 "auto"
,它會針對給定的模型和任務使用預設的優化器。如需可能的 optimizer
值的詳細資訊,請參閱 keras.Model.compile
和 keras.optimizers
。"auto"
、損失名稱或 keras.losses.Loss
實例。預設為 "auto"
,其中會將 keras.losses.SparseCategoricalCrossentropy
損失應用於標記分類 CausalLM
任務。如需可能的 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
。compile
方法支援的完整參數清單,請參閱 keras.Model.compile
。generate
方法CausalLM.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」或由權杖 ID 組成的元組。預設值為「auto」,會使用 preprocessor.tokenizer.end_token_id
。如果未指定處理器,將會產生錯誤。None 會在產生 max_length
個權杖後停止產生。您也可以指定模型應停止生成的權杖 ID 清單。請注意,權杖序列將各自被視為停止權杖,不支援多個權杖的停止序列。save_to_preset
方法CausalLM.save_to_preset(preset_dir)
將任務儲存至預設目錄。
參數
preprocessor
屬性keras_nlp.models.CausalLM.preprocessor
用於預先處理輸入的 keras_nlp.models.Preprocessor
層。
backbone
屬性keras_nlp.models.CausalLM.backbone
具有核心架構的 keras_nlp.models.Backbone
模型。