🏁从最后一个检查点继续微调

检查点保存可让你保存微调进度,以便暂停后继续。

你必须先编辑 Trainer 以添加 save_strategy 以及 save_steps。下面会每 50 步将一个检查点保存到文件夹 outputs.

trainer = SFTTrainer(
    ....
    args = TrainingArguments(
        ....
        output_dir = "outputs",
        save_strategy = "steps",
        save_steps = 50,
    ),
)

然后在 trainer 中执行:

trainer_stats = trainer.train(resume_from_checkpoint = True)

这将从最新的检查点开始并继续训练。

Wandb 集成

# 安装库
!pip install wandb --upgrade

# 设置 Wandb
!wandb login <token>

import os

os.environ["WANDB_PROJECT"] = "<name>"
os.environ["WANDB_LOG_MODEL"] = "checkpoint"

然后在 TrainingArguments() 中设置

要训练模型,请执行 trainer.train();要恢复训练,请执行

我该如何进行早停?

如果你想在评估损失不再下降时停止或暂停微调/训练运行,那么你可以使用早停,它会停止训练过程。使用 EarlyStoppingCallback.

和往常一样,先设置好你的 trainer 和评估数据集。下面的设置用于在 eval_loss (评估损失)在大约 3 步之后不再下降时停止训练运行。

然后我们添加回调,也可以进行自定义:

然后像往常一样通过以下方式训练模型 trainer.train() 。

最后更新于

这有帮助吗?