本项目将 timm/resnet50.a1_in1k 图片分类模型适配到单卡华为昇腾 NPU(Ascend910B)上运行。
| 项目 | 版本 |
|---|---|
| NPU 型号 | Ascend910B4 |
| CANN | 8.5.1 |
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| torchvision | 0.24.0 |
| transformers | 4.57.6 |
| timm | 1.0.27 |
| modelscope | 1.35.3 |
torch_npu通常由昇腾容器/环境预装,不在 requirements.txt 中固定版本。
pip install -r requirements.txtpython inference.py推理结果保存至:
logs/inference.log — 完整推理日志logs/prediction.txt — Top-5 预测摘要python eval_accuracy.py结果保存至 logs/accuracy.log。
python benchmark.py结果保存至 logs/benchmark.log。
| 检查项 | 结果 |
|---|---|
torch.npu.is_available() | True |
| NPU 设备名 | Ascend910B4 |
| Top-1 预测 | class=974, prob=0.999045 |
| Top-5 预测 | class=[974, 980, 972, 976, 437] |
在 Ascend910B4 单卡上的基准测试结果(10 次正式测试,2 次预热):
| 指标 | 数值 |
|---|---|
| 平均延迟 | 11.39 ms |
| 最小延迟 | 11.20 ms |
| 最大延迟 | 11.67 ms |
| P50 延迟 | 11.39 ms |
| P90 延迟 | 11.67 ms |
| P95 延迟 | 11.67 ms |
| 吞吐量 | 87.81 images/sec |
注:首次推理因算子编译耗时约 17.8 s,预热后稳定在上述水平。
CPU 与 NPU 推理结果一致性对比:
| 指标 | 数值 |
|---|---|
| logits 最大绝对差 | 1.69e-02 |
| logits 平均绝对差 | 3.71e-03 |
| 概率最大绝对差 | 2.10e-05 |
| Top-1 匹配 | True (CPU=974, NPU=974) |
| Top-5 匹配 | True |
注:此为 smoke accuracy / CPU-NPU 一致性验证,非官方 ImageNet 精度评测。
见 screenshots/self_verification.png 与 screenshots/self_verification.txt。
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查(npu-smi、包版本) |
logs/inference.log | 推理日志 |
logs/prediction.txt | Top-5 预测结果 |
logs/accuracy.log | CPU vs NPU 精度对比 |
logs/benchmark.log | 性能基准测试 |
snapshot_download) 下载到本地缓存;首次运行需联网,后续可复用缓存。timm.create_model(..., pretrained=False) 创建结构后,手动从 ModelScope 本地路径 torch.load 权重并 load_state_dict。config.json 中的 pretrained_cfg 参数构建,input_size=224,mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225],interpolation=bicubic,crop_pct=0.95。accelerate,本模型推理不依赖此包。assets/test.jpg 从 https://picsum.photos/400/300 下载,为真实随机图片。.gitignore 中排除)。#NPU #Ascend #ResNet #timm #ImageClassification #ModelScope