本文档记录 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 |
权重下载地址:
| 组件 | 版本 |
|---|---|
torch | 2.9.0 |
torch_npu | 2.9.0.post1 |
transformers | 4.57.6 |
torchvision | 0.24.0 |
| CANN | 8.5.1 |
/opt/atomgit/.cache/modelscope/facebook/dinov2-basepip install torch torchvision torch_npu transformers Pillowpython3 inference.py --image /path/to/image.jpg --dtype fp32python3 inference.py --image-dir /path/to/images/ --dtype fp32export DINOV2_MODEL_PATH=/your/model/path
python3 inference.py --image img.jpg运行适配脚本完成完整的 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使用 10 张随机测试图片,对比 CPU (fp32) 与 NPU (fp32/fp16) 输出 embedding 的差异。
| 指标 | NPU fp32 | NPU fp16 |
|---|---|---|
| Cosine Similarity (mean) | 0.999974 | 0.999970 |
| Cosine Similarity (min) | 0.999970 | 0.999965 |
| Mean Absolute Diff | 0.0099 | 0.0108 |
| Max Absolute Diff | 0.0494 | 0.0549 |
| 结论 | PASS | PASS |
余弦相似度 > 0.99997,方向一致性远超 1% 误差要求。
测试条件:随机生成图片,单卡 Ascend 910B4,连续推理取稳定值。
| dtype | batch_size | 延迟 (ms) | 吞吐 (samples/s) |
|---|---|---|---|
| fp32 | 1 | 14.37 | 69.6 |
| fp32 | 4 | 15.79 | 253.3 |
| fp32 | 8 | 15.89 | 503.4 |
| fp16 | 1 | 18.11 | 55.2 |
| fp16 | 4 | 15.41 | 259.6 |
| fp16 | 8 | 15.82 | 505.5 |
fp16 在 bs=1 时延迟略高因数据搬运开销占主导,批量场景 fb 与 fp32 持平。
| 文件 | 说明 |
|---|---|
inference.py | 推理脚本,支持单张/批量图片推理 |
dinov2_npu_adapt.py | 完整适配脚本(CPU/NPU 精度对比 + 性能测试) |
eval_dinov2.py | 精度 & 性能基准评测脚本 |
eval_output/eval_report.json | 评测结果报告 |
eval_output/eval_output.log | 评测运行日志 |
Dinov2Model(backbone),输出 CLS embedding,无分类头