跳转至

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 模块在训练循环中定期调用

小结

提供检查点管理的通用框架,具体的保存/加载逻辑由子类实现。