深度学习模型训练过程中修改学习率
Modifying the Learning Rate in the middle of the Model Training in Deep Learning
下面是配置TrainingArguments consumed from the HuggingFace transformers library to finetune the 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.00004
修改为 0.01
并从最新保存的检查点 - checkpoint-latest
恢复训练吗?这样做会有效率吗?
或者要使用新的 learning_rate
值进行训练,我应该从头开始 训练 吗?
Pytorch提供了几种调整learning_rate的方法:torch.optim.lr_scheduler。
查看文档以了解用法 https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
不,您不必重新开始训练。
改变学习率就像改变你的模型在由你的损失函数决定的方向上采取的步骤。
您也可以将其视为迁移学习,其中模型具有 一些经验(无论多么少或不相关)并且 weights
处于状态 很可能比随机初始化的更好。
事实上,在训练中改变学习率被认为是深度学习的一门艺术,如果你有非常非常好的理由,你应该改变它它。
如果您或其他人想要“重现”您的模型的结果,您可能想要写下您何时(为什么、什么等)做这件事。
下面是配置TrainingArguments consumed from the HuggingFace transformers library to finetune the 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.00004
修改为 0.01
并从最新保存的检查点 - checkpoint-latest
恢复训练吗?这样做会有效率吗?
或者要使用新的 learning_rate
值进行训练,我应该从头开始 训练 吗?
Pytorch提供了几种调整learning_rate的方法:torch.optim.lr_scheduler。 查看文档以了解用法 https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
不,您不必重新开始训练。
改变学习率就像改变你的模型在由你的损失函数决定的方向上采取的步骤。
您也可以将其视为迁移学习,其中模型具有 一些经验(无论多么少或不相关)并且 weights
处于状态 很可能比随机初始化的更好。
事实上,在训练中改变学习率被认为是深度学习的一门艺术,如果你有非常非常好的理由,你应该改变它它。
如果您或其他人想要“重现”您的模型的结果,您可能想要写下您何时(为什么、什么等)做这件事。