Huggingface Seq2seqTrainer 在评估时卡住

0 投票
1 回答
63 浏览
提问于 2025-04-14 17:25

我现在正在尝试通过跟随微调Whisper模型的教程来训练一个Whisper模型。不过,在训练阶段,当我调用trainer.train()时,进度条会显示训练的进展,但当它到达训练参数中定义的评估步骤时,就会卡住,进度条也停在那里。没有错误输出,也没有其他信息。看起来就是这样。

这里输入图片描述

我在Kaggle笔记本上写代码,并且开启了GPU P100。以下是我在训练函数之前的训练参数。

from transformers import WhisperForConditionalGeneration

model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

model.config.forced_decoder_ids = None
model.config.suppress_tokens = []
model.generation_config.language = "en"
from transformers import Seq2SeqTrainingArguments

training_args = Seq2SeqTrainingArguments(
    output_dir="./whisper-small-eng-gen",  # change to a repo name of your choice
    per_device_train_batch_size=16,
    gradient_accumulation_steps=1,  # increase by 2x for every 2x decrease in batch size
    learning_rate=1e-5,
    warmup_steps=500,
    max_steps=1000,
    gradient_checkpointing=True,
    fp16=True,
    evaluation_strategy="steps",
    per_device_eval_batch_size=8,
    predict_with_generate=True,
    generation_max_length=225,
    save_steps=1000,
    eval_steps=1000,
    logging_steps=25,
    report_to=["tensorboard"],
    load_best_model_at_end=True,
    metric_for_best_model="wer",
    greater_is_better=False,
    push_to_hub=True,
    ignore_data_skip=True
)
from transformers import Seq2SeqTrainer

trainer = Seq2SeqTrainer(
    args=training_args,
    model=model,
    train_dataset=common_voice_train,
    eval_dataset=common_voice_test,
    data_collator=data_collator,
    compute_metrics=compute_metrics,
    tokenizer=processor.feature_extractor,
)

最开始,训练的max_steps设置为4000,但它总是在第1001步卡住。

我觉得值得一提的是,我的数据集是流式的,并且是一个可迭代的数据集。

任何帮助都非常感谢!

**更新**
我编辑了我的代码,加入了详细的日志记录:

import transformers

transformers.logging.set_verbosity_info()

这是在达到评估步骤后生成的日志。

你传入了language=en,但同时设置了forced_decoder_ids为[[1, None], [2, 50359]],这造成了冲突。forced_decoder_ids会被忽略,优先使用language=en。

1 个回答

暂无回答

撰写回答