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

使用Hugging Face Transformers编写自定义回调:GPT-2训练epoch结束无输出

GPT-2微调自定义Epoch回调不生效的解决方法

问题根源及修复步骤:

  • 回调传入错误:Trainer的callbacks参数需要接收回调类的实例,而非类本身。你当前传入的是类对象my_callback,需改为实例my_callback()。
  • 方法签名不完整:TrainerCallback的on_epoch_end方法必须包含control参数,否则框架无法正确触发该回调。同时建议保留**kwargs以兼容版本更新。

修正后的完整代码:

自定义回调类

from transformers import TrainerCallback, TrainingArguments, TrainerState, TrainerControl

class my_callback(TrainerCallback):
    def on_epoch_end(
        self,
        args: TrainingArguments,
        state: TrainerState,
        control: TrainerControl,
        model=None,
        tokenizer=None,
        **kwargs
    ):
        print(f"Epoch {state.epoch} has ended.")

Trainer初始化

trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=train_dataset,
    eval_dataset=test_dataset,
    callbacks=[my_callback()]  # 传入回调实例
)

修改后,每个训练epoch结束时就会正常打印提示信息。如果需要扩展功能(比如保存中间模型、计算自定义指标),可以在on_epoch_end方法中利用model、state等参数实现对应逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:05:21