本项目将 timm/tf_efficientnet_b5.ns_jft_in1k 适配到昇腾 NPU (Ascend910) 上运行,支持真实 NPU 推理、CPU-NPU 精度一致性对比和性能基准测试。
[1, 3, 456, 456][1, 1000] (ImageNet 1000 类 logits)timm.create_model(pretrained=False) + ModelScope snapshot_download 本地权重加载| 组件 | 版本/型号 |
|---|---|
| NPU | Ascend910 |
| npu-smi | 25.5.2 |
| PyTorch | torch + torch_npu |
| timm | latest |
| ModelScope | latest |
环境检查日志:logs/env_check.log
python inference.py模型自动通过 ModelScope 下载权重,使用 timm.data.resolve_model_data_config 解析预处理配置,在 npu:0 上执行真实推理。
示例输出:
Model: timm/tf_efficientnet_b5.ns_jft_in1k
Input shape: [1, 3, 456, 456]
Output shape: [1, 1000]
Top-5 predictions:
1. class_810: 0.4304
2. class_878: 0.3451
3. class_753: 0.0018
4. class_508: 0.0016
5. class_686: 0.0009推理日志:logs/inference.log
python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.006341 |
| mean_abs_error | 0.000475 |
| relative_error | 0.1907% |
| cosine_similarity | 0.999999 |
| threshold | 1.0% |
| 结果 | PASS |
python benchmark.py预热 2 次 + 正式 10 次(每次前后 torch.npu.synchronize())。
| 指标 | 数值 |
|---|---|
| Avg latency | 19.96 ms |
| Min latency | 19.07 ms |
| Max latency | 25.59 ms |
| P50 latency | 19.35 ms |
| P90 latency | 20.18 ms |
| P95 latency | 22.89 ms |
| Throughput | 50.10 images/sec |
性能日志:logs/benchmark.log
本工程仅提供 CPU-NPU 推理一致性 smoke test,未使用 ImageNet 完整验证集跑 Top-1/Top-5 官方精度。如需完整精度评测,请自行准备 ImageNet 数据集并扩展 eval_accuracy.py。
见 screenshots/self_verification.txt 与 screenshots/self_verification.png。
| 日志 | 内容 |
|---|---|
logs/env_check.log | NPU 环境信息 |
logs/inference.log | NPU 推理结果 |
logs/accuracy.log | CPU-NPU 一致性对比 |
logs/benchmark.log | 性能基准测试 |
snapshot_download 自动下载权重,请确保网络可访问 modelscope.cn。timm.data.resolve_model_data_config 自动解析,请勿硬编码为 224x224。.gitignore 已排除 *.bin、*.safetensors、*.pth、*.pt、*.ckpt、*.onnx,请勿将权重文件提交到仓库。#NPU