CausalLM
類別keras_hub.models.CausalLM()
用於生成式語言建模任務的基底類別。
CausalLM
任務包裝了 keras_hub.models.Backbone
和 keras_hub.models.Preprocessor
,以建立可用於生成和生成式微調的模型。
CausalLM
任務提供了一個額外的、高階的 generate()
函數,可用於以字串輸入、字串輸出的簽章自動遞迴地逐個標記地對模型進行取樣。所有 CausalLM
類別的 compile()
方法都包含一個額外的 sampler
參數,可用於傳遞 keras_hub.samplers.Sampler
來控制如何對預測分佈進行取樣。
呼叫 fit()
時,標記化的輸入將透過套用因果遮罩逐個標記地進行預測,這為控制推論時間生成提供了預訓練和監督式微調設置。
所有 CausalLM
任務都包含一個 from_preset()
建構函數,可用於載入預先訓練的配置和權重。
範例
# Load a GPT2 backbone with pre-trained weights.
causal_lm = keras_hub.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_hub.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_hub.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_hub.models.CausalLM.from_preset()
)呼叫,也可以從模型類別(例如 keras_hub.models.BertTextClassifier.from_preset()
)呼叫。如果從基類呼叫,則會從預設目錄中的設定推斷出返回物件的子類別。
參數
True
,則會將儲存的權重載入模型架構中。如果為 False
,則會隨機初始化所有權重。範例
# Load a Gemma generative task.
causal_lm = keras_hub.models.CausalLM.from_preset(
"gemma_2b_en",
)
# Load a Bert classification task.
model = keras_hub.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
任務使用 optimizer
、loss
和 weighted_metrics
的預設值,擴展了 keras.Model.compile
的預設編譯簽章。若要覆寫這些預設值,請在編譯期間將任何值傳遞給這些參數。
CausalLM
任務會將新的 sampler
新增至 compile
,可用於控制 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_hub.samplers.Sampler
執行個體。設定在 generate()
呼叫期間使用的取樣方法。如需內建取樣策略的完整清單,請參閱 keras_hub.samplers
。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」或 token ID 的元組。預設為「auto」,它使用 preprocessor.tokenizer.end_token_id
。未指定處理器將會產生錯誤。None 會在產生 max_length
個 token 後停止產生。您也可以指定模型應該停止的 token ID 清單。請注意,token 序列將各自被解釋為一個停止 token,不支援多 token 停止序列。save_to_preset
方法CausalLM.save_to_preset(preset_dir)
將任務儲存到預設目錄。
參數
preprocessor
屬性keras_hub.models.CausalLM.preprocessor
用於預處理輸入的 keras_hub.models.Preprocessor
層。
backbone
屬性keras_hub.models.CausalLM.backbone
具有核心架構的 keras_hub.models.Backbone
模型。