我正在使用HF Seq 2SeqTrainingArguments和Seq 2SeqTrainer微调HuggingFace变压器模型(PyTorch版本),并且我希望在Tensorboard中显示训练和验证损耗(在同一图表中)。
据我所知,为了将两个损失绘制在一起,我需要使用SummaryWriter。HF Callbacks文档描述了一个可以接收tb_writer参数的TensorBoardCallback函数:
https://huggingface.co/docs/transformers/v4.21.1/en/main_classes/callback#transformers.integrations.TensorBoardCallback
然而,我不能弄清楚什么是正确的使用方式,如果它甚至应该与教练API一起使用的话。
我的代码看起来像这样:
args = Seq2SeqTrainingArguments(
output_dir=output_dir,
evaluation_strategy='epoch',
learning_rate= 1e-5,
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
weight_decay=0.01,
save_total_limit=3,
num_train_epochs=num_train_epochs,
predict_with_generate=True,
logging_steps=logging_steps,
report_to='tensorboard',
push_to_hub=False,
)
trainer = Seq2SeqTrainer(
model,
args,
train_dataset=tokenized_train_data,
eval_dataset=tokenized_val_data,
data_collator=data_collator,
tokenizer=tokenizer,
compute_metrics=compute_metrics,
)
我会假设我应该在训练器中包含对TensorBoard的回调,例如,
callbacks = [TensorBoardCallback(tb_writer=tb_writer)]
但是我找不到一个关于如何使用/导入什么来使用它全面示例。
我还在GitHub上找到了这个功能请求,
https://github.com/huggingface/transformers/pull/4020
但没有使用的例子,所以我很困惑...
任何见解都将受到赞赏
2条答案
按热度按时间9o685dep1#
它非常简单。您可以在“Seq2SeqTrainingArguments”中提到它。没有必要在“Seq2SeqTrainer”函数中显式定义它。
同时,您还可以进行其他回调:
然后,通过trainer参数将参数和回调作为列表传递:
训练模型。确保在训练前登录wandb
tvmytwxo2#
Trainer
类自动输出TensorBoard
的事件,不需要使用回调函数。正如@Junaid所提到的,日志记录可以由
TrainingArguments
类控制,例如,您可以在那里设置logging_dir
。如需详细信息,请参阅TrainingArguments。