e
gcw_GSiqzzLf/gcresnext50ts.ch_in1k-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

gcresnext50ts.ch_in1k Ascend NPU 适配

1. 模型概述

gcresnext50ts.ch_in1k 是一个基于 gcresnext50ts 架构的图像分类模型,在 ImageNet-1K 数据集上预训练,支持 1000 类分类任务。

  • 模型架构: gcresnext50ts
  • 输入尺寸: 3 x 256 x 256
  • 类别数: 1000
  • 模型大小: 89M
  • 参数量: ~17M
  • 框架: PyTorch (timm)

原始模型信息

  • 原始模型地址: https://www.modelscope.cn/models/timm/gcresnext50ts.ch_in1k
  • HuggingFace 地址: https://huggingface.co/timm/gcresnext50ts.ch_in1k
  • 任务类型: 图像分类 (Image Classification)
  • 输入格式: 图像张量 (NCHW)
  • 输出格式: 分类 logits (1000 维)

2. 验证环境

组件版本
CANN8.5.1
torch2.9.0
torch-npu2.9.0.post1
timm1.0.27
Python3.11.14
NPUAscend 910B (64GB HBM)
OSLinux 5.10.0 aarch64

3. 环境准备

安装依赖

pip install torch torch-npu timm numpy Pillow

下载模型

from modelscope.hub.snapshot_download import snapshot_download
snapshot_download('timm/gcresnext50ts.ch_in1k', cache_dir='./model')

4. 推理方法

方式一:NPU 推理

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

方式二:CPU 推理

python inference.py --model_path ./model --device cpu

方式三:CPU vs NPU 精度对比

python compare_cpu_npu.py

方式四:性能基准测试

python inference.py --model_path ./model --device npu --benchmark --num_runs 20

5. NPU 适配说明

本模型基于 PyTorch 框架,使用 torch_npu 完成 Ascend NPU 适配:

  1. 使用 torch_npu 替代 CUDA 后端
  2. 模型加载后通过 .to(npu) 将参数迁移至 NPU
  3. NPU 推理使用 torch.npu.synchronize() 确保同步
  4. 精度验证使用随机输入在 CPU 和 NPU 上分别推理,对比输出 logits

6. 精度测试结果

测试方法

在 CPU 和 Ascend NPU 上使用相同随机输入分别推理,对比输出 logits 的差异。 共进行 5 组测试,每组使用不同随机种子。

精度对比数据

测试CPU Top-1NPU Top-1Top-5 重叠MAE相对误差余弦相似度状态
121215/54.1551e-040.0098%0.99999976✅
221215/53.5327e-040.0079%0.99999985✅
321215/52.5379e-040.0059%0.99999992✅
421215/52.9359e-040.0068%0.99999983✅
521215/53.1415e-040.0075%0.99999992✅

总体精度结论

指标数值
测试数5
Top-1 匹配率5/5
平均 MAE3.26e-04
平均相对误差0.0076%
平均余弦相似度0.99999986

精度测试结论:NPU 与 CPU 推理结果误差为 0.0076%,符合精度误差小于 1% 的要求。

7. 性能对比

设备平均推理时间
CPU232.4ms
NPU (Ascend 910B)11.0ms

NPU 推理速度相比 CPU 提升显著,加速比约为 21.1x。

8. 推理截图

推理截图

图:模型在昇腾 NPU 上推理运行的终端输出

9. 项目结构

├── model/                  # 模型权重文件
│   ├── config.json
│   ├── model.safetensors
│   └── pytorch_model.bin
├── inference.py            # NPU/CPU 推理脚本
├── compare_cpu_npu.py      # CPU vs NPU 精度对比脚本
├── common_utils.py         # 工具函数
├── accuracy_report.json    # 精度测试报告
├── requirements.txt        # 依赖列表
└── README.md               # 本文档

10. 注意事项

  1. 本模型为图像分类模型,支持 1000 类 ImageNet 分类
  2. NPU 推理首次调用会有编译开销,后续推理速度稳定
  3. 使用 torch_npu 时可能会出现权限警告,不影响推理结果
  4. 建议在推理前后清理 NPU 缓存:torch.npu.empty_cache()

11. 标签

#NPU #Ascend #CV #图像分类 #timm #gcresnext50ts #昇腾


适配方: Ascend-SACT 标签: #NPU #Ascend #CV #image-classification

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。