本项目将 timm/wide_resnet50_2.racm_in1k 图片分类模型适配到华为昇腾 NPU(Ascend910B)单卡运行。
timm.create_model(pretrained=False) + ModelScope 本地权重加载timm.data.resolve_model_data_config + create_transformnpu:0重要说明:
timm.create_model(..., pretrained=True),未触发 HuggingFace Hub 下载。modelscope.snapshot_download 下载到本地后加载。model.safetensors(优先)和 pytorch_model.bin。| 项目 | 版本/型号 |
|---|---|
| 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 |
| timm | 1.0.27 |
| transformers | 4.57.6 |
| modelscope | 1.35.3 |
| safetensors | 0.7.0 |
pip install -r requirements.txt
python inference.py推理结果 (NPU Top-5):
日志保存在 logs/inference.log。
torch.npu.is_available(): True
torch.npu.device_count(): 1
torch.npu.get_device_name(0): Ascend910B4| 排名 | 类别 | 置信度 |
|---|---|---|
| 1 | class_979 | 0.657018 |
| 2 | class_975 | 0.044709 |
| 3 | class_978 | 0.029393 |
| 4 | class_970 | 0.026477 |
| 5 | class_972 | 0.020035 |
注:由于没有 id2label 映射文件,使用
class_x作为标签占位。模型输出为 1000 维 ImageNet-1k logits。 对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.004883 |
| mean_abs_error | 0.000809 |
| relative_error | N/A |
| cosine_similarity | N/A |
| threshold | 1.0% |
| 结果 | PASS |
| 指标 | 数值 |
|---|---|
| 平均延迟 | 12.38 ms |
| 最小延迟 | 11.80 ms |
| 最大延迟 | 14.92 ms |
| p50 | 12.15 ms |
| p90 | 14.92 ms |
| p95 | 14.92 ms |
| 吞吐量 | 80.79 images/sec |
测试条件:batch_size=1,输入尺寸 3x224x224,NPU 预热 2 轮,正式测试 10 轮。
| 指标 | 数值 |
|---|---|
| Logits max_abs_diff | 0.00488281 |
| Logits mean_abs_diff | 0.00080943 |
| Prob max_diff | 0.00033426 |
| Top-1 match | True (class_979) |
| Top-5 match | True |
| CPU Top-5 | [979, 975, 978, 970, 972] |
| NPU Top-5 | [979, 975, 978, 970, 972] |
注:此对比为单图 CPU/NPU 输出一致性验证,非官方 ImageNet 验证集精度。
见 screenshots/self_verification.png 和 screenshots/self_verification.txt。
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查(NPU 信息、包版本) |
logs/model_check.log | 模型下载与文件检查 |
logs/inference.log | 推理日志 |
logs/prediction.txt | 预测结果摘要 |
logs/accuracy.log | 精度一致性对比 |
logs/benchmark.log | 性能基准测试 |
timm.create_model(..., pretrained=False) + modelscope.snapshot_download 本地权重,未触发 HuggingFace Hub 下载。timm.data.resolve_model_data_config + create_transform 自动获取模型官方预处理参数。class_x 占位,实际为 ImageNet-1k 1000 类分类输出。https://picsum.photos/400/300 下载,若下载失败则使用占位图并在 assets/test_image_note.txt 中说明。owner does not match 和 path string is NULL 为昇腾环境已知提示,不影响推理正确性。#NPU