本文档记录 VTP-Base-f16d64 在昇腾 NPU 环境的适配与验证结果。VTP(Visual Tokenizer)是 MiniMax 开发的视觉Tokenizer模型,能够将图像转换为离散的 token 表示。
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.10.0 |
torch_npu | 2.10.0 |
transformers | 5.8.1 |
1 逻辑卡vtp-base模型 checkpoint 中的权重与 model.safetensors 声明的结构存在部分不匹配:
trunk.pos_embed 和 trunk.feature_bottleneck.bias 在 checkpoint 中缺失trunk.mask_token 形状不匹配使用 ignore_mismatched_sizes=True 会导致部分权重被随机初始化,引发精度下降(41.71%)。
使用 safetensors 直接加载 checkpoint,手动过滤不匹配的权重:
AutoConfig 和 model.safetensorsVTPModel(config)v.shape == model_dict[k].shapemodel.load_state_dict(loaded_dict, strict=False) 完成加载关键代码:
from safetensors.torch import load_file
from transformers import AutoConfig, AutoModel
config = AutoConfig.from_pretrained(model_dir, trust_remote_code=True)
model_state_dict = load_file(f"{model_dir}/model.safetensors")
model = VTPModel(config)
model_dict = model.state_dict()
loaded_dict = {k: v for k, v in model_state_dict.items()
if k in model_dict and v.shape == model_dict[k].shape}
model.load_state_dict(loaded_dict, strict=False)主要适配工作:
model.to("npu:0") 将模型权重迁移到 NPUtorch.npu.synchronize() 确保计算完成conda create -n vtp-base python=3.11 -y
conda activate vtp-basepip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cpu
pip install torch_npu transformers pillow timm -i https://repo.huaweicloud.com/repository/pypi/simplepython inference.py --device npu:0 --warmup 3 --benchmark 50参数说明:
| 参数 | 默认值 | 说明 |
|---|---|---|
--model-dir | 必填 | 模型权重目录路径 |
--image | None | 图片路径 |
--device | npu:0 | 推理设备 |
--warmup | 5 | 预热轮数 |
--benchmark | 50 | 性能评测轮数 |
python eval.py| 输出 | 最大绝对误差 | 相对误差 (%) |
|---|---|---|
last_hidden_state | 1.44e-03 | 0.0101 |
精度阈值要求:相对误差 < 1%
| 指标 | CPU | NPU |
|---|---|---|
| 平均推理耗时 | 363.76 ms | 10.25 ms |
| 加速比 | 1x | 35.47x |
[1, 3, 256, 256](与原版一致)vtp-basetrust_remote_code=True 加载模型safetensors 而非 pytorch_model.bin