d
dingdang666/VTP-Small-f16d64-NPU
模型介绍文件和版本Pull Requests讨论分析

VTP-Small-f16d64 on Ascend NPU

1. 简介

本文档记录 VTP-Small-f16d64(Visual Tokenizer Pre-training,MiniMax)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。

VTP 是一种统一视觉 tokenizer 预训练框架,联合优化图像-文本对比、自监督和重建损失。VTP-Small 参数量约 22.7M(仅视觉编码器部分),输出 64 维特征向量。本项目完成该模型视觉编码器部分在昇腾 NPU 上的推理适配,并验证 NPU 与 CPU 结果的精度误差 < 1%。

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/MiniMaxAI/VTP-Small-f16d64
  • 原始代码(GitHub):https://github.com/MiniMax-AI/VTP
  • 适配代码仓库:https://gitcode.com/dingdang666/VTP-Small-f16d64-NPU

2. 验证环境

组件版本
Python3.11.x
PyTorch2.10.0+cpu
torch_npu2.10.0
torchvision0.25.0+cpu
safetensors0.7.0
CANN8.5.1
NPU 驱动25.5.2
NPU 硬件Ascend 910B3
操作系统Linux (aarch64)

3. 模型信息

项目值
模型架构ViT-Small/16 (VTP vision encoder)
视觉编码器参数量~22.7M
特征维度64 (bottleneck)
编码器 Layers12
Attention Heads6
Patch Size16
输入尺寸3×256×256
权重格式safetensors
原始框架PyTorch
许可证Modified MIT

4. Conda 环境安装

conda create -n vtp python=3.11 -y
conda activate vtp
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install safetensors pillow --index-url https://repo.huaweicloud.com/repository/pypi/simple/

5. 推理执行

# NPU
python3 inference.py --model_path /path/to/VTP-Small-f16d64 --image_path /path/to/img.jpg

# CPU
python3 inference.py --model_path /path/to/VTP-Small-f16d64 --image_path /path/to/img.jpg --device cpu

# 评测
python3 benchmark.py --model_path /path/to/VTP-Small-f16d64

6. 参数说明

inference.py说明默认值
--model_path模型路径必需
--image_path图像路径必需
--devicenpu:0 或 cpunpu:0
--no_warmup跳过预热False
benchmark.py说明默认值
--model_path模型路径必需
--image_path测试图像自动生成
--npu_deviceNPU 设备npu:0
--num_warmup预热轮数3

7. 精度评测结果

评测方法

同一图像在 CPU(FP32)和 NPU(FP32)上运行编码器,对比输出特征差异。

指标含义阈值
向量级相对误差`
余弦相似度方向一致性> 0.99

精度结果

输出张量向量级相对误差余弦相似度最大绝对误差平均绝对误差
features0.006474%1.00000011922.35e-058.68e-06

判定结论

指标实测值阈值状态
向量级相对误差0.0065%< 1%PASS
余弦相似度1.000000> 0.99PASS

8. 性能数据

操作耗时
CPU 推理时间(FP32)0.60s
NPU 推理时间(FP32,3轮预热后)0.27s
加速比2.21x

9. 注意事项

  1. 本脚本仅使用 VTP 模型的视觉编码器部分(trunk),不包含 pixel decoder 和 text encoder。
  2. 权重从 model.safetensors 加载,自动匹配 trunk.* 前缀。
  3. 自定义模型架构代码已内嵌在脚本中,无需额外依赖。(RMSNorm + SwiGLU + Attention)。
  4. NPU 预热默认 3 轮,消除首次编译开销。
下载使用量0