m
mxy-yy/VTP-Small-f16d64-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

VTP-Small-f16d64 Ascend NPU 部署指南

概述

本项目提供 MiniMax VTP-Small-f16d64 模型在华为昇腾 NPU 上的部署方案,用于视觉特征提取和图像重建。

特性

  • 支持 Ascend NPU 推理加速
  • 视觉特征提取
  • CPU 与 NPU 精度对比测试(误差 < 1%)
  • 输出 64 维视觉特征向量

环境信息

项目版本/内容
设备Ascend 910B

文件结构

VTP-Small-f16d64-ascend/
├── README.md       # 本文档
├── inference.py    # 推理脚本
└── test.log        # 运行日志

部署步骤

1. 设置环境变量

source /usr/local/Ascend/ascend-toolkit/set_env.sh

2. 准备模型文件

模型文件位于 /opt/atomgit/mxy/VTP-Small-f16d64/ 目录下。

3. 安装依赖

pip install torch_npu safetensors pillow torchvision

4. 执行推理

cd VTP-Small-f16d64-ascend/
python inference.py

使用方式

精度测试

cd VTP-Small-f16d64-ascend/
python inference.py --precision_test

随机输入推理

cd VTP-Small-f16d64-ascend/
python inference.py

带图像推理

cd VTP-Small-f16d64-ascend/
python inference.py --image /path/to/image.jpg

参数说明

参数说明默认值
--model_path模型路径/opt/atomgit/mxy/VTP-Small-f16d64
--image图像路径无 (使用随机)
--device运行设备npu:0
--precision_test运行精度测试False

测试验证

精度测试结果

指标实测值阈值状态
Max Error (sum)6.10e-05< 1e-3✅ PASS
Max Error (mean)5.96e-08< 1e-5✅ PASS
Max Error (std)2.38e-07< 1e-5✅ PASS

性能数据

操作耗时
CPU 参考计算 (20 tensors)0.0190s
NPU 推理 (20 tensors)0.2261s

测试日志

2026-05-19 08:47:41,266 - INFO - ============================================================
2026-05-19 08:47:41,267 - INFO - VTP Vision Encoder Ascend NPU Inference
2026-05-19 08:47:41,267 - INFO - ============================================================
2026-05-19 08:47:41,267 - INFO - Loading VTP model from /opt/atomgit/mxy/VTP-Small-f16d64...
2026-05-19 08:47:43,297 - INFO - Model loaded and moved to NPU!
2026-05-19 08:47:43,305 - INFO - ----------------------------------------
2026-05-19 08:47:43,305 - INFO - Starting precision test...
2026-05-19 08:47:43,306 - INFO - Running CPU reference computation...
2026-05-19 08:47:43,324 - INFO - CPU computation done in 0.0190s (tested 20 tensors)
2026-05-19 08:47:43,324 - INFO - Step 2: NPU inference
2026-05-19 08:47:43,550 - INFO - NPU inference done in 0.2261s
2026-05-19 08:47:43,551 - INFO - Step 3: Compare results
2026-05-19 08:47:43,551 - INFO - ============================================================
2026-05-19 08:47:43,551 - INFO - Precision Comparison: CPU vs NPU
2026-05-19 08:47:43,551 - INFO - Max errors: sum=6.10e-05, mean=5.96e-08, std=2.38e-07
2026-05-19 08:47:43,553 - INFO - PASS: NPU precision within 1% of CPU
2026-05-19 08:47:43,553 - INFO - PRECISION TEST PASSED
2026-05-19 08:47:43,553 - INFO - ============================================================

模型配置

属性值
模型名称VTP-Small-f16d64
架构Vision Tokenizer with Projection
视觉嵌入维度384
特征瓶颈维度64 (f16d64)
Patch 大小16
图像尺寸256 x 256
视觉编码器深度12
视觉注意力头数6
MLP 类型SwigLU (Gate Linear Unit)

Python API 使用示例

from PIL import Image
import torch
from torchvision import transforms

MODEL_PATH = "/opt/atomgit/mxy/VTP-Small-f16d64"

transform = transforms.Compose([
    transforms.Resize((256, 256)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

img = Image.open("image.jpg").convert('RGB')
img_tensor = transform(img).unsqueeze(0).npu()

# 加载模型
model = load_vtp_model(MODEL_PATH)
model = model.to("npu:0")
model.eval()

with torch.no_grad():
    features = model(img_tensor)

print(f"Feature shape: {features.shape}")  # (1, 64)

注意事项

  1. VTP-Small 模型输出 64 维视觉特征向量
  2. 精度测试基于 CPU 与 NPU 的比较
  3. 支持随机输入或自定义图像推理
  4. NPU 推理精度与 CPU 误差极小