使用TensorBoard记录功能时,添加SummaryWriter到callbacks,某些版本可能不适用该如何修改

如果发现将SummaryWriter直接添加到callbacks不被支持,您可以采取另一种方式来集成TensorBoard记录功能,即通过自定义回调函数来实现。Hugging Face Transformers库允许用户自定义训练回调,这可以用来在训练过程中向TensorBoard写入日志。

下面是如何创建一个简单的自定义回调以与TensorBoard一起使用的示例:

首先,确保你有SummaryWriter的实例在训练开始前被初始化,并且在训练结束后被关闭。然后,定义一个自定义回调类来集成TensorBoard日志记录逻辑:

from transformers import TrainerCallback
from torch.utils.tensorboard import SummaryWriter

class TensorBoardCallback(TrainerCallback):
    def __init__(self, writer):
        self.writer = writer

    def on_log(self, args, state, control, logs=None, **kwargs):
        if logs is not None:
            for k, v in logs.items():
                if isinstance(v, (int, float)):
                    self.writer.add_scalar(k, v, state.global_step)
            self.writer.flush()

# 初始化SummaryWriter
tb_writer = SummaryWriter(log_dir=training_args.logging_dir)

# 自定义回调实例化
custom_callback = TensorBoardCallback(writer=tb_writer)

# 定义训练器,将自定义回调添加到callbacks列表中
trainer = Trainer(
    model=model,                         # 待训练模型
    args=training_args,                  # 训练参数
    data_collator=collater,              # 数据校准器
    train_dataset=tokenized_train_dataset,# 训练集
    eval_dataset=tokenized_valid_dataset, # 验证集
    compute_metrics=compute_metric,       # 计算自定义指标
    callbacks=[custom_callback],          # 添加自定义TensorBoard回调
)

# 开始训练
trainer.train()

# 训练结束后关闭TensorBoard SummaryWriter
tb_writer.close()

在这个示例中,我们创建了一个名为TensorBoardCallback的类,该类继承自TrainerCallback。在on_log方法中,我们将训练日志中的每个标量值写入到TensorBoard中,这样您就可以在TensorBoard中可视化这些指标了。记得在训练结束后关闭SummaryWriter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值