本工程将 timm/resnet152.a1_in1k 图片分类模型适配到单卡昇腾 NPU(Ascend910)。
模型通过 ModelScope snapshot_download 下载权重,使用 timm.create_model(pretrained=False) 创建模型结构并加载本地权重,确保不依赖 HuggingFace 自动下载。
| 项目 | 版本/型号 |
|---|---|
| NPU | Ascend910 |
| npu-smi | 25.5.2 |
| PyTorch NPU | 可用 |
| 设备名 | Ascend910_9362 |
详见 logs/env_check.log。
pip install -r requirements.txt
python inference.py脚本使用 npu:0 进行真实推理,输入为 assets/test.jpg,输出 1000 维 logits,经 softmax 后取 Top-5 类别。
推理结果摘要:
完整日志见 logs/inference.log。
python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.020339 |
| mean_abs_error | 0.004392 |
| relative_error | 0.0663% |
| cosine_similarity | 1.000000 |
| threshold | 1.0% |
| 结果 | PASS |
python benchmark.py预热 2 次 + 正式 10 次,每次前后 torch.npu.synchronize()。
| 指标 | 数值 |
|---|---|
| avg latency | 0.014055 s |
| min latency | 0.013643 s |
| max latency | 0.014685 s |
| p50 latency | 0.014039 s |
| p90 latency | 0.014685 s |
| p95 latency | 0.014685 s |
| throughput | 71.15 images/sec |
完整日志见 logs/benchmark.log。
本工程仅提供单图 smoke consistency 验证,非官方 ImageNet 完整验证集精度。CPU 与 NPU 输出 Top-1/Top-5 完全一致,概率差异在 1e-4 量级,表明 NPU 推理与 CPU 推理高度一致。
见 screenshots/self_verification.png 与 screenshots/self_verification.txt。
| 日志 | 说明 |
|---|---|
logs/env_check.log | NPU 环境检查 |
logs/inference.log | NPU 推理结果 |
logs/accuracy.log | CPU-NPU 一致性对比 |
logs/benchmark.log | 性能基准测试 |
.safetensors/.pth 等)不提交到仓库,运行时通过 ModelScope 自动下载到本地缓存。#NPU