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

timm/resnetv2_101x3_bit.goog_in21k_ft_in1k on Ascend NPU

1. 简介

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

该模型为 BiT (Big Transfer) 系列中的 ResNetV2-101x3,使用 GroupNorm 替代 BatchNorm,在 ImageNet-21k 上预训练并在 ImageNet-1k 上微调,输出 1000 类 logits。

2. 验证环境

  • NPU: Ascend910 (2 cards)
  • npu-smi: 25.5.2
  • PyTorch: 2.9.0+cpu
  • torch_npu: available=True, device=Ascend910_9362
  • 模型来源: ModelScope (snapshot_download)
  • 模型加载方式: timm.create_model(pretrained=False) + 本地权重加载

3. 推理运行

python inference.py

运行结果:

  • 输入 shape: [1, 3, 448, 448]
  • 输出 shape: [1, 1000]
  • Top-1: class_995 (0.6218)
  • 推理成功,无缺失/多余 key

4. 精度验证

python eval_accuracy.py

对单张测试图片进行 CPU 与 NPU 一致性验证:

指标数值
max_abs_error0.003749
mean_abs_error0.000666
relative_error0.0532%
cosine_similarity1.000000
threshold1.0%
结果PASS
  • CPU Top-1 与 NPU Top-1 类别一致
  • CPU Top-5 与 NPU Top-5 类别一致

5. 性能参考

python benchmark.py

NPU 性能统计(10 次迭代,batch=1):

指标数值
Average32.07 ms
Min32.01 ms
Max32.16 ms
P5032.05 ms
P9032.16 ms
P9532.16 ms
Throughput31.19 images/sec

6. 精度评测

本工程未在完整 ImageNet-1k 验证集上运行,仅提供 CPU-NPU smoke 一致性验证。

如需完整精度评测,请使用 timm 提供的 validate.py 并在 ImageNet-1k 验证集上运行。

7. 自验证截图

见 screenshots/self_verification.png。

8. 日志文件

  • logs/env_check.log — 环境检查
  • logs/inference.log — 推理结果
  • logs/accuracy.log — CPU-NPU 精度一致性
  • logs/benchmark.log — 性能基准测试

9. 注意事项

  1. 不使用 HuggingFace 直连下载:权重通过 ModelScope snapshot_download 获取。
  2. pretrained=False:严禁使用 timm.create_model(..., pretrained=True),必须通过本地路径加载权重。
  3. 输入尺寸:BiT 模型默认输入尺寸为 448x448,请确保预处理使用 timm.data.resolve_model_data_config 获取正确的 transform 配置。
  4. 不提交权重:.gitignore 已排除所有权重文件(.bin、.safetensors、.pth、.pt、.ckpt、.onnx)。
  5. NPU 内存:模型参数量约 1.45GB,推理时 NPU HBM 占用约 3GB,确保单卡可用。

10. 标签

#NPU