weixin_72661020/dinov2-base
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

facebook/dinov2-base on Ascend NPU

1. 简介

本文档记录 facebook/dinov2-base 在华为昇腾 NPU(Ascend 910B)上的适配与验证结果。DINOv2 是 Meta 发布的自监督视觉 Transformer 模型,dinov2-base 为基线尺寸版本(约 86M 参数,输出维度 768)。

本适配基于 transformers 官方实现,无需修改模型结构或自定义算子,可直接通过 AutoModel 在昇腾 NPU 上加载并运行推理,精度与 CPU 参考结果高度一致。

相关获取地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/facebook/dinov2-base
  • 权重下载地址(hf-mirror):https://hf-mirror.com/facebook/dinov2-base
  • 权重下载地址(AtomGit):https://atomgit.com/hf-mirrors/facebook/dinov2-base

参考文档:

  • https://github.com/facebookresearch/dinov2
  • https://huggingface.co/docs/transformers/model_doc/dinov2

2. 验证环境

组件版本
torch2.9.0+cpu
torch-npu2.9.0.post1+gitee7ba04
transformers4.57.6
Pillow12.2.0
numpy1.26.4
  • NPU:1 张 Ascend 910B4
  • CANN:8.5.1
  • 模型路径:./models/dinov2-base

3. 模型加载与推理

import torch
import torch_npu
from PIL import Image
from transformers import AutoModel, AutoImageProcessor

# 设备自动选择 NPU
device = torch.device("npu:0" if torch.npu.is_available() else "cpu")

# 加载处理器与模型
processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
model = AutoModel.from_pretrained("facebook/dinov2-base").to(device).eval()

# 准备输入图像
image = Image.new("RGB", (518, 518), color=(128, 128, 128))
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}

# 推理
with torch.no_grad():
    outputs = model(**inputs)

print(outputs.last_hidden_state.shape)  # torch.Size([1, 257, 768])

4. Smoke 验证

python3 dinov2_adapter.py \
  --model dinov2-base \
  --model-path ./models/dinov2-base \
  --output-dir ./results

验证结果:

  • 模型加载成功,设备为 npu:0
  • Smoke 测试输出形状:torch.Size([3, 257, 768])
  • Smoke 测试状态:PASSED

5. 性能参考

测试条件:连续预热 10 轮后,正式测试 50 轮,取平均值。

Batch Size延迟 (ms/iter)吞吐量 (imgs/s)总时间 (s)
122.05345.351.103
449.56580.702.478
884.97694.144.249

内存占用:

指标数值
allocated_mb333.40 MB
reserved_mb654.00 MB

6. 精度评测

精度验证通过与 CPU 参考输出对比余弦相似度完成。

指标数值
对比样本数5
评测指标Cosine Similarity
相似度1.000051
阈值0.999
状态PASSED

7. 注意事项

  1. 图像处理器警告:当前 transformers 4.57.6 加载时会提示 Using a slow image processor,此警告不影响推理结果与性能,可忽略或在加载时显式设置 use_fast=True。
  2. NPU 日志目录:若运行环境缺少 /home/atomgit/ascend/log 目录,torch_npu 会输出 [LOG_WARNING] can not create directory,此警告不影响推理,可通过创建该目录或设置环境变量消除。
  3. 精度对比说明:由于 NPU 与 CPU 浮点实现差异,余弦相似度在 0.999 以上即视为精度一致,本次验证结果 1.000051 表明完全对齐。
  4. batch 扩展:batch=8 时吞吐量达到最高(94.14 imgs/s),实际部署时可根据显存与延迟需求选择合适的 batch size。