本仓库提供 facebook/dinov3-vit7b16-pretrain-lvd1689m 在华为昇腾 NPU (Ascend 910) 上的推理脚本与评测材料。
DINOv3 是 Meta AI 发布的视觉基础模型,基于 Vision Transformer 架构,无需微调即可在多种视觉任务上取得优异性能。本适配版本为 ViT-7B/16,在 LVD-1689M 数据集上进行预训练。
| 属性 | 值 |
|---|---|
| 模型名称 | facebook/dinov3-vit7b16-pretrain-lvd1689m |
| 架构 | DINOv3ViTModel |
| 参数量 | 约 7B |
| Hidden Size | 4096 |
| 注意力头数 | 32 |
| 层数 | 40 |
| Patch Size | 16 |
| 输入尺寸 | 224x224 |
| 组件 | 版本/型号 |
|---|---|
| NPU | Ascend 910B4 |
| CANN | 8.5.1 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 已安装 |
| transformers | 4.57.6 |
确保已安装以下依赖:
pip install torch transformers pillow numpy
# torch_npu 和 CANN 驱动请参考华为昇腾官方文档安装使用 AtomGit CLI 从 HuggingFace 镜像下载:
pip install atomgit
python3 -m atomgit download hf_mirrors/facebook/dinov3-vit7b16-pretrain-lvd1689m -d ./weight/dinov3-vit7b16-pretrain-lvd1689mpython inference.py --image /path/to/image.jpg参数说明:
| 参数 | 默认值 | 说明 |
|---|---|---|
--model_path | ./weight/dinov3-vit7b16-pretrain-lvd1689m | 模型权重路径 |
--image | None | 输入图片路径,不传则使用 dummy 图片 |
--dtype | float16 | 推理数据类型 (float16/float32/bfloat16) |
--device | npu | 运行设备 (npu/cpu) |
--benchmark | False | 是否运行性能 benchmark |
--batch_size | 1 | batch 大小 |
--runs | 20 | benchmark 运行次数 |
import torch
import torch_npu
from transformers import AutoImageProcessor, AutoModel
from PIL import Image
model_path = "./weight/dinov3-vit7b16-pretrain-lvd1689m"
processor = AutoImageProcessor.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, torch_dtype=torch.float16)
model = model.to("npu")
image = Image.open("image.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to("npu") for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
features = outputs.pooler_output # [1, 4096]transformers 4.57.6 已原生支持 dinov3_vit 模型类型,无需任何代码修改即可在昇腾 NPU 上运行。适配仅需要将模型通过 model.to("npu") 迁移到 NPU 设备。
运行脚本:python evaluation/accuracy_eval.py
| 指标 | pooler_output | last_hidden_state |
|---|---|---|
| Max Absolute Error | 0.001332 | 0.010870 |
| Mean Absolute Error | 0.000185 | 0.000179 |
| Relative Error | 0.1950% | 0.1866% |
| 余弦相似度 | 0.99999821 | 1.00000000 |
结论:精度验证通过,NPU fp16 与 CPU fp32 结果高度一致。
运行脚本:python evaluation/perf_eval.py
| 设备 | 数据类型 | Batch | 平均延迟 | 吞吐量 |
|---|---|---|---|---|
| NPU | float16 | 1 | 59.99 ms | 16.67 images/sec |
| NPU | float16 | 2 | 60.27 ms | 33.19 images/sec |
| NPU | float16 | 4 | 91.38 ms | 43.77 images/sec |
| NPU | float32 | 1 | 79.39 ms | 12.60 images/sec |
注:CPU fp32 基准因推理速度过慢未列入主要对比,具体数据见
evaluation/perf_log.txt。
.
├── inference.py # NPU 推理脚本
├── readme.md # 本文件
├── evaluation/
│ ├── accuracy_eval.py # 精度评测源代码
│ ├── accuracy_log.txt # 精度评测运行日志
│ ├── perf_eval.py # 性能评测源代码
│ └── perf_log.txt # 性能评测运行日志
└── weight/
└── dinov3-vit7b16-pretrain-lvd1689m/ # 模型权重model.to("npu") 加载,无需安装 accelerate。float16 以平衡精度与性能。模型权重遵循 DINOv3 License。
@misc{simeoni2025dinov3,
title={{DINOv3}},
author={Sim{\'e}oni, Oriane and Vo, Huy V. and Seitzer, Maximilian and others},
year={2025},
eprint={2508.10104},
archivePrefix={arXiv},
primaryClass={cs.CV},
}