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

twins_pcpvt_small.in1k 昇腾 NPU 适配

1. 简介

Twins-PCPVT small 是基于 PVT(Pyramid Vision Transformer)的轻量级变体,采用金字塔结构的视觉Transformer,适用于图像分类任务。

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

原始模型地址:twins_pcpvt_small.in1k

2. 任务类型

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

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_pcpvt_small.in1k --device npu --num-runs 3

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

4.3 CPU 与 NPU 精度对比

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

5. 部署说明

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

6. 推理结果

6.1 NPU 推理结果

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

排名类别置信度
1thresher0.0310
2matchstick0.0229
3plunger0.0192
4groom0.0173
5steam_locomotive0.0134

6.2 性能参考

指标CPUNPU
推理耗时212.14ms245.85ms
加速比—0.86x

7. CPU/NPU 精度对比

7.1 对比方法

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

7.2 对比结果

指标数值
Max Absolute Error (Logits)0.020592
Mean Absolute Error (Logits)0.00245773
Max Probability Difference0.000327
Mean Probability Difference0.00000369
Cosine Similarity0.99999624
Top-1 MatchYes
Top-5 Overlap4/5
CPU 推理耗时212.14ms
NPU 推理耗时245.85ms
NPU 加速比0.86x

7.3 精度结论

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

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

8. 终端输出截图

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

9. 模型仓库

  • 原始模型:timm/twins_pcpvt_small.in1k

10. 标签说明

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