以下是配置从HuggingFace转换器库中使用的TrainingArguments的代码以微调GPT2语言模型的代码。
training_args = TrainingArguments(
output_dir="./gpt2-language-model", #The output directory
num_train_epochs=100, # number of training epochs
per_device_train_batch_size=8, # batch size for training #32, 10
per_device_eval_batch_size=8, # batch size for evaluation #64, 10
save_steps=100, # after # steps model is saved
warmup_steps=500,# number of warmup steps for learning rate scheduler
prediction_loss_only=True,
metric_for_best_model = "eval_loss",
load_best_model_at_end = True,
evaluation_strategy="epoch",
learning_rate=0.00004, # learning rate
)
early_stop_callback = EarlyStoppingCallback(early_stopping_patience = 3)
trainer = Trainer(
model=gpt2_model,
args=training_args,
data_collator=data_collator,
train_dataset=train_dataset,
eval_dataset=test_dataset,
callbacks = [early_stop_callback],
)
的历元的数目为100和learning_rate为0.00004,也是early_stopping配置有耐心值3。
该模型运行了5/100个纪元,并注意到loss_value的差异可以忽略不计。最新的检查点另存为checkpoint-latest
。
现在,我是否learning_rate
可以修改“可能0.01
来自”0.00004
并从最新保存的检查点-开始恢复训练checkpoint-latest
?这样做会有效吗?
还是要以新的learning_rate
价值进行培训,我应该从头开始培训吗?
不,您不必重新开始培训。
改变学习率就像改变模型在损失函数所确定的方向上迈出的一大步。
您也可以将其视为转移学习,其中模型具有一定的经验(无论多少或无关),并且weights
处于最有可能比随机初始化的模型更好的状态。
事实上,在中等学习中改变学习率是一门深度学习的艺术,如果您有很好的理由应该改变它。
如果您或其他人想“复制”模型的结果,则可能要写下何时(为什么,做什么等)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句