Delicate02/dino-vits8-ascend-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

DINO ViT-S/8 Ascend NPU 适配文档

模型信息

项目内容
模型名称facebook/dino-vits8
模型架构Vision Transformer (ViT-S/8)
参数量~22M
权重文件model.safetensors (87 MB)
预训练方式DINO 自监督学习 (ImageNet-1k)
输入尺寸224 x 224
Patch大小8 x 8
隐藏维度384
层数12
注意力头数6

原始论文:Emerging Properties in Self-Supervised Vision Transformers

NPU 适配概述

本仓库基于华为昇腾 NPU(Ascend 910B4)完成 DINO ViT-S/8 模型的推理适配与验证。通过 transformers + torch_npu 技术栈,实现模型在昇腾硬件上的零代码迁移推理,精度误差 < 1%,单图推理延迟约 11 ms。

验证结论

  • 功能:在昇腾 NPU 上跑通模型推理
  • 精度:与 CPU 基线对比,Cosine Similarity = 1.000022,RMSE = 0.0106,MaxAE = 0.095
  • 性能:Batch=1 吞吐 93.5 imgs/s,Batch=16 吞吐 36.9 imgs/s

环境要求

硬件

  • 华为昇腾 NPU(Ascend 910 系列,验证环境为 910B4)

软件

组件版本
CANN8.5.1
Python3.11
PyTorch2.9.0+cpu
torch_npu2.9.0.post1
transformers4.57.6
Pillow>= 9.0
numpy>= 1.24

安装依赖

pip install transformers pillow numpy
# torch_npu 和 CANN 请按华为官方文档安装

快速开始

1. 克隆模型仓库

git clone https://gitcode.com/hf_mirrors/facebook/dino-vits8.git
cd dino-vits8

2. 单图推理

python inference.py --model_path . --device npu --image your_image.jpg

3. 使用合成数据进行基准测试

python inference.py --model_path . --device npu

输出示例:

[INFO] Using device: npu:0
[INFO] torch version: 2.9.0+cpu
[INFO] torch_npu version: 2.9.0.post1+gitee7ba04
========== Inference Results ==========
Last hidden state shape : torch.Size([1, 785, 384])
CLS embedding shape     : torch.Size([1, 384])
Latency (ms): mean=11.295, std=0.252, min=11.099, max=12.028
Throughput: 88.53 imgs/sec
=======================================

精度验证

运行精度对比脚本,自动对比 NPU 与 CPU 输出:

python benchmark_accuracy.py --model_path . --seed 42

验证结果

指标last_hidden_statepooler_output
MAE8.35e-031.99e-03
RMSE1.06e-023.16e-03
MaxAE9.53e-021.42e-02
CosineSim1.0000220.999991
判定PASSPASS

判定标准:CosineSim > 0.999 且 RMSE < 0.05 且 MaxAE < 0.15

注:CPU 推理耗时约 2.3s(ARM 架构),NPU 推理耗时约 13ms,NPU 加速比约 182x。

性能测试

运行性能基准脚本:

python benchmark_perf.py --model_path . --device npu --batch_sizes 1 4 8 16

性能结果(Ascend 910B4)

Batch Size平均延迟 (ms)P95 延迟 (ms)吞吐 (imgs/s)
110.7010.9993.49
411.2011.3989.27
815.2015.2765.78
1627.0627.2636.95

测试条件:warmup=10,repeats=50,输入尺寸 224x224

文件说明

文件说明
inference.py单图/合成数据推理脚本,支持 cpu/cuda/npu
benchmark_accuracy.py精度验证脚本,对比 NPU vs CPU 输出误差
benchmark_perf.py性能基准脚本,测试不同 batch size 的吞吐与延迟
accuracy_log.txt精度验证运行日志
perf_log.txt / perf_result.json性能测试日志与结构化结果
inference_log.txt推理演示日志
config.json模型配置文件
preprocessor_config.json图像预处理器配置
model.safetensors模型权重(87 MB)

技术细节

昇腾亲和优化

  • 使用 torch_npu 自动将 PyTorch CUDA API 映射为 NPU API(transfer_to_npu)
  • CANN 图融合引擎自动执行算子融合(ARefreshCubeC0FusionPass、FixPipeAbilityProcessPass 等)
  • 无需修改模型源码,通过 model.to("npu") 完成设备迁移

精度说明

NPU 与 CPU 的数值差异主要来源于:

  1. 浮点运算顺序不同导致的舍入误差
  2. CANN 融合算子与原生算子的实现差异
  3. 硬件加速指令集的数值特性

对于自监督视觉表征模型(DINO),Cosine Similarity 是最核心的精度指标,验证结果 1.000022 表明 NPU 输出的特征向量方向与 CPU 完全一致,满足下游任务要求。

许可

本模型遵循 Apache-2.0 许可证。原始模型由 Meta AI (Facebook Research) 发布。


适配时间:2026-05-12 适配平台:华为昇腾 Ascend 910B4 适配者:Model Agent