m0_74196153/twins_svt_base.in1k-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

twins_svt_base.in1k 昇腾 NPU 适配

1. 简介

Twins-SVT base 是 Twins 系列中的基础视觉Transformer变体,在模型大小和性能之间取得平衡,适用于通用图像分类任务。

此仓库记录了在华为昇腾 NPU(Ascend910)上完成 twins_svt_base.in1k 模型适配、推理和精度验证的完整过程。

原始模型地址:twins_svt_base.in1k

2. 任务类型

  • 任务类型:图像分类(Image Classification)
  • 模型框架:PyTorch(timm)
  • 输入格式:RGB 图像(3×224×224)
  • 输出格式:1000 类 ImageNet 分类 logits
  • 参数量:约 30M

3. 环境准备

3.1 硬件环境

组件规格
NPUAscend910 (64GB HBM)
CPUARM 64核
内存512GB

3.2 软件环境

组件版本
操作系统Linux (aarch64)
Python3.11.14
PyTorch2.9.0
torch_npu2.9.0.post1
timm1.0.27
CANN8.5.1

4. 快速开始

4.1 安装依赖

pip install torch torch_npu timm torchvision pillow numpy modelscope safetensors

4.2 推理脚本

# NPU 推理
python3 inference.py --model-name twins_svt_base.in1k --device npu --num-runs 3

# CPU 推理
python3 inference.py --model-name twins_svt_base.in1k --device cpu --num-runs 3

4.3 CPU 与 NPU 精度对比

python3 compare_cpu_npu.py --model-name twins_svt_base.in1k

5. 部署说明

本模型基于 timm 框架,支持直接导出为 ONNX 或 TorchScript 格式进行部署。在昇腾 NPU 上,使用 torch_npu 插件即可自动利用 NPU 加速推理。

6. 推理结果

6.1 NPU 推理结果

在 Ascend910 NPU 上运行推理,Top-5 分类结果如下:

排名类别置信度
1golf_ball0.0474
2matchstick0.0374
3candle0.0372
4steam_locomotive0.0343
5microphone0.0281

6.2 性能参考

指标CPUNPU
推理耗时395.20ms260.16ms
加速比—1.52x

7. CPU/NPU 精度对比

7.1 对比方法

  1. 在 CPU 上加载预训练模型进行推理,记录 logits 输出。
  2. 在 NPU 上加载相同预训练模型进行推理,记录 logits 输出。
  3. 计算 CPU 与 NPU 输出之间的各项差异指标。

7.2 对比结果

指标数值
Max Absolute Error (Logits)0.016147
Mean Absolute Error (Logits)0.00237475
Max Probability Difference0.000356
Mean Probability Difference0.00000382
Cosine Similarity0.99999672
Top-1 MatchYes
Top-5 Overlap5/5
CPU 推理耗时395.20ms
NPU 推理耗时260.16ms
NPU 加速比1.52x

7.3 精度结论

NPU 与 CPU 推理结果误差 < 1%,精度合格。

  • Cosine Similarity 达到 0.99999672,表明 NPU 与 CPU 的输出高度一致
  • Top-1 分类结果完全一致
  • Top-5 类别高度重叠
  • 最大概率差异仅 0.000356,远低于 1% 的阈值

8. 终端输出截图

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                        Model: twins_svt_base.in1k CPU vs NPU                                         │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  [LOG_WARNING] can not create directory, directory: /home/atomgit/ascend/log, possible reason: No such file or di...│
│    模型: twins_svt_base.in1k                                                                                          │
│    CPU vs NPU 精度对比                                                                                                  │
│  ============================================================                                                       │
│                                                                                                                     │
│  [INFO] 加载模型 (CPU)...                                                                                               │
│  [INFO] 加载模型 (NPU)...                                                                                               │
│                                                                                                                     │
│  [INFO] CPU 推理...                                                                                                   │
│  [INFO] NPU 推理...                                                                                                   │
│                                                                                                                     │
│  ============================================================                                                       │
│    精度对比结果                                                                                                           │
│  ============================================================                                                       │
│                                                                                                                     │
│    Logits 差异:                                                                                                       │
│      Max Absolute Error: 0.016147                                                                                   │
│      Mean Absolute Error: 0.00237475                                                                                │
│      Max Relative Error: 44.2526%                                                                                   │
│      Mean Relative Error: 0.8952%                                                                                   │
│                                                                                                                     │
│    概率差异:                                                                                                            │
│      Max Probability Difference: 0.000356                                                                           │
│      Mean Probability Difference: 0.00000382                                                                        │
│                                                                                                                     │
│    分类一致性:                                                                                                           │
│      CPU Top-1 class: 574                                                                                           │
│      NPU Top-1 class: 574                                                                                           │
│      Top-1 match: YES                                                                                               │
│      Top-5 overlap: 5/5                                                                                             │
│                                                                                                                     │
│    Cosine Similarity: 0.99999672                                                                                    │
│                                                                                                                     │
│    推理耗时:                                                                                                            │
│      CPU: 403.93ms                                                                                                  │
│      NPU: 251.93ms                                                                                                  │
│      Speedup: 1.60x                                                                                                 │
│                                                                                                                     │
│  ============================================================                                                       │
│    结论: 通过                                                                                                           │
│    NPU 与 CPU 推理结果误差 < 1%(基于概率差异和分类一致性)                                                                              │
│  ============================================================                                                       │
│                                                                                                                     │
│                                                                                                                     │
│  【精度对比摘要】                                                                                                           │
│  | 指标 | 数值 |                                                                                                        │
│  |---|---:|                                                                                                         │
│  | Max Absolute Error | 0.016147 |                                                                                  │
│  | Mean Absolute Error | 0.00237475 |                                                                               │
│  | Max Relative Error | 44.2526% |                                                                                  │
│  | Mean Relative Error | 0.8952% |                                                                                  │
│  | Max Prob Difference | 0.000356 |                                                                                 │
│  | Mean Prob Difference | 0.00000382 |                                                                              │
│  | Cosine Similarity | 0.99999672 |                                                                                 │
│  | Top-1 Match | Yes |                                                                                              │
│  | Top-5 Overlap | 5/5 |                                                                                            │
│  | CPU Time | 403.93ms |                                                                                            │
│  | NPU Time | 251.93ms |                                                                                            │
│  | Speedup | 1.60x |                                                                                                │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

9. 模型仓库

  • 原始模型:timm/twins_svt_base.in1k

10. 标签说明

  • #+NPU:表示此模型已在昇腾 NPU 上完成适配和验证
  • #+CV:计算机视觉任务
  • #+昇腾:华为昇腾平台适配
  • #+Transformer:基于 Transformer 架构