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)[源代码]¶
用于保存断点
checkpoint的Callback。其保存的文件目录以及文件名命名规则如下:
- 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_batches和every_n_epochs保存 的权重(如果设置了的话);如果为None或 0,则会保留所有的权重文件。kwargs -- 传给
Trainer.save_checkpoint()或者Trainer.save_model()、Trainer.save_peft()的额外参数。