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

twins_pcpvt_base.in1k 昇腾 NPU 适配

1. 简介

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

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

原始模型地址:twins_pcpvt_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_pcpvt_base.in1k --device npu --num-runs 3

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

4.3 CPU 与 NPU 精度对比

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

5. 部署说明

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

6. 推理结果

6.1 NPU 推理结果

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

排名类别置信度
1plunger0.0579
2steam_locomotive0.0309
3hourglass0.0298
4beaker0.0226
5broom0.0164

6.2 性能参考

指标CPUNPU
推理耗时337.15ms246.51ms
加速比—1.37x

7. CPU/NPU 精度对比

7.1 对比方法

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

7.2 对比结果

指标数值
Max Absolute Error (Logits)0.016008
Mean Absolute Error (Logits)0.00264320
Max Probability Difference0.000181
Mean Probability Difference0.00000332
Cosine Similarity0.99999499
Top-1 MatchYes
Top-5 Overlap5/5
CPU 推理耗时337.15ms
NPU 推理耗时246.51ms
NPU 加速比1.37x

7.3 精度结论

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

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

8. 终端输出截图

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

9. 模型仓库

  • 原始模型:timm/twins_pcpvt_base.in1k

10. 标签说明

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