Shortcuts

CheckpointCallback

class CheckpointCallback(folder=None, every_n_epochs=None, every_n_batches=None, process_exclusion=False, model_only=True, peft_only=True, monitor=None, larger_better=True, topk=0, last=False, max=None, **kwargs)[源代码]

用于保存断点 checkpointCallback

其保存的文件目录以及文件名命名规则如下:

- folder/
    - epoch_{epoch_idx}/  # 满足 every_n_epochs 条件保存的模型
    - epoch_{epoch_idx}-batch_{batch_idx}/  # 满足 every_n_batches 保存的模型
    - last/  # 最后一个 epoch 的保存
    - epoch_{epoch_idx}-batch_{batch_idx}-{monitor}_{monitor_value}/  # 满足topk条件存储文件名

默认情况下,本 checkpoint 只保存了 model 的状态;如还需保存 Trainer 的状态 以断点重训的话,请使用 model_only=False

参数:
  • folder (Union[str, Path, None], default: None) -- 保存的文件夹,如果为 None ,默认使用当前文件夹。

  • every_n_epochs (Optional[int], default: None) -- 多少个 epoch 保存一次。

  • every_n_batches (Optional[int], default: None) -- 多少个 batch 保存一次。

  • process_exclusion (bool, default: False) -- -- 是否互斥地执行保存操作;在模型规模较大时该参数可以 节省一定的内存。

  • model_only (bool, default: True) -- 是否仅保存模型的权重;如果为 True 则仅会保存模型权重, 否则还会额外保存 optimizer、训练步数等断点信息以用于断点重训,可以通过 Trainer.load_checkpoint() 加载重新进行训练。该保存路径还可以通过 CollieForCausalLM.from_pretrained() 函数或者 Trainer.load_model() 加载到模型中;同时也可以直接加载到对应的 huggingface 模型中。

  • peft_only (bool, default: True) -- 是否只保存 adapter;当未使用 peft 时该项无效

  • monitor (Union[str, Callable, None], default: None) --

    监控的 metric 值。

    • str 时, collie 将尝试直接使用该名称从 evaluation 的结果中寻找,如果最终在 evaluation 结果中没有找到完全一致的名称,则将使用最长公共字符串算法 从 evaluation 结果中找到最匹配的那个作为 monitor

    • Callable 时, 则接受参数为 evaluation 的结果(字典类型),返回一个 float 值作 为 monitor 的结果,如果当前结果中没有相关的 monitor 值则返回 None

  • larger_better (bool, default: True) -- monitor 的值是否时越大越好。

  • topk (int, default: 0) -- 保存 monitor 结果中的 topk 个。

  • last (bool, default: False) -- 如果为 True,将在每次 epoch 运行结束都保存一次,会覆盖之前的 保存。如果为 False 则不会保存 last 文件。

  • max (Optional[int], default: None) -- 最多保留多少个通过 every_n_batchesevery_n_epochs 保存 的权重(如果设置了的话);如果为 None 或 0,则会保留所有的权重文件。

  • kwargs -- 传给 Trainer.save_checkpoint() 或者 Trainer.save_model()Trainer.save_peft() 的额外参数。