Fix transformers version

This commit is contained in:
Xin Wang
2026-08-27 15:24:59 +08:00
parent 694473b475
commit c4feeb47f4
5 changed files with 185 additions and 19 deletions

View File

@@ -28,9 +28,21 @@ Qwen 3B 的 **2048 是编码器原生输出维度,256 只是新增 head 的可
这保证相对于 readout 时刻的输入因果性,但不保证编码器在窗口内部逐 token 因果。
实现依据:[Qwen 3B 配置](https://huggingface.co/Qwen/Qwen2.5-Omni-3B/blob/main/config.json)、
[Transformers 4.52.3 编码器 API](https://github.com/huggingface/transformers/blob/v4.52.3/src/transformers/models/qwen2_5_omni/modeling_qwen2_5_omni.py)。
[Transformers 4.52.3 编码器 API](https://github.com/huggingface/transformers/blob/v4.52.3/src/transformers/models/qwen2_5_omni/modeling_qwen2_5_omni.py)、
[4.57.6 编码器 API](https://github.com/huggingface/transformers/blob/v4.57.6/src/transformers/models/qwen2_5_omni/modeling_qwen2_5_omni.py)。
脚本加载 Thinker checkpoint 后释放语言解码器,仅将冻结的视觉/音频塔移到 GPU;没有 Thinker forward。
局部提取已适配 **Transformers 4.52.3 和 4.57.6**,现有 L20 / ms-swift 容器若是 4.57.6,
无需降级,也不要为这一步重新安装整个 `requirements.txt`。旧脚本只接受精确的 4.52.3,
因此即使接口存在也会在加载模型前主动报错;更新脚本后重跑原 smoke 命令即可。
两个版本都校验原生 token 输出形状与权重完整性,并显式使用 `use_fast=False` 固定图像预处理路径。
未知版本仍在媒体解码前报错;`--preview-only` 不受编码器版本检查影响。
该兼容范围只针对本局部提取脚本,不代表 Thinker KV replay 或 ROMA 的全部接口可互换。
输出的 `config.transformers` 记录实际运行版本,不再写死 4.52.3。
同一局部特征实验的 train/test sessions 应统一版本、权重和提取配置;加载器会拒绝混用版本。
接口兼容不等于不同版本的浮点特征逐位相同,已有全局 Omni 特征无需重提。
## 1. EasyCom:先检查框,再跑一个 4s smoke test
在已有项目依赖的 GPU 机器运行,以下路径沿用之前实验;raw 数据根按实际挂载修改。
@@ -83,6 +95,8 @@ python - <<'PY'
import torch
p = torch.load('features/local_smoke/Session_1.pt', map_location='cpu', weights_only=False)
print('partial:', p['partial'])
print('transformers:', p['config']['transformers'])
print('box coordinates:', p['config']['box_coordinate_space'])
for key in ('visual', 'audio'):
x = p[key]
print(key, tuple(x.shape), x.dtype, 'finite:', bool(torch.isfinite(x).all()),
@@ -94,9 +108,12 @@ PY
3B 预期 V/A 各 `[20,2048]`,时间 0.2–4.0s;没有人脸的时刻允许 V 无效。
本机已验证 CPU 对齐/融合/合成数据训练推理,真实 checkpoint + GPU 提取仍需此 smoke test。
另有不下载权重的小型随机 Qwen 编码器 API 测试。可在已有依赖的环境运行:
另有不下载权重的小型随机 Qwen 编码器 API 和本地 checkpoint 加载测试,
在 4.52.3 / 4.57.6 上均适用;checkpoint 加载测试需要 `accelerate`。
可先检查本机编码器接口,再跑完整回归:
```bash
python -m unittest -v test_local_turn_features.TinyQwenEncoderTests
python -m unittest -v test_easycom_head_objectives test_local_turn_features
```