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 方法。