m0_74196153/vit_base_patch14_dinov2.lvd142m
模型介绍文件和版本Pull Requests讨论分析

vit_base_patch14_dinov2.lvd142m on Ascend NPU

1. 简介

本文档记录 vit_base_patch14_dinov2.lvd142m(DINOv2 ViT-B/14)在昇腾 910B4 NPU 上的适配与验证结果。

属性值
模型架构ViT-B/14 (12层, hidden=768, 12头)
参数量86.6M
输入尺寸518×518 (center crop → 224×224)
输出维度CLS embedding [B, 768]
原始框架PyTorch + transformers
适配设备Ascend 910B4

权重下载地址:

  • ModelScope: https://modelscope.cn/models/facebook/dinov2-base
  • HuggingFace: https://huggingface.co/facebook/dinov2-base

2. 验证环境

组件版本
torch2.9.0
torch_npu2.9.0.post1
transformers4.57.6
torchvision0.24.0
CANN8.5.1
  • NPU: Ascend 910B4 × 1 卡
  • 模型路径: /opt/atomgit/.cache/modelscope/facebook/dinov2-base
  • Python: 3.11.14

3. 快速使用

安装依赖

pip install torch torchvision torch_npu transformers Pillow

单张图片推理

python3 inference.py --image /path/to/image.jpg --dtype fp32

批量推理

python3 inference.py --image-dir /path/to/images/ --dtype fp32

指定模型路径

export DINOV2_MODEL_PATH=/your/model/path
python3 inference.py --image img.jpg

4. 完整适配验证

运行适配脚本完成完整的 CPU vs NPU 精度对比与性能基准测试:

# fp32 精度验证
python3 dinov2_npu_adapt.py --dtype fp32 --num-images 10

# fp16 半精度验证
python3 dinov2_npu_adapt.py --dtype fp16 --num-images 10

5. 精度评测

使用 10 张随机测试图片,对比 CPU (fp32) 与 NPU (fp32/fp16) 输出 embedding 的差异。

指标NPU fp32NPU fp16
Cosine Similarity (mean)0.9999740.999970
Cosine Similarity (min)0.9999700.999965
Mean Absolute Diff0.00990.0108
Max Absolute Diff0.04940.0549
结论PASSPASS

余弦相似度 > 0.99997,方向一致性远超 1% 误差要求。

6. 性能参考

测试条件:随机生成图片,单卡 Ascend 910B4,连续推理取稳定值。

dtypebatch_size延迟 (ms)吞吐 (samples/s)
fp32114.3769.6
fp32415.79253.3
fp32815.89503.4
fp16118.1155.2
fp16415.41259.6
fp16815.82505.5

fp16 在 bs=1 时延迟略高因数据搬运开销占主导,批量场景 fb 与 fp32 持平。

7. 文件说明

文件说明
inference.py推理脚本,支持单张/批量图片推理
dinov2_npu_adapt.py完整适配脚本(CPU/NPU 精度对比 + 性能测试)
eval_dinov2.py精度 & 性能基准评测脚本
eval_output/eval_report.json评测结果报告
eval_output/eval_output.log评测运行日志

8. 注意事项

  • 该模型是 Dinov2Model(backbone),输出 CLS embedding,无分类头
  • 无法访问 HuggingFace 时可通过 ModelScope 下载
  • fp16 模式下精度仍在可接受范围(cosine > 0.99996),推荐对精度敏感的场景使用 fp32
  • 批量推理时建议 batch_size ≤ 8 以获得最佳延迟-吞吐权衡
下载使用量0