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

VTP-Small-f16d64 Ascend 部署指南

概述

本项目提供 MiniMax VTP-Small-f16d64 模型在华为昇腾 NPU 上的部署方案,基于 PyTorch + torch_npu 实现视觉Tokenizer推理。

模型信息

属性值
模型名称VTP-Small-f16d64
架构Vision Tokenizer with Projection
视觉嵌入维度384
特征瓶颈维度64 (f16d64)
Patch 大小16
图像尺寸256 x 256
视觉编码器深度12
视觉注意力头数6
MLP 类型SwigLU (Gate Linear Unit)
预训练方法对比学习 + 自监督 + 重建

环境要求

  • NPU: Atlas 910B3
  • CANN: 8.5.1+
  • Python: 3.11
  • PyTorch: 2.9.0+ with torch_npu
  • safetensors: 0.7.0+

快速部署

1. 创建容器

docker run -itd \
  --name=test-vtp_small \
  --privileged \
  --ipc=host \
  --net=host \
  --device=/dev/davinci_manager \
  --device=/dev/devmm_svm \
  --device=/dev/hisi_hdc \
  --device=/dev/davinci0 \
  --device=/dev/davinci1 \
  --device=/dev/davinci2 \
  --device=/dev/davinci3 \
  --device=/dev/davinci4 \
  --device=/dev/davinci5 \
  --device=/dev/davinci6 \
  --device=/dev/davinci7 \
  -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
  -v /usr/local/sbin:/usr/local/sbin:ro \
  -v /data/ysws/agentsp/VTP-Small-f16d64:/data/vtp_model \
  -v /home:/home \
  -w /data/vtp_model \
  quay.io/ascend/vllm-ascend:v0.18.0rc1 \
  /bin/bash

2. 安装依赖

docker exec test-vtp_small bash -c "pip3 install safetensors -i https://repo.huaweicloud.com/repository/pypi/simple/ --quiet"

3. 运行推理

docker exec test-vtp_small bash -c "source /usr/local/Ascend/ascend-toolkit/set_env.sh && cd /data/ysws/agentsp/VTP-Small-f16d64-ascend && python3 inference.py"

docker exec test-vtp_small bash -c "source /usr/local/Ascend/ascend-toolkit/set_env.sh && cd /data/ysws/agentsp/VTP-Small-f16d64-ascend && python3 inference.py --image /path/to/image.jpg"

推理参数说明

参数默认值说明
--model_path/data/ysws/agentsp/VTP-Small-f16d64模型目录
--imageNone图片路径,不提供则使用随机张量
--precision_testFalse运行精度测试

精度测试

docker exec test-modelagent bash -c "source /usr/local/Ascend/ascend-toolkit/set_env.sh && \
cd /data/ysws/agentsp/VTP-Small-f16d64-ascend && \
python3 inference.py --model_path /data/ysws/agentsp/VTP-Small-f16d64 --precision_test"

精度测试结果

指标实测值阈值状态
最大误差 (sum)6.10e-05< 1e-3PASS
最大误差 (mean)5.96e-08< 1e-5PASS
最大误差 (std)2.38e-07< 1e-5PASS

性能数据

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

性能指标

指标值
单图推理时间~5.9s
吞吐量0.17 images/sec
输出特征维度64
图像尺寸256 x 256

模型架构

VTP 视觉编码器包含以下组件:

  1. Patch Embedding:将图像分割成 16x16 块,投影到 384 维
  2. Transformer Blocks:12 层 Transformer 编码器
  3. RMSNorm:使用 RMSNorm 归一化
  4. SwigLU MLP:门控线性单元 (w1, w2, w3)
  5. Feature Bottleneck:384 -> 64 维特征瓶颈层

关键代码

模型加载

from safetensors.torch import load_file
state_dict = load_file("model.safetensors")

VTP 视觉编码器前向传播

features = model(image_tensor)

图像特征提取示例

from PIL import Image
import torch
from torchvision import transforms

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()

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

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

文件结构

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

已知限制

  1. 首次推理包含编译时间
  2. 需要自定义模型架构定义代码
  3. 仅实现视觉编码器部分
  4. 精度测试:NPU 与 CPU 误差极小,最大 sum error 为 6.10e-05,远低于阈值 1e-3

参考链接

  • VTP 论文
  • MiniMax VTP GitHub
  • 华为昇腾社区