【问题标题】:Early stopping in Bert Trainer instances在 Bert Trainer 实例中提前停止
【发布时间】:2021-11-04 06:45:32
【问题描述】:

我正在为多类分类任务微调 BERT 模型。我的问题是我不知道如何向那些 Trainer 实例添加“提前停止”。有什么想法吗?

【问题讨论】:

    标签: python neural-network huggingface-transformers bert-language-model


    【解决方案1】:

    在正确使用EarlyStoppingCallback()之前,您需要做几件事

    from transformers import EarlyStoppingCallback
    ...
    ...
    # Defining the TrainingArguments() arguments
    args = TrainingArguments(
       f"training_with_callbacks",
       evaluation_strategy ='steps',
       eval_steps = 50, # Evaluation and Save happens every 50 steps
       save_total_limit = 5, # Only last 5 models are saved. Older ones are deleted.
       learning_rate=2e-5,
       per_device_train_batch_size=batch_size,
       per_device_eval_batch_size=batch_size,
       num_train_epochs=5,
       weight_decay=0.01,
       push_to_hub=False,
       metric_for_best_model = 'f1',
       load_best_model_at_end=True)
    

    你需要:

    1. 使用load_best_model_at_end = TrueEarlyStoppingCallback() 要求这是True)。
    2. evaluation_strategy = 'steps' 而不是 'epoch'
    3. eval_steps = 50(在 N 步后评估指标)。
    4. metric_for_best_model = 'f1',

    在你的Trainer():

    trainer = Trainer(
        model,
        args,
        ...
        compute_metrics=compute_metrics,
        callbacks = [EarlyStoppingCallback(early_stopping_patience=3)]
    )
    

    当然,当你使用compute_metrics时,例如它可以是这样的函数:

    def compute_metrics(p):    
        pred, labels = p
        pred = np.argmax(pred, axis=1)
        accuracy = accuracy_score(y_true=labels, y_pred=pred)
        recall = recall_score(y_true=labels, y_pred=pred)
        precision = precision_score(y_true=labels, y_pred=pred)
        f1 = f1_score(y_true=labels, y_pred=pred)    
    return {"accuracy": accuracy, "precision": precision, "recall": recall, "f1": f1}
    

    compute_metrics() 的返回值应该是一个字典,你可以在函数内访问你想要/计算的任何指标并返回。

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2018-03-07
      • 2018-02-27
      • 2016-03-19
      • 2018-09-27
      • 1970-01-01
      • 2020-05-19
      • 2017-08-17
      • 2018-03-24
      相关资源
      最近更新 更多