本项目将 timm/resnet101.a1h_in1k 图片分类模型适配到单卡昇腾 NPU (Ascend910) 上运行。
snapshot_download 下载本地权重,timm.create_model(pretrained=False) 创建结构后加载本地权重| 组件 | 版本/型号 |
|---|---|
| NPU | Ascend910 (Ascend910_9362) |
| npu-smi | 25.5.2 |
| PyTorch | 2.x |
| torch_npu | 适配 Ascend910 |
| timm | 最新版 |
| modelscope | 最新版 |
环境详情见 logs/env_check.log。
pip install -r requirements.txt
python inference.pyinference.py 会:
model_utils.py 调用 modelscope.snapshot_download 下载权重到本地缓存timm.create_model(pretrained=False) 创建模型结构.safetensors 权重npu:0 上执行推理logs/inference.log注意:权重文件不会提交到 Git 仓库,首次运行时会自动从 ModelScope 下载。
python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.010374 |
| mean_abs_error | 0.001470 |
| relative_error | 0.0149% |
| cosine_similarity | 1.000000 |
| threshold | 1.0% |
| 结果 | PASS |
运行 python benchmark.py 在单卡 Ascend910 上测试(batch=1, 224x224):
| 指标 | 数值 |
|---|---|
| Average latency | 12.17 ms |
| Min latency | 10.38 ms |
| Max latency | 26.16 ms |
| P50 latency | 10.70 ms |
| P90 latency | 26.16 ms |
| P95 latency | 26.16 ms |
| Throughput | 82.17 images/sec |
本项目仅包含单张图片的 smoke consistency 验证,非官方 ImageNet 全量精度评测。
如需进行官方 ImageNet 验证,请准备 ILSVRC2012 验证集并扩展 eval_accuracy.py。
见 screenshots/self_verification.png 和 screenshots/self_verification.txt。
| 日志 | 内容 |
|---|---|
logs/env_check.log | NPU 环境信息 |
logs/inference.log | NPU 推理结果与 Top-5 |
logs/accuracy.log | CPU-NPU 精度一致性对比 |
logs/benchmark.log | 性能基准测试结果 |
logs/paths.txt | 模型下载路径与权重路径 |
*.bin, *.safetensors, *.pth, *.pt, *.ckpt, *.onnx 等模型权重文件已加入 .gitignore,不会提交到仓库。snapshot_download,不使用 HuggingFace 直连下载。timm.create_model(..., pretrained=False) 创建结构后加载本地权重,不触发 HF/timm 自动下载。npu:0。#NPU