transformers_compat.py — Transformers 库版本兼容¶
文件路径: verl/utils/transformers_compat.py
文件概述¶
处理不同版本 HuggingFace Transformers 库的 API 差异,确保 verl 在不同版本下都能正常工作。
核心函数详解¶
1. FlashAttention 支持检查¶
try:
from transformers.modeling_flash_attention_utils import flash_attn_supports_top_left_mask
except ImportError:
def flash_attn_supports_top_left_mask():
return False
新版 transformers 加入了 flash_attn_supports_top_left_mask,旧版没有。这里做了兼容。
2. 版本范围检查¶
@lru_cache
def is_transformers_version_in_range(min_version=None, max_version=None) -> bool:
transformers_version = version.parse(importlib.metadata.version("transformers"))
lower = version.parse(min_version) <= transformers_version if min_version else True
upper = transformers_version <= version.parse(max_version) if max_version else True
return lower and upper
用于检查当前安装的 transformers 版本是否在某个范围内,以决定使用哪个 API。
3. 视觉语言模型类选择¶
@lru_cache
def get_auto_model_for_vision2seq():
try:
from transformers import AutoModelForImageTextToText # 新版
except ImportError:
from transformers import AutoModelForVision2Seq # 旧版
return AutoModelForVision2Seq
return AutoModelForImageTextToText
Transformers v5 将 AutoModelForVision2Seq 重命名为 AutoModelForImageTextToText,这里自动选择。
核心函数列表¶
| 函数 | 说明 |
|---|---|
flash_attn_supports_top_left_mask() |
FlashAttention mask 支持 |
is_transformers_version_in_range() |
版本范围检查 |
get_auto_model_for_vision2seq() |
获取 VL 模型类 |
与其他模块的关系¶
- 被
model.py用来选择正确的 Auto 类 - 被需要 FlashAttention 的模块检查支持情况
小结¶
transformers_compat.py 是版本兼容的安全网,让 verl 能在不同 transformers 版本下稳定运行,无需用户手动调整。