我正在使用Huggingface Trainer 类对文档文本二进制分类任务中的 Longformer 进行微调,并且我正在使用 Tensorboard 监视一些检查点的测量值。
即使 F1 分数和准确率很高,我也对训练损失的波动感到困惑。
我在网上阅读的原因可能是:
- 学习率太高,但我尝试了 3 个值(1e-4、1e-5 和 1e-6),它们都产生了相同的效果
- 小批量。我正在使用具有 8xK80 GPU 的Sagemaker 笔记本 p2.8xlarge。我可以用来避免CUDA 内存不足错误的每个 GPU 的批量大小是 1。所以总批量大小是8。我的直觉是 8 的 bs 对于包含 57K 示例(每个 epoch 7K 步)的数据集来说太小了。不幸的是,这是我可以使用的最高价值。
这里我报告了F1、accuracy、loss和smoothed loss的趋势。灰色线是 1e-6 的学习率,而粉红色的是 1e-5。
我恢复了我培训的所有信息:
- 批量大小:1 x 8GPU = 8
- 学习率: 1e-4 , 1e-5 , 1e-6(所有测试都没有改善损失)
- 型号: Longformer
- 数据集:
- 训练集:57K 个例子
- 开发集:12K 示例
- 测试集:12K 示例
这可能是什么原因?尽管 F1 和准确度结果非常好,这是否可以被视为一个问题?