X
Xiaoxy510/VTP-Base-f16d64-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

VTP-Base-f16d64 on Ascend NPU

1. 简介

本文档记录 VTP-Base-f16d64 在昇腾 NPU 环境的适配与验证结果。VTP(Visual Tokenizer)是 MiniMax 开发的视觉Tokenizer模型,能够将图像转换为离散的 token 表示。

相关获取地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/MiniMaxAI/VTP-Base-f16d64
  • 权重下载地址(ModelScope):https://modelscope.cn/models/MiniMaxAI/VTP-Base-f16d64
  • 原项目地址:https://github.com/MiniMax-AI/VTP

2. 验证环境

组件版本
torch2.10.0
torch_npu2.10.0
transformers5.8.1
  • NPU:1 逻辑卡
  • Conda 环境:vtp-base

3. 适配方法

3.1 问题分析

模型 checkpoint 中的权重与 model.safetensors 声明的结构存在部分不匹配:

  • UNEXPECTED:checkpoint 中存在模型不使用的权重(text_transformer、pixel_decoder 等)
  • MISSING:trunk.pos_embed 和 trunk.feature_bottleneck.bias 在 checkpoint 中缺失
  • MISMATCH:trunk.mask_token 形状不匹配

使用 ignore_mismatched_sizes=True 会导致部分权重被随机初始化,引发精度下降(41.71%)。

3.2 解决方案

使用 safetensors 直接加载 checkpoint,手动过滤不匹配的权重:

  1. 加载 AutoConfig 和 model.safetensors
  2. 创建模型结构 VTPModel(config)
  3. 仅加载形状完全匹配的权重:v.shape == model_dict[k].shape
  4. 使用 model.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)

主要适配工作:

  1. 设备迁移:使用 model.to("npu:0") 将模型权重迁移到 NPU
  2. 输入处理:将输入张量移至 NPU 设备
  3. 同步调用:NPU 推理后调用 torch.npu.synchronize() 确保计算完成

4. 环境配置

4.1 创建 conda 环境

conda create -n vtp-base python=3.11 -y
conda activate vtp-base

4.2 安装依赖

pip 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/simple

5. 使用方式

5.1 推理脚本

python inference.py --device npu:0 --warmup 3 --benchmark 50

参数说明:

参数默认值说明
--model-dir必填模型权重目录路径
--imageNone图片路径
--devicenpu:0推理设备
--warmup5预热轮数
--benchmark50性能评测轮数

5.2 精度与性能评测

python eval.py

6. 评测结果

6.1 精度评测

输出最大绝对误差相对误差 (%)
last_hidden_state1.44e-030.0101

精度阈值要求:相对误差 < 1%

6.2 性能评测

指标CPUNPU
平均推理耗时363.76 ms10.25 ms
加速比1x35.47x

7. 注意事项

  1. 模型输入尺寸为 [1, 3, 256, 256](与原版一致)
  2. Conda 环境名称与模型名称一致:vtp-base
  3. 需要 trust_remote_code=True 加载模型
  4. 权重加载使用 safetensors 而非 pytorch_model.bin