跳转至

__init__.py — 这是 checkpoint_engine 模块的入口文件

文件路径: verl/checkpoint_engine/__init__.py

文件概述

这是 checkpoint_engine 模块的入口文件。它的职责是: 1. 从 base.py 导入核心基础类。 2. 按需导入各个通信后端的实现类(如果依赖库没装则跳过)。

关键代码讲解

1. 导入核心基础类

from .base import (
    CheckpointEngine,
    CheckpointEngineManager,
    CheckpointEngineRegistry,
    CheckpointEngineWorker,
    ColocatedCheckpointEngine,
    TensorMeta,
)

这些是所有后端实现都需要的基础类,无条件导入。

2. 按需导入各后端实现

try:
    from .nccl_checkpoint_engine import NCCLCheckpointEngine
    __all__ += ["NCCLCheckpointEngine"]
except ImportError:
    NCCLCheckpointEngine = None

每个后端实现都包裹在 try/except ImportError 中。这是因为不同后端依赖不同的底层库: - NCCLCheckpointEngine 依赖 cupy(NVIDIA GPU) - HCCLCheckpointEngine 依赖华为 NPU 相关库 - NIXLCheckpointEngine 依赖 nixl RDMA 库 - KIMICheckpointEngine 依赖 Kimi 的 checkpoint_engine 库 - MooncakeCheckpointEngine 依赖 mooncake 库

如果对应的库没有安装,就把该类设为 None,不会导致整个模块报错。这样用户只需要安装自己需要的后端依赖即可。

核心类/函数列表

名称 来源 作用
CheckpointEngine base.py 抽象基类
CheckpointEngineRegistry base.py 引擎注册表
TensorMeta base.py 张量元数据
ColocatedCheckpointEngine base.py 共享GPU的简单实现
CheckpointEngineManager base.py 全局管理器
CheckpointEngineWorker base.py Ray Worker封装
NCCLCheckpointEngine nccl_checkpoint_engine.py NCCL后端
HCCLCheckpointEngine hccl_checkpoint_engine.py HCCL后端
NIXLCheckpointEngine nixl_checkpoint_engine.py NIXL后端
KIMICheckpointEngine kimi_checkpoint_engine.py Kimi后端
MooncakeCheckpointEngine mooncake_checkpoint_engine.py Mooncake后端

与其他模块的关系

  • 这是整个 checkpoint_engine 模块的对外接口,外部代码(如训练主循环)通过 from verl.checkpoint_engine import ... 使用。
  • 所有类的实际定义都在子模块文件中。

小结

__init__.py 是一个"门面"文件,采用可选导入模式让不同硬件环境的用户都能正常使用框架。核心设计思想是:基础类必须导入,具体后端按环境可用性按需导入。