本文档记录 VTP-Base-f16d64 在华为昇腾 NPU (Ascend 910B4) 环境的适配与验证结果。
VTP (Visual Tokenizer Pre-training) 是 MiniMax 开源的视觉分词器,基于 DINOv3 ViT 架构,联合优化图像-文本对比学习、自监督学习和图像重建三种训练目标。
VTP-Base-f16d64 使用 ViT-Base 编码器,f16 表示 16× 空间压缩,d64 表示 64 维 Latent 空间。
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
torch | 2.9.0+cpu |
torch_npu | 2.9.0.post1+gitee7ba04 |
transformers | 4.57.6 |
torchvision | 0.24.0 |
Pillow | 12.2.0 |
CANN | 8.5.1 |
Ascend 910B4,1 逻辑卡| 组件 | 配置 |
|---|---|
| 总参数量 | 295.6M |
| Vision Encoder | ViT-Base (12层, 768维, 12头) |
| Pixel Decoder | 12层, 768维, 12头 |
| Text Encoder | 12层, 768维, 12头 |
| Feature Bottleneck | 768 → 64 |
| Latent 维度 | 64 (f16d64) |
| 输入分辨率 | 256×256 |
| Patch Size | 16 |
pip install torch torch_npu torchvision transformers omegaconf pillow# ModelScope (推荐)
pip install modelscope
python3 -c "from modelscope import snapshot_download; snapshot_download('MiniMax/VTP-Base-f16d64')"
# HuggingFace
huggingface-cli download MiniMaxAI/VTP-Base-f16d64 --local-dir ./VTP-Base-f16d64# 自编码器重建
python3 inference.py --model ./VTP-Base-f16d64 --mode ae
# CLIP 零样本分类
python3 inference.py --model ./VTP-Base-f16d64 --mode clip --image cat.jpg
# 特征提取
python3 inference.py --model ./VTP-Base-f16d64 --mode feature
# 全部模式
python3 inference.py --model ./VTP-Base-f16d64 --mode all基础功能检查:
import torch, torch_npu
from vtp.models.vtp_hf import VTPModel
# 加载模型到 NPU
model = VTPModel.from_pretrained("./VTP-Base-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]验证结果:
测试条件:batch=1, 256×256 图像, fp16 autocast, 50次取平均
| 指标 | 数值 |
|---|---|
| 模型加载 (CPU→NPU) | 4.22 s |
| Encode 延迟 | 60.0 ms |
| Decode 延迟 | 63.9 ms |
| Encode+Decode 总延迟 | 123.9 ms |
| CLIP 图像+文本 | 48.2 ms |
测试方法:在 4 种类型测试图像(渐变/纯色/棋盘格/圆形渐变)上与 CPU fp32 参考输出对比。
| 图像类型 | 重建余弦相似度 | 重建相对误差 | 状态 |
|---|---|---|---|
| 渐变图 | 0.999994 | 0.15% | ✅ |
| 纯色图 | 0.999985 | 0.19% | ✅ |
| 棋盘格 | 0.999974 | 0.05% | ✅ |
| 圆形渐变 | 0.999995 | 0.14% | ✅ |
CLIP 图像特征余弦相似度:0.999978,L2 差异:0.006674
结论:重建精度 < 0.2%,CLIP 特征余弦相似度 > 0.9999,精度满足 < 1% 要求。
python3 evaluate.py --model ./VTP-Base-f16d64 --name VTP-Base-f16d64 --output-dir ./evaltorch.autocast("npu", dtype=torch.float16) 进行推理,可同时保证精度和性能。from_pretrained 需要指向包含 config.json 和 model.safetensors 的目录。vtp 包(含 vtp.models.vtp_hf 模块)。如果本地有 VTP 源码,可设置环境变量 VTP_SOURCE 指向源码目录。inference.py 支持 NPU/CUDA/CPU 自动检测,无需修改代码即可在不同设备上运行。