跳转至

import_utils.py — 动态导入与依赖检查

文件路径: verl/utils/import_utils.py

文件概述

import_utils.py 提供了可选依赖包的可用性检查函数。verl 依赖很多可选库(如 vLLM、Megatron、Flash Attention 等),该文件用 importlib 在运行时检测这些包是否已安装,避免硬依赖导致的导入错误。

核心模式

所有检查函数遵循相同的模式:

def is_xxx_available():
    return importlib.util.find_spec("xxx") is not None

find_spec() 只检查包是否可以被找到(已安装),不会真正导入,因此非常轻量。

核心函数列表

函数 检查的库 用途
is_vllm_available() vllm 推理引擎
is_sglang_available() sglang 推理引擎
is_megatron_core_available() megatron.core 大模型并行训练
is_nvtx_available() nvtx NVIDIA 性能标记
is_wandb_available() wandb 实验追踪
is_mlflow_available() mlflow 实验追踪
is_flash_attn_available() flash_attn 高效注意力

与其他模块的关系

  • profiler/__init__.py 用它检查 NVTX 是否可用
  • tracking.py 用它检查 WandB/MLflow 等追踪后端
  • 各个 worker 模块用它判断应该加载哪个推理引擎

小结

import_utils.py 是一个简洁但重要的工具文件,它让 verl 能优雅地处理可选依赖,避免在缺少某个库时整个框架无法导入。