本项目将 ModelScope 图片分类模型 timm/swin_base_patch4_window7_224.ms_in1k 适配为可在单卡昇腾 NPU(Ascend910B)上运行的提交工程。
timm.create_model(..., pretrained=False) + 本地 model.safetensors 权重注意:该模型未提供 id2label 映射文件,推理结果使用 class_0、class_1、...、class_999 作为标签占位。
| 组件 | 版本/型号 |
|---|---|
| NPU | Ascend910B4 |
| CANN | 8.5.1 |
| PyTorch | 2.x |
| torch_npu | 适配 CANN 8.5.1 |
| timm | latest |
环境检查日志见 logs/env_check.log。
pip install -r requirements.txt
python inference.py推理脚本加载 ModelScope 本地缓存的 model.safetensors,在 npu:0 上执行真实推理,并将结果写入 logs/inference.log。
示例输出:
Output shape: torch.Size([1, 1000])
Top-5 predictions (NPU):
1. class_818 (index=818, prob=0.146275)
2. class_704 (index=704, prob=0.146007)
3. class_862 (index=862, prob=0.145107)
4. class_920 (index=920, prob=0.061193)
5. class_470 (index=470, prob=0.043189)python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.018697 |
| mean_abs_error | 0.002485 |
| relative_error | 0.2653% |
| cosine_similarity | 0.999997 |
| threshold | 1.0% |
| 结果 | PASS |
python benchmark.py在单卡 Ascend910B4、batch_size=1 条件下的测试结果:
| 指标 | 数值 |
|---|---|
| Avg latency | 60.73 ms |
| Min latency | 41.47 ms |
| Max latency | 90.27 ms |
| P50 | 58.65 ms |
| P90 | 73.51 ms |
| P95 | 81.89 ms |
| Throughput | 16.47 images/sec |
本仓库仅提供 smoke consistency 验证。若需官方 ImageNet-1K Top-1/Top-5 精度,请使用标准评测数据集运行 timm 官方验证流程。
关键验证摘要已保存至:
screenshots/self_verification.txtscreenshots/self_verification.png| 文件 | 说明 |
|---|---|
logs/env_check.log | NPU 环境检查 |
logs/stage0.log | 阶段 0 模型预检 |
logs/paths.txt | 模型路径记录 |
logs/inference.log | NPU 推理日志 |
logs/accuracy.log | CPU/NPU 一致性对比 |
logs/benchmark.log | 性能基准测试 |
logs/prediction.txt | 推理结果摘要 |
pretrained=False 创建模型结构,并从 ModelScope 本地缓存加载权重,不触发 HuggingFace Hub 下载。*.bin、*.safetensors、*.pth、*.pt、*.ckpt、*.onnx 已加入 .gitignore,不会提交到仓库。fusion_result.json 和 kernel_meta/ 已加入 .gitignore 并在最终检查时清理。logs/prediction.txt 中均使用 class_x 形式说明。#NPU #Ascend #ImageClassification #timm #SwinTransformer #ModelScope