checkpoint_manager.py — 基础检查点管理器¶
文件路径: verl/utils/checkpoint/checkpoint_manager.py
文件概述¶
定义了 CheckpointManager 基类,提供检查点的保存、加载、轮转和最新检查点查找等通用逻辑。
核心类¶
CheckpointManager¶
class CheckpointManager:
def __init__(self, ckpt_dir, max_to_keep=None):
"""
Args:
ckpt_dir: 检查点保存目录
max_to_keep: 最多保留多少个检查点(None=全部保留)
"""
self.ckpt_dir = ckpt_dir
self.max_to_keep = max_to_keep
def save(self, step, **kwargs):
"""保存当前 step 的检查点"""
def load(self, step=None):
"""加载检查点,step=None 时加载最新的"""
def get_latest_checkpoint_step(self):
"""获取最新检查点的 step 编号"""
def _rotate_checkpoints(self):
"""删除多余的旧检查点,只保留最新的 max_to_keep 个"""
检查点目录结构¶
ckpt_dir/
├── step_100/
│ ├── model/
│ ├── optimizer/
│ └── metadata.json
├── step_200/
│ ├── model/
│ ├── optimizer/
│ └── metadata.json
└── latest -> step_200 (符号链接)
与其他模块的关系¶
- 被
fsdp_checkpoint_manager.py和megatron_checkpoint_manager.py继承 - 被 trainer 模块在训练循环中定期调用
小结¶
提供检查点管理的通用框架,具体的保存/加载逻辑由子类实现。