Huggingface Seq2seqTrainer 在评估时卡住
我现在正在尝试通过跟随微调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 个回答
暂无回答