本项目将 timm/resnext101_32x4d.fb_swsl_ig1b_ft_in1k 图片分类模型适配到华为昇腾 NPU (Ascend910) 上运行。
| 组件 | 版本/信息 |
|---|---|
| NPU | Ascend910 (Ascend910_9362) |
| npu-smi | 25.5.2 |
| PyTorch | with torch_npu |
| timm | latest |
NPU 状态: npu_available=True
pip install -r requirements.txt
python inference.py推理脚本使用 assets/test.jpg 进行单图推理,输出 Top-5 预测结果。
推理输出示例:
=== NPU 推理结果 ===
模型: timm/resnext101_32x4d.fb_swsl_ig1b_ft_in1k
输出 shape: torch.Size([1, 1000])
设备: npu:0
Top-5 预测:
1. class_978: 0.893230
2. class_977: 0.051284
3. class_975: 0.013747
4. class_979: 0.007612
5. class_976: 0.007241python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.010977 |
| mean_abs_error | 0.001877 |
| relative_error | 0.1644% |
| cosine_similarity | 0.999999 |
| threshold | 1.0% |
| 结果 | PASS |
基于 benchmark.py 在单卡 NPU 上的测试结果(预热 2 次 + 正式 10 次):
| 指标 | 数值 |
|---|---|
| 平均延迟 | 9.70 ms |
| 最小延迟 | 9.55 ms |
| 最大延迟 | 9.83 ms |
| P50 延迟 | 9.71 ms |
| P90 延迟 | 9.78 ms |
| P95 延迟 | 9.78 ms |
| 吞吐量 | 103.13 images/sec |
eval_accuracy.py 对同一张测试图分别进行 CPU 和 NPU 推理,对比结果如下:
| 指标 | 结果 |
|---|---|
| Logits 最大差异 | 0.01097679 |
| Prob 最大差异 | 0.00075084 |
| CPU Top-1 | class_978 |
| NPU Top-1 | class_978 |
| CPU Top-5 | [978, 977, 975, 979, 976] |
| NPU Top-5 | [978, 977, 975, 979, 976] |
| Top-1 一致 | True |
| Top-5 一致 | True |
注意: 本测试为 smoke consistency 验证,非官方 ImageNet 精度评测。
见 screenshots/self_verification.png。
| 日志 | 说明 |
|---|---|
logs/stage0.log | Stage 0 模型预判与可用性检查 |
logs/env_check.log | 环境检查 |
logs/inference.log | NPU 推理结果 |
logs/accuracy.log | CPU-NPU 精度一致性 |
logs/benchmark.log | 性能基准测试 |
snapshot_download 下载,不依赖 HuggingFace 直连。timm.create_model(pretrained=False) 创建模型结构后,加载本地权重文件。.bin/.safetensors/.pth/.pt/.ckpt/.onnx 文件提交到仓库。#NPU #Ascend #ImageClassification #timm #ResNeXt