GLiNER微调无验证损失日志,如何同时记录训练与验证损失?
GLiNER微调验证损失问题解决
验证损失的计算位置
验证损失由Hugging Face Trainer在评估阶段自动计算:当触发评估规则(按epoch或步数)时,Trainer会遍历你传入的eval_dataset,对每个样本计算模型损失,最终取平均值得到验证损失。
同时记录训练与验证损失的解决步骤
1. 修正TrainingArguments中的评估策略配置
你的配置里同时设置了eval_strategy="epoch"和eval_steps=10,二者存在冲突:
- 若保留
eval_strategy="epoch",Trainer只会在每个epoch结束时执行评估,eval_steps参数会被忽略 - 若想每10步执行一次评估,需将
eval_strategy改为"steps"
按epoch评估的修正配置:
training_args = TrainingArguments( output_dir="models", learning_rate=5e-6, weight_decay=0.01, others_lr=1e-5, others_weight_decay=0.01, lr_scheduler_type='linear', #"cosine", warmup_ratio=0.1, per_device_train_batch_size=5, per_device_eval_batch_size=5, num_train_epochs=2, eval_strategy="epoch", # 每个epoch结束后评估 save_steps = 100, save_total_limit=10, dataloader_num_workers = 1, use_cpu = True, disable_tqdm=False, logging_dir='logs', logging_steps=10, do_train=True, do_eval=True, seed=7, )
按步数评估的修正配置:
training_args = TrainingArguments( output_dir="models", learning_rate=5e-6, weight_decay=0.01, others_lr=1e-5, others_weight_decay=0.01, lr_scheduler_type='linear', #"cosine", warmup_ratio=0.1, per_device_train_batch_size=5, per_device_eval_batch_size=5, num_train_epochs=2, eval_strategy="steps", # 按步数触发评估 eval_steps=10, # 每10步评估一次 save_steps = 100, save_total_limit=10, dataloader_num_workers = 1, use_cpu = True, disable_tqdm=False, logging_dir='logs', logging_steps=10, do_train=True, do_eval=True, seed=7, )
2. 确保数据集格式合规
检查test_dataset的格式是否符合GLiNER要求:打印test_dataset[0],确认包含input_ids、attention_mask、labels等模型必需的字段。数据集格式错误会导致Trainer无法正常计算验证损失。
3. 查看损失日志
- 训练过程中,每次评估完成后,控制台会输出
eval_loss: x.xxx的条目 - 你指定的
logging_dir='logs'目录下会生成TensorBoard日志,运行tensorboard --logdir logs即可在可视化界面中同时查看训练损失和验证损失的变化曲线
内容的提问来源于stack exchange,提问作者andream
相关产品推荐
相关产品推荐

