本文档记录 dinov2-base 在昇腾 NPU 环境的适配与验证结果。
模型信息:
[1, 3, 518, 518]last_hidden_state + pooler_output相关地址:
| 组件 | 版本 |
|---|---|
torch | 2.10.0 |
torch_npu | 2.10.0 |
transformers | 5.8.1 |
1 逻辑卡/data/xxy/dinov2-basedinov2-baseconda create -n dinov2-base python=3.11 -y
conda activate dinov2-basepip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cpu
pip install torch_npu transformers pillow -i https://repo.huaweicloud.com/repository/pypi/simplepython -c "import torch; print('NPU available:', torch.npu.is_available())"DINOv2 模型通过 HuggingFace AutoModel 加载,主要适配工作:
model.to("npu:0") 将模型权重迁移到 NPUpixel_values.to("npu:0")torch.npu.synchronize() 确保计算完成# 使用随机张量推理
python inference.py
# 使用图片推理
python inference.py --image /path/to/image.jpg
# 指定设备
python inference.py --device cpu
python inference.py --device npu:0python eval.py评测结果将输出到终端并保存到 log.txt。
使用随机输入对比 CPU 与 NPU 输出,计算最大绝对误差相对于值范围的百分比。
| 输出 | 最大绝对误差 | 相对误差 (%) |
|---|---|---|
last_hidden_state | 9.98e-02 | 0.2967 |
pooler_output | 4.18e-02 | 0.3574 |
| 全局 | 9.98e-02 | 0.3574 ✅ |
精度阈值要求:相对误差 < 1%
| 指标 | CPU | NPU |
|---|---|---|
| 平均推理耗时 | 608.07 ms | 13.25 ms |
| 加速比 | 1x | 45.88x |
首次 NPU 推理耗时较长(包含图编译开销),预热后平均推理耗时 13.25 ms。
dinov2-base-ascend/
├── inference.py # 推理脚本
├── eval.py # 精度与性能评测脚本
├── log.txt # 评测日志
└── README.md # 本文档[1, 3, 518, 518](与 DINOv2 原版一致)dinov2-base