g
gyccc/timm-resnet50.a1_in1k-NPU
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

timm/resnet50.a1_in1k on Ascend NPU

1. 简介

本项目将 timm/resnet50.a1_in1k 图片分类模型适配到单卡华为昇腾 NPU(Ascend910B)上运行。

  • 模型架构: ResNet-50
  • 任务类型: ImageNet-1k 图片分类(1000 类)
  • 加载方式: timm.create_model + ModelScope 本地权重加载
  • 预处理: 基于 timm pretrained_cfg(Resize→CenterCrop→Normalize)
  • 适配状态: 推理、精度一致性、性能基准均验证通过

2. 验证环境

项目版本
NPU 型号Ascend910B4
CANN8.5.1
Python3.11.14
torch2.9.0+cpu
torch_npu2.9.0.post1+gitee7ba04
torchvision0.24.0
transformers4.57.6
timm1.0.27
modelscope1.35.3

torch_npu 通常由昇腾容器/环境预装,不在 requirements.txt 中固定版本。

3. 推理运行

3.1 安装依赖

pip install -r requirements.txt

3.2 运行推理

python inference.py

推理结果保存至:

  • logs/inference.log — 完整推理日志
  • logs/prediction.txt — Top-5 预测摘要

3.3 运行精度验证

python eval_accuracy.py

结果保存至 logs/accuracy.log。

3.4 运行性能测试

python benchmark.py

结果保存至 logs/benchmark.log。

4. Smoke 验证

检查项结果
torch.npu.is_available()True
NPU 设备名Ascend910B4
Top-1 预测class=974, prob=0.999045
Top-5 预测class=[974, 980, 972, 976, 437]

5. 性能参考

在 Ascend910B4 单卡上的基准测试结果(10 次正式测试,2 次预热):

指标数值
平均延迟11.39 ms
最小延迟11.20 ms
最大延迟11.67 ms
P50 延迟11.39 ms
P90 延迟11.67 ms
P95 延迟11.67 ms
吞吐量87.81 images/sec

注:首次推理因算子编译耗时约 17.8 s,预热后稳定在上述水平。

6. 精度评测

CPU 与 NPU 推理结果一致性对比:

指标数值
logits 最大绝对差1.69e-02
logits 平均绝对差3.71e-03
概率最大绝对差2.10e-05
Top-1 匹配True (CPU=974, NPU=974)
Top-5 匹配True

注:此为 smoke accuracy / CPU-NPU 一致性验证,非官方 ImageNet 精度评测。

7. 自验证截图

见 screenshots/self_verification.png 与 screenshots/self_verification.txt。

8. 日志文件

文件说明
logs/env_check.log环境检查(npu-smi、包版本)
logs/inference.log推理日志
logs/prediction.txtTop-5 预测结果
logs/accuracy.logCPU vs NPU 精度对比
logs/benchmark.log性能基准测试

9. 注意事项

  1. 模型下载: 模型权重通过 ModelScope (snapshot_download) 下载到本地缓存;首次运行需联网,后续可复用缓存。
  2. timm 加载: 因 HuggingFace 直连在当前环境不可达,本工程采用 timm.create_model(..., pretrained=False) 创建结构后,手动从 ModelScope 本地路径 torch.load 权重并 load_state_dict。
  3. 预处理: 基于模型 config.json 中的 pretrained_cfg 参数构建,input_size=224,mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225],interpolation=bicubic,crop_pct=0.95。
  4. 首次推理耗时: 第一次 NPU 推理包含算子编译,耗时较长(约 17.8 s),后续推理稳定。
  5. ** accelerate**: 环境中未安装 accelerate,本模型推理不依赖此包。
  6. 占位图: 测试图片 assets/test.jpg 从 https://picsum.photos/400/300 下载,为真实随机图片。
  7. 不提交权重: 本仓库不包含模型权重文件(*.bin, *.safetensors 等已在 .gitignore 中排除)。

10. 标签

#NPU #Ascend #ResNet #timm #ImageClassification #ModelScope