本工程将 timm/regnety_080_tv.tv2_in1k 图片分类模型适配到华为昇腾 NPU(Ascend910B)上运行。
timm.create_model(pretrained=False) + ModelScope 本地权重加载resolve_model_data_config + create_transform| 组件 | 版本 |
|---|---|
| NPU 型号 | Ascend910B4 |
| CANN | 8.5.1 |
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torchvision | 0.24.0 |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.57.6 |
| timm | 1.0.27 |
| modelscope | 1.35.3 |
| safetensors | 0.7.0 |
pip install -r requirements.txt
torch_npu通常由昇腾容器或环境预装,不在 requirements.txt 中固定版本。
python inference.py推理日志:logs/inference.log
预测结果:logs/prediction.txt
python eval_accuracy.py日志:logs/accuracy.log
python benchmark.py日志:logs/benchmark.log
torch.npu.is_available(): Truetorch.npu.get_device_name(0): Ascend910B4[1, 1000]模型未提供 id2label 映射,使用 class_N 作为占位标签。
在 Ascend910B4 单卡上的 benchmark 结果(batch=1,输入 3x224x224):
| 指标 | 数值 |
|---|---|
| avg | 19.858 ms |
| min | 17.913 ms |
| max | 24.429 ms |
| p50 | 19.046 ms |
| p90 | 23.709 ms |
| p95 | 23.709 ms |
| images/sec | 50.36 |
性能数据仅供参考,实际数值受 CANN 版本、驱动、Host 负载等因素影响。
CPU vs NPU Smoke 一致性验证结果:
| 指标 | 数值 |
|---|---|
| max_abs_diff (logits) | 4.34e-03 |
| mean_abs_diff (logits) | 4.25e-04 |
| prob_max_diff | 1.43e-04 |
| Top-1 match | True |
| Top-5 match | True |
本验证为 CPU/NPU smoke consistency 测试,非官方 ImageNet 数据集精度。
见 screenshots/ 目录:
screenshots/self_verification.txt — 关键日志文本汇总screenshots/self_verification.png — 验证结果截图| 文件 | 说明 |
|---|---|
logs/model_check.log | 模型预判与下载检查 |
logs/env_check.log | 环境检查(NPU、Python、包版本) |
logs/inference.log | 推理过程日志 |
logs/prediction.txt | Top-5 预测结果 |
logs/accuracy.log | CPU vs NPU 精度对比 |
logs/benchmark.log | 性能基准测试 |
timm.create_model(..., pretrained=True),必须通过 ModelScope snapshot_download 下载到本地后加载,避免触发 HuggingFace Hub 自动下载。model.safetensors(151MB)。resolve_model_data_config + create_transform,与训练时保持一致。assets/test.jpg 来自公开图床 picsum.photos,如网络不可用则使用占位图(见 assets/test_image_note.txt)。fusion_result.json 和 kernel_meta/,已加入 .gitignore,不会提交。#NPU