Transformers 文件
Keras 回撥
並獲得增強的文件體驗
開始使用
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
) — 使用者提供的指標函式。它將接收兩個引數 -predictions
和labels
。這兩個引數包含模型的輸出和資料集中匹配的標籤。它應該返回一個將指標名稱對映到數值的字典。 - eval_dataset (
tf.data.Dataset
或dict
或tuple
或np.ndarray
或tf.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 生成時,最好將輸入填充到相同大小,或在tokenizer
或DataCollator
中使用pad_to_multiple_of
引數,這將減少唯一輸入形狀的數量,節省大量編譯時間。如果predict_with_generate
為False
,則此選項無效。 - generate_kwargs (
dict
, 可選) — 在生成時傳遞給model.generate()
的關鍵字引數。如果predict_with_generate
為False
,則此選項無效。
用於在每個 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()}
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 (
str
或 IntervalStrategy, 可選, 預設為"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
方法。