Transformers 文件

Keras 回撥

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Keras 回撥

當使用 Keras 訓練 Transformers 模型時,有一些庫特定的回撥可用於自動化常見任務。

KerasMetricCallback

class transformers.KerasMetricCallback

< >

( metric_fn: typing.Callable eval_dataset: typing.Union[tensorflow.python.data.ops.dataset_ops.DatasetV2, numpy.ndarray, tensorflow.python.framework.tensor.Tensor, tuple, dict] output_cols: typing.Optional[list[str]] = None label_cols: typing.Optional[list[str]] = None batch_size: typing.Optional[int] = None predict_with_generate: bool = False use_xla_generation: bool = False generate_kwargs: typing.Optional[dict] = None )

引數

  • metric_fn (Callable) — 使用者提供的指標函式。它將接收兩個引數 - predictionslabels。這兩個引數包含模型的輸出和資料集中匹配的標籤。它應該返回一個將指標名稱對映到數值的字典。
  • eval_dataset (tf.data.Datasetdicttuplenp.ndarraytf.Tensor) — 用於為 metric_fn 生成預測的驗證資料。
  • output_cols (`list[str], 可選) — 要從模型輸出中保留作為預測的列的列表。預設為所有列。
  • label_cols (’list[str], 可選’) — 要從輸入資料集中保留作為標籤的列的列表。如果未提供此引數,將自動檢測。
  • batch_size (int, 可選) — 批處理大小。僅在資料不是預批處理的 tf.data.Dataset 時使用。
  • predict_with_generate (bool, 可選, 預設為 False) — 是否應該使用 model.generate() 獲取模型輸出。
  • use_xla_generation (bool, 可選, 預設為 False) — 如果正在生成,是否使用 XLA 編譯模型生成。這可以極大地提高生成速度(高達 100 倍加速),但每個輸入形狀都需要一次新的 XLA 編譯。使用 XLA 生成時,最好將輸入填充到相同大小,或在 tokenizerDataCollator 中使用 pad_to_multiple_of 引數,這將減少唯一輸入形狀的數量,節省大量編譯時間。如果 predict_with_generateFalse,則此選項無效。
  • generate_kwargs (dict, 可選) — 在生成時傳遞給 model.generate() 的關鍵字引數。如果 predict_with_generateFalse,則此選項無效。

用於在每個 epoch 結束時計算指標的回撥。與普通的 Keras 指標不同,這些指標不需要被 TF 編譯。它對於常見的 NLP 指標特別有用,如 BLEU 和 ROUGE,這些指標需要字串操作或無法編譯的生成迴圈。在傳遞給 metric_fn 之前,將在 eval_dataset 上計算預測(或生成)結果,並以 np.ndarray 格式傳遞。metric_fn 應計算指標並返回一個將指標名稱對映到指標值的字典。

我們提供了一個合適的 metric_fn 示例,用於計算摘要模型的 ROUGE 分數。請注意,為了可讀性和簡單性,此示例省略了一些後處理,可能不應直接使用!

from datasets import load_metric

rouge_metric = load_metric("rouge")


def rouge_fn(predictions, labels):
    decoded_predictions = tokenizer.batch_decode(predictions, skip_special_tokens=True)
    decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True)
    result = rouge_metric.compute(predictions=decoded_predictions, references=decoded_labels)
    return {key: value.mid.fmeasure * 100 for key, value in result.items()}

上述函式將返回一個包含值的字典,這些值將像任何其他 Keras 指標一樣被記錄下來。

{'rouge1': 37.4199, 'rouge2': 13.9768, 'rougeL': 34.361, 'rougeLsum': 35.0781

PushToHubCallback

class transformers.PushToHubCallback

< >

( output_dir: typing.Union[str, pathlib.Path] save_strategy: typing.Union[str, transformers.trainer_utils.IntervalStrategy] = 'epoch' save_steps: typing.Optional[int] = None tokenizer: typing.Optional[transformers.tokenization_utils_base.PreTrainedTokenizerBase] = None hub_model_id: typing.Optional[str] = None hub_token: typing.Optional[str] = None checkpoint: bool = False **model_card_args )

引數

  • output_dir (str) — 模型預測和檢查點將被寫入並與 Hub 上的倉庫同步的輸出目錄。
  • save_strategy (strIntervalStrategy, 可選, 預設為 "epoch") — 訓練期間採用的檢查點儲存策略。可能的值有:

    • "no": 在訓練結束時儲存。
    • "epoch": 在每個 epoch 結束時儲存。
    • "steps": 每 save_steps 儲存一次。
  • save_steps (int, 可選) — 使用“steps” save_strategy 時,兩次儲存之間的步數。
  • tokenizer (PreTrainedTokenizerBase, 可選) — 模型使用的分詞器。如果提供,將與權重一起上傳到倉庫。
  • hub_model_id (str, 可選) — 與本地 output_dir 保持同步的倉庫名稱。它可以是一個簡單的模型 ID,這種情況下模型將被推送到您的名稱空間。否則,它應該是完整的倉庫名稱,例如 "user_name/model",這允許您推送到您所屬的組織,格式為 "organization_name/model"

    將預設為 output_dir 的名稱。

  • hub_token (str, 可選) — 用於將模型推送到 Hub 的令牌。將預設為透過 huggingface-cli login 獲得的快取資料夾中的令牌。
  • checkpoint (bool, 可選, 預設為 False) — 是否儲存完整的訓練檢查點(包括 epoch 和最佳化器狀態)以允許恢復訓練。僅在 save_strategy"epoch" 時可用。

該回調將定期儲存模型並將其推送到 Hub。預設情況下,它每個 epoch 推送一次,但可以透過 save_strategy 引數進行更改。推送的模型可以像 Hub 上的任何其他模型一樣訪問,例如使用 from_pretrained 方法。

from transformers.keras_callbacks import PushToHubCallback

push_to_hub_callback = PushToHubCallback(
    output_dir="./model_save",
    tokenizer=tokenizer,
    hub_model_id="gpt5-7xlarge",
)

model.fit(train_dataset, callbacks=[push_to_hub_callback])
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.