我现在正在使用huggingface/transformers在 1m Wiki数据上从头开始 训练BERT模型,但是训练损失看起来很奇怪。在显示培训过程的详细信息之前,我将首先共享我使用的脚本和配置:
python run_language_modeling.py --output_dir $OUTPUT_DIR \
--model_type bert \
--mlm \
--config_name $CONFIG_AND_DATA_DIR \
--tokenizer_name $CONFIG_AND_DATA_DIR \
--do_train \
--do_eval \
--num_train_epochs 20 \
--learning_rate 1e-4 \
--save_steps 250 \
--per_gpu_train_batch_size 64 \
--evaluate_during_training \
--seed 404 \
--block_size 256 \
--train_data_file $DATA_DIR/train.txt \
--eval_data_file $DATA_DIR/valid.txt \
--evaluate_during_training \
--logging_steps 250 > log.bert
其中run_language_modeling.py是拥抱面提供的python脚本。除了词汇量之外,我没有更改BERT的配置。词汇表或标记器是使用huggingface/tokenizers进行训练的。
我放入了训练损失日志here。我们可以看到,经过20个纪元后,训练损失从7.84
减少到7.61
。太奇怪了,因为原始数据的行数仅为100万,所以使用这样的数据量,训练损失应该急剧减少。
我尝试了几种方法来解决此问题:
learning_rate
调整为5e-4,不幸的是,聚合损失甚至变得更糟。感谢您的帮助!