X
Xiaoxy510/dinov3-vits16-pretrain-lvd1689m-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

dinov3-vits16-pretrain-lvd1689m on Ascend NPU

1. 简介

本文档记录 dinov3-vits16-pretrain-lvd1689m 在昇腾 NPU 环境的适配与验证结果。

模型信息:

  • 模型类型:Vision Transformer (ViT-S/16)
  • 参数量:21M
  • 输入尺寸:[1, 3, 224, 224]
  • 输出:last_hidden_state (196 patch tokens + 4 register tokens + 1 CLS token) + pooler_output

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/facebook/dinov3-vits16-pretrain-lvd1689m
  • 权重下载地址(ModelScope):https://modelscope.cn/models/facebook/dinov3-vits16-pretrain-lvd1689m
  • 原项目地址:https://github.com/facebookresearch/dinov3

2. 验证环境

组件版本
torch2.10.0
torch_npu2.10.0
transformers5.8.1
  • NPU:1 逻辑卡
  • 模型路径:/data/xxy/dinov3-vits16-pretrain-lvd1689m
  • Conda 环境:dinov3-vits16

3. 环境配置

3.1 创建 conda 环境

conda create -n dinov3-vits16 python=3.11 -y
conda activate dinov3-vits16

3.2 安装依赖

pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install torch_npu transformers pillow -i https://repo.huaweicloud.com/repository/pypi/simple

3.3 验证环境

python -c "import torch; print('NPU available:', torch.npu.is_available())"

4. 适配方法

DINOv3 模型通过 HuggingFace AutoModel 加载,主要适配工作:

  1. 设备迁移:使用 model.to("npu:0") 将模型权重迁移到 NPU
  2. 输入处理:将输入张量移至 NPU 设备 pixel_values.to("npu:0")
  3. 同步调用:NPU 推理后调用 torch.npu.synchronize() 确保计算完成

5. 使用方式

5.1 基本推理

# 使用随机张量推理
python inference.py

# 使用图片推理
python inference.py --image /path/to/image.jpg

# 指定设备
python inference.py --device cpu
python inference.py --device npu:0

5.2 精度与性能评测

python eval.py

评测结果将输出到终端并保存到 log.txt。

6. 评测结果

6.1 精度评测

使用随机输入对比 CPU 与 NPU 输出,计算最大绝对误差相对于值范围的百分比。

输出最大绝对误差相对误差 (%)
last_hidden_state4.99e-030.0344
pooler_output4.99e-030.1418
全局4.99e-030.1418 ✅

精度阈值要求:相对误差 < 1%

6.2 性能评测

指标CPUNPU
平均推理耗时1785.60 ms18.46 ms
加速比1x96.75x

首次 NPU 推理耗时较长(包含图编译开销),预热后平均推理耗时 18.46 ms。

7. 文件结构

dinov3-vits16-pretrain-lvd1689m-ascend/
├── inference.py    # 推理脚本
├── eval.py         # 精度与性能评测脚本
├── log.txt         # 评测日志
└── README.md       # 本文档

8. 注意事项

  1. 首次 NPU 推理包含图编译开销,性能测试需先预热
  2. 模型输入尺寸为 [1, 3, 224, 224](与 DINOv3 原版一致)
  3. Conda 环境名称与模型名称一致:dinov3-vits16
  4. 精度计算采用相对于值范围的百分比,避免小值导致的相对误差放大