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