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

timm/swin_small_patch4_window7_224.ms_in1k on Ascend NPU

1. 简介

本项目将 ModelScope 魔搭社区的 timm/swin_small_patch4_window7_224.ms_in1k 图片分类模型适配到单卡昇腾 NPU(Ascend910B)上运行。

  • 模型来源: ModelScope 魔搭社区
  • 模型类型: Swin Transformer Small,ImageNet-1k 预训练,224x224 输入
  • 输出类别数: 1000
  • 适配状态: 成功

2. 验证环境

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

3. 推理运行

安装依赖

pip install -r requirements.txt

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

运行命令

# 单图推理
python inference.py

# CPU vs NPU 一致性验证
python eval_accuracy.py

# NPU 性能基准测试
python benchmark.py

权重加载方式

  • 下载方式: modelscope snapshot_download
  • 模型结构: timm.create_model("swin_small_patch4_window7_224.ms_in1k", pretrained=False)
  • 权重文件: model.safetensors(本地加载,191 MB)
  • 预处理: timm.data.resolve_model_data_config + timm.data.create_transform
  • 运行设备: npu:0

明确说明: 本工程未使用 timm pretrained=True,未触发 HuggingFace Hub 下载。所有权重均通过 ModelScope snapshot_download 获取并从本地路径加载。

4. Smoke 验证

  • torch.npu.is_available(): True
  • torch.npu.device_count(): 1
  • torch.npu.get_device_name(0): Ascend910B4
  • Top-1: class_987 (prob=0.8029)
  • Top-5: class_987, class_125, class_327, class_33, class_112

该模型未提供 id2label 映射文件,因此使用 class_0 ~ class_999 作为标签名称。

5. 性能参考

在 Ascend910B4 单卡 NPU 上,使用 benchmark.py(warmup=2, runs=10)测得:

指标数值
Average latency58.09 ms
Min latency56.18 ms
Max latency62.74 ms
P50 latency57.29 ms
P90 latency62.74 ms
P95 latency62.74 ms
Throughput17.22 images/sec

6. 精度评测

本项目执行的是 CPU vs NPU Smoke 一致性验证(非官方 ImageNet 数据集精度)。

指标数值
Logits max_abs_diff0.022781
Logits mean_abs_diff0.002283
Prob max_diff0.000600
Top-1 matchTrue (987)
Top-5 matchTrue
CPU Top-5[987, 125, 327, 33, 112]
NPU Top-5[987, 125, 327, 33, 112]

CPU 与 NPU 推理结果完全一致,Top-1 和 Top-5 匹配。

7. 自验证截图

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

8. 日志文件

日志路径
环境检查logs/env_check.log
模型检查logs/model_check.log
推理日志logs/inference.log
预测结果logs/prediction.txt
精度验证logs/accuracy.log
性能测试logs/benchmark.log

9. 注意事项

  1. 标签说明: 该模型无 id2label 或 labels 文件,预测结果使用 class_0 ~ class_999 作为标签,已在 logs/prediction.txt 和 README 中说明。
  2. 预处理: 使用 timm.data.resolve_model_data_config + timm.data.create_transform 构建推理预处理;若失败则回退到模型 default_cfg 中的参数(input_size=224, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], crop_pct=0.9, interpolation=bicubic)。
  3. 权重加载: 通过 ModelScope snapshot_download 下载到本地缓存后,从 model.safetensors 加载,不触发 HuggingFace Hub 下载。
  4. torch_npu 警告: 运行过程中可能出现的 owner does not match 和 path string is NULL 为昇腾 CANN 环境权限/日志目录警告,不影响推理正确性。
  5. 显存占用: 单卡推理约占用 1 GB HBM,建议空闲显存大于 2 GB。
  6. 测试图: assets/test.jpg 来自公开图片服务 picsum.photos,用于演示推理流程。

10. 标签

#NPU #Ascend #timm #SwinTransformer #image-classification #ModelScope