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

VTP-Large-f16d64 on Ascend NPU

1. 简介

本文档记录 VTP-Large-f16d64 在华为昇腾 NPU (Ascend 910B4) 环境的适配与验证结果。

VTP (Visual Tokenizer Pre-training) 是 MiniMax 开源的视觉分词器,基于 DINOv3 ViT 架构,联合优化图像-文本对比学习、自监督学习和图像重建三种训练目标。

VTP-Large-f16d64 使用 ViT-Large 编码器,f16 表示 16× 空间压缩,d64 表示 64 维 Latent 空间。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/MiniMax/VTP-Large-f16d64
  • 权重下载地址(HuggingFace):https://huggingface.co/MiniMaxAI/VTP-Large-f16d64
  • 论文:https://arxiv.org/abs/2512.13687
  • 官方代码:https://github.com/MiniMax-AI/VTP

参考文档:

  • VTP-Small-f16d64 适配参考:https://ai.gitcode.com/m0_74196153/VTP-Small-f16d64
  • VTP ModelScope 合集:https://modelscope.cn/collections/MiniMax/VTP

2. 验证环境

组件版本
torch2.9.0+cpu
torch_npu2.9.0.post1+gitee7ba04
transformers4.57.6
torchvision0.24.0
Pillow12.2.0
CANN8.5.1
  • NPU:Ascend 910B4,1 逻辑卡
  • 推理精度:fp16 (混合精度)

3. 模型规格

组件配置
总参数量731.6M
Vision EncoderViT-Large (24层, 1024维, 16头)
Pixel Decoder24层, 1024维, 16头
Text Encoder12层, 768维, 12头
Feature Bottleneck1024 → 64
Latent 维度64 (f16d64)
输入分辨率256×256
Patch Size16

4. 推理启动

4.1 环境准备

pip install torch torch_npu torchvision transformers omegaconf pillow

4.2 下载模型

# ModelScope (推荐)
pip install modelscope
python3 -c "from modelscope import snapshot_download; snapshot_download('MiniMax/VTP-Large-f16d64')"

# HuggingFace
huggingface-cli download MiniMaxAI/VTP-Large-f16d64 --local-dir ./VTP-Large-f16d64

4.3 运行推理

# 自编码器重建
python3 inference.py --model ./VTP-Large-f16d64 --mode ae

# CLIP 零样本分类
python3 inference.py --model ./VTP-Large-f16d64 --mode clip --image cat.jpg

# 特征提取
python3 inference.py --model ./VTP-Large-f16d64 --mode feature

# 全部模式
python3 inference.py --model ./VTP-Large-f16d64 --mode all

5. Smoke 验证

基础功能检查:

import torch, torch_npu
from vtp.models.vtp_hf import VTPModel

# 加载模型到 NPU
model = VTPModel.from_pretrained("./VTP-Large-f16d64", torch_dtype=torch.float16)
model = model.to("npu:0").eval()

# 自编码器验证
import torchvision.transforms as T
from PIL import Image
img = T.ToTensor()(Image.open("input.png")).unsqueeze(0).to("npu:0")

with torch.no_grad(), torch.autocast("npu", dtype=torch.float16):
    latents = model.get_reconstruction_latents(img)  # Encode
    recon = model.get_latents_decoded_images(latents) # Decode
print(f"Latents: {latents.shape}")  # [1, 64, 16, 16]
print(f"Recon: {recon.shape}")      # [1, 3, 256, 256]

验证结果:

  • 模型加载到 NPU:✅ 正常
  • 自编码器 (encode+decode):✅ 正常
  • CLIP 零样本分类:✅ 正常
  • SSL 特征提取:✅ 正常

6. 性能参考

测试条件:batch=1, 256×256 图像, fp16 autocast, 50次取平均

指标数值
模型加载 (CPU→NPU)5.03 s
Encode 延迟55.4 ms
Decode 延迟89.4 ms
Encode+Decode 总延迟144.8 ms
CLIP 图像+文本76.1 ms

7. 精度评测

测试方法:在 4 种类型测试图像(渐变/纯色/棋盘格/圆形渐变)上与 CPU fp32 参考输出对比。

图像类型重建余弦相似度重建相对误差状态
渐变图0.9999940.08%✅
纯色图0.9999840.82%✅
棋盘格0.9999710.18%✅
圆形渐变0.9999980.10%✅

CLIP 图像特征余弦相似度:0.999996,L2 差异:0.002802

结论:重建精度 < 0.9%,CLIP 特征余弦相似度 > 0.9999,精度满足 < 1% 要求。

评测运行方式

python3 evaluate.py --model ./VTP-Large-f16d64 --name VTP-Large-f16d64 --output-dir ./eval

8. 注意事项

  1. fp16 混合精度:推荐使用 torch.autocast("npu", dtype=torch.float16) 进行推理,可同时保证精度和性能。
  2. 模型加载路径:from_pretrained 需要指向包含 config.json 和 model.safetensors 的目录。
  3. 显存占用:VTP-Large (731.6M 参数) 推理约需 7GB HBM,910B4 (32GB) 足够。
  4. VTP 源码依赖:推理脚本默认需要 vtp 包。如果本地有 VTP 源码,可设置环境变量 VTP_SOURCE 指向源码目录。
  5. 中间 Latent:bottleneck 压缩后的 64 维 Latent 中存在接近零的维度,逐元素相对误差会偏高。使用余弦相似度评估(> 0.999)更为合理。
  6. 设备兼容:inference.py 支持 NPU/CUDA/CPU 自动检测,无需修改代码即可在不同设备上运行。