You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hugging Face Trainer中按Epoch记录训练损失以评估偏差-方差权衡

解决Hugging Face Trainer按Epoch记录训练损失的方法

要让训练损失和验证损失在每个Epoch结束时同步记录,只需要在TrainingArguments中添加**logging_strategy='epoch'**参数即可,这是官方支持的最简方案:

修改后的训练参数代码

training_arguments = TrainingArguments(
            output_dir = os.path.join(MODEL_DIR, f'{TODAYS_DATE}_multicls_cls'),
            run_name = f'{TODAYS_DATE}_multicls_cls',
            overwrite_output_dir=True,
            evaluation_strategy='epoch',
            save_strategy='epoch',
            num_train_epochs=7.0,
            per_device_train_batch_size=1,
            per_device_eval_batch_size=1,
            optim='adamw_torch',
            learning_rate=LEARNING_RATE,
            logging_strategy='epoch'  # 核心设置:按Epoch记录训练日志
)

参数说明

  • logging_strategy='epoch'会覆盖默认的按步数记录逻辑,强制在每个Epoch结束时记录训练阶段的平均损失、学习率等指标。
  • 结合你已设置的evaluation_strategy='epoch',每个Epoch结束后,trainer.state.log_history中会依次出现两条日志:一条是训练损失记录(包含loss、learning_rate、epoch字段),另一条是验证损失及评估指标记录(包含eval_loss、eval_f1等字段),两者严格按Epoch对应,方便你直接对比判断过拟合。

效果示例

设置后,日志历史会类似这样:

{'loss': 6.2345, 'learning_rate': 3e-05, 'epoch': 1.0, 'step': 160}
{'eval_loss': 6.3463, 'eval_f1': 0.2147, ..., 'epoch': 1.0, 'step': 160}
{'loss': 5.4567, 'learning_rate': 2.7e-05, 'epoch': 2.0, 'step': 320}
{'eval_loss': 5.5060, 'eval_f1': 0.2382, ..., 'epoch': 2.0, 'step': 320}

这样你就能清晰追踪每个Epoch的训练/验证损失变化,当训练损失持续下降但验证损失停止下降甚至回升时,即可判断模型进入过拟合阶段。

内容的提问来源于stack exchange,提问作者Des Grieux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:05:57