Twins-SVT small 是 Twins 系列中的轻量级视觉Transformer变体,适用于图像分类任务。SVT(Spatially Separable Vision Transformer)通过空间可分离的自注意力机制降低计算复杂度。
此仓库记录了在华为昇腾 NPU(Ascend910)上完成 twins_svt_small.in1k 模型适配、推理和精度验证的完整过程。
原始模型地址:twins_svt_small.in1k
| 组件 | 规格 |
|---|---|
| NPU | Ascend910 (64GB HBM) |
| CPU | ARM 64核 |
| 内存 | 512GB |
| 组件 | 版本 |
|---|---|
| 操作系统 | Linux (aarch64) |
| Python | 3.11.14 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| timm | 1.0.27 |
| CANN | 8.5.1 |
pip install torch torch_npu timm torchvision pillow numpy modelscope safetensors# NPU 推理
python3 inference.py --model-name twins_svt_small.in1k --device npu --num-runs 3
# CPU 推理
python3 inference.py --model-name twins_svt_small.in1k --device cpu --num-runs 3python3 compare_cpu_npu.py --model-name twins_svt_small.in1k本模型基于 timm 框架,支持直接导出为 ONNX 或 TorchScript 格式进行部署。在昇腾 NPU 上,使用 torch_npu 插件即可自动利用 NPU 加速推理。
在 Ascend910 NPU 上运行推理,Top-5 分类结果如下:
| 排名 | 类别 | 置信度 |
|---|---|---|
| 1 | crossword_puzzle | 0.0338 |
| 2 | parachute | 0.0209 |
| 3 | pill_bottle | 0.0209 |
| 4 | steam_locomotive | 0.0177 |
| 5 | broom | 0.0144 |
| 指标 | CPU | NPU |
|---|---|---|
| 推理耗时 | 170.87ms | 238.60ms |
| 加速比 | — | 0.72x |
| 指标 | 数值 |
|---|---|
| Max Absolute Error (Logits) | 0.014028 |
| Mean Absolute Error (Logits) | 0.00254335 |
| Max Probability Difference | 0.000200 |
| Mean Probability Difference | 0.00000392 |
| Cosine Similarity | 0.99999547 |
| Top-1 Match | Yes |
| Top-5 Overlap | 5/5 |
| CPU 推理耗时 | 170.87ms |
| NPU 推理耗时 | 238.60ms |
| NPU 加速比 | 0.72x |
NPU 与 CPU 推理结果误差 < 1%,精度合格。
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Model: twins_svt_small.in1k CPU vs NPU │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ [LOG_WARNING] can not create directory, directory: /home/atomgit/ascend/log, possible reason: No such file or di...│
│ 模型: twins_svt_small.in1k │
│ CPU vs NPU 精度对比 │
│ ============================================================ │
│ │
│ [INFO] 加载模型 (CPU)... │
│ [INFO] 加载模型 (NPU)... │
│ │
│ [INFO] CPU 推理... │
│ [INFO] NPU 推理... │
│ │
│ ============================================================ │
│ 精度对比结果 │
│ ============================================================ │
│ │
│ Logits 差异: │
│ Max Absolute Error: 0.014028 │
│ Mean Absolute Error: 0.00254335 │
│ Max Relative Error: 243.2817% │
│ Mean Relative Error: 1.5911% │
│ │
│ 概率差异: │
│ Max Probability Difference: 0.000200 │
│ Mean Probability Difference: 0.00000392 │
│ │
│ 分类一致性: │
│ CPU Top-1 class: 916 │
│ NPU Top-1 class: 916 │
│ Top-1 match: YES │
│ Top-5 overlap: 5/5 │
│ │
│ Cosine Similarity: 0.99999547 │
│ │
│ 推理耗时: │
│ CPU: 166.84ms │
│ NPU: 266.92ms │
│ Speedup: 0.63x │
│ │
│ ============================================================ │
│ 结论: 通过 │
│ NPU 与 CPU 推理结果误差 < 1%(基于概率差异和分类一致性) │
│ ============================================================ │
│ │
│ │
│ 【精度对比摘要】 │
│ | 指标 | 数值 | │
│ |---|---:| │
│ | Max Absolute Error | 0.014028 | │
│ | Mean Absolute Error | 0.00254335 | │
│ | Max Relative Error | 243.2817% | │
│ | Mean Relative Error | 1.5911% | │
│ | Max Prob Difference | 0.000200 | │
│ | Mean Prob Difference | 0.00000392 | │
│ | Cosine Similarity | 0.99999547 | │
│ | Top-1 Match | Yes | │
│ | Top-5 Overlap | 5/5 | │
│ | CPU Time | 166.84ms | │
│ | NPU Time | 266.92ms | │
│ | Speedup | 0.63x | │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘#+NPU:表示此模型已在昇腾 NPU 上完成适配和验证#+CV:计算机视觉任务#+昇腾:华为昇腾平台适配#+Transformer:基于 Transformer 架构