首页 > 解决方案 > 在深度学习模型训练中修改学习率

问题描述

下面是配置从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],
 )

epoch数100learning_rate0.00004early_stopping的耐心值为3

该模型运行了5/100个 epoch,并注意到 loss_value 的差异可以忽略不计。最新的检查点保存为checkpoint-latest.

现在我可以修改learning_rate可能是0.010.00004最新保存的检查点恢复训练checkpoint-latest吗?这样做会有效率吗?

还是要以新learning_rate值进行训练,我应该从头开始训练

标签: deep-learningpytorchhuggingface-transformerslanguage-modelgpt-2

解决方案


不,您不必重新开始训练。

改变学习率就像改变你的模型在你的损失函数决定的方向上迈出的大步。

您也可以将其视为迁移学习,其中模型有一些经验(无论多么少或不相关),并且weights处于最有可能比随机初始化的状态更好的状态。

事实上,在训练中改变学习率被认为是深度学习中的一门艺术,如果你有充分的理由这样做,你应该改变它。

如果您或其他人想要“重现”您的模型的结果,您可能想写下您何时(为什么、什么等)这样做。


推荐阅读