跳转至

verl/utils 模块总览

模块简介

verl/utils/ 是 verl 框架的工具模块,提供了从设备管理、分布式训练、数据处理到性能分析等方方面面的基础设施。它是整个 verl 框架的"底座",被上层的 trainer、worker、model 等模块广泛依赖。

目录结构

verl/utils/
├── __init__.py                  # 模块入口,导出核心工具
├── activation_offload.py        # 激活值 CPU 卸载(节省 GPU 显存)
├── attention_utils.py           # 注意力计算工具(CUDA/NPU 统一接口)
├── chat_template.py             # 聊天模板处理(提取 system prompt 等)
├── config.py                    # 配置管理(OmegaConf → dataclass 转换与校验)
├── device.py                    # 设备抽象层(CUDA / NPU / CPU 统一)
├── distributed.py               # 分布式训练工具(进程组初始化等)
├── flops_counter.py             # 浮点运算量估算
├── fs.py                        # 文件系统工具(HDFS / 本地文件操作)
├── fsdp_utils.py                # FSDP 分布式训练工具(模型加载/卸载/LoRA)
├── groupwise.py                 # 分组统计(均值/标准差)
├── hdfs_io.py                   # HDFS 文件 IO
├── import_utils.py              # 动态导入与可选依赖检查
├── logging_utils.py             # 日志工具
├── megatron_peft_utils.py       # Megatron + PEFT/LoRA 适配
├── megatron_utils.py            # Megatron 模型转换工具(HF ↔ Megatron)
├── memory_utils.py              # 显存管理与可视化
├── model.py                     # 模型创建工具
├── net_utils.py                 # 网络工具(端口查找等)
├── npu_flash_attn_utils.py      # NPU FlashAttention 适配
├── py_functional.py             # Python 通用函数式工具
├── ray_utils.py                 # Ray 分布式计算工具
├── rollout_skip.py              # Rollout 跳过策略
├── rollout_trace.py             # Rollout 追踪日志
├── seqlen_balancing.py          # 序列长度负载均衡(Karmarkar-Karp 算法)
├── tensordict_utils.py          # TensorDict 操作工具
├── tokenizer.py                 # Tokenizer 加载与处理
├── torch_dtypes.py              # PyTorch 数据类型工具
├── torch_functional.py          # 核心 Torch 函数(log-prob、LR 调度器等)
├── tracking.py                  # 实验追踪(WandB / MLflow / TensorBoard 等)
├── transformers_compat.py       # Transformers 库版本兼容
├── ulysses.py                   # Ulysses 序列并行(DeepSpeed)
│
├── checkpoint/                  # 检查点管理子模块
│   ├── __init__.py
│   ├── checkpoint_manager.py    # 基础检查点管理器
│   ├── checkpoint_handler.py    # 检查点保存/加载处理器
│   ├── fsdp_checkpoint_manager.py    # FSDP 检查点管理
│   └── megatron_checkpoint_manager.py # Megatron 检查点管理
│
├── dataset/                     # 数据集子模块
│   ├── __init__.py
│   ├── rl_dataset.py            # RLHF 数据集
│   ├── rm_dataset.py            # 奖励模型数据集
│   ├── dataset_utils.py         # 数据集工具(Collator 等)
│   ├── vision_utils.py          # 多模态视觉处理
│   └── multiturn_sft_dataset.py # 多轮对话 SFT 数据集
│
├── megatron/                    # Megatron 并行训练子模块
│   ├── __init__.py
│   ├── optimizer.py             # Megatron 优化器
│   ├── sequence_parallel.py     # 序列并行
│   ├── pipeline_parallel.py     # 流水线并行
│   ├── tensor_parallel.py       # 张量并行
│   ├── memory.py                # 内存管理
│   ├── dist_checkpointing.py    # 分布式检查点
│   ├── router_replay_patch.py   # MoE 路由重放补丁
│   └── router_replay_utils.py   # MoE 路由重放工具
│
├── profiler/                    # 性能分析子模块
│   ├── __init__.py
│   ├── config.py                # 分析器配置
│   ├── profile.py               # 分布式分析器核心
│   ├── nvtx_profile.py          # NVTX 标记(NVIDIA GPU)
│   ├── mstx_profile.py          # MSTX 标记(华为 NPU)
│   ├── torch_profile.py         # PyTorch 分析器
│   ├── performance.py           # 性能指标(计时、显存日志)
│   └── empty_annotations.py     # 空标记实现(fallback)
│
└── kernel/                      # 高性能内核子模块
    ├── __init__.py
    ├── linear_cross_entropy.py  # 线性交叉熵(融合 kernel)
    ├── kernels.py               # Triton 内核实现
    └── fp8_kernel.py            # FP8 量化内核

模块分类导航

第一层:基础设施(建议首先阅读)

文件 说明 文档链接
device.py 设备抽象,一切的起点 01_device.md
config.py 配置管理 02_config.md
import_utils.py 依赖检查 03_import_utils.md
py_functional.py Python 工具函数 04_py_functional.md
torch_dtypes.py 数据类型工具 05_torch_dtypes.md

第二层:分布式与并行

文件 说明 文档链接
distributed.py 分布式基础 06_distributed.md
fsdp_utils.py FSDP 工具 07_fsdp_utils.md
ulysses.py Ulysses 序列并行 08_ulysses.md

第三层:数据与模型

文件 说明 文档链接
tokenizer.py Tokenizer 09_tokenizer.md
chat_template.py 聊天模板 10_chat_template.md
tensordict_utils.py TensorDict 工具 11_tensordict_utils.md
torch_functional.py 核心计算函数 12_torch_functional.md

第四层:训练辅助

文件 说明 文档链接
activation_offload.py 激活卸载 13_activation_offload.md
tracking.py 实验追踪 14_tracking.md
seqlen_balancing.py 负载均衡 15_seqlen_balancing.md
memory_utils.py 显存管理 16_memory_utils.md

第五层:其他工具

文件 说明 文档链接
__init__.py 模块入口 17_init.md
attention_utils.py 注意力工具 18_attention_utils.md
flops_counter.py FLOPS 计算 19_flops_counter.md
fs.py 文件系统 20_fs.md
groupwise.py 分组统计 21_groupwise.md
hdfs_io.py HDFS IO 22_hdfs_io.md
logging_utils.py 日志工具 23_logging_utils.md
megatron_peft_utils.py Megatron PEFT 24_megatron_peft_utils.md
megatron_utils.py Megatron 工具 25_megatron_utils.md
model.py 模型创建 26_model.md
net_utils.py 网络工具 27_net_utils.md
npu_flash_attn_utils.py NPU 注意力 28_npu_flash_attn_utils.md
ray_utils.py Ray 工具 29_ray_utils.md
rollout_skip.py Rollout 跳过 30_rollout_skip.md
rollout_trace.py Rollout 追踪 31_rollout_trace.md
transformers_compat.py 版本兼容 32_transformers_compat.md

子模块文档

推荐阅读顺序

  1. 先读本文档了解全局结构
  2. 从 device.py 开始,理解设备抽象
  3. 阅读 config.py 了解配置管理
  4. 阅读 distributed.py 和 fsdp_utils.py 了解分布式训练基础
  5. 阅读 torch_functional.py 了解核心计算
  6. 根据你的兴趣,深入特定子模块(checkpoint / dataset / megatron / profiler / kernel)