本项目将 ModelScope 图片分类模型 timm/convnext_large.fb_in22k_ft_in1k 适配为可在单卡昇腾 NPU(Ascend910B)上运行的提交工程。
timm.create_model(..., pretrained=False) + 本地权重加载(不触发 HuggingFace 自动下载)注意:该模型没有提供 id2label 映射文件,推理结果使用 class_0、class_1 ... class_999 作为占位标签。实际部署时请根据业务场景替换为真实标签。
环境检查日志见 logs/env_check.log。
pip install -r requirements.txt
python inference.py推理脚本 inference.py 会:
modelscope.snapshot_download 下载模型到本地缓存(已缓存则跳过)timm.create_model(..., pretrained=False) 创建模型结构model.safetensors 权重npu:0 上执行真实推理logs/inference.logModel: timm/convnext_large.fb_in22k_ft_in1k
Local weights: /opt/atomgit/.cache/modelscope/hub/models/timm/convnext_large___fb_in22k_ft_in1k/model.safetensors
Missing keys: 0, Unexpected keys: 0
Input shape: [1, 3, 224, 224]
Output shape: [1, 1000]
Top-5 predictions (no id2label available, using class_x labels):
class_405: 0.138457
class_657: 0.129301
class_701: 0.112414
class_895: 0.088799
class_974: 0.078891python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.035369 |
| mean_abs_error | 0.005895 |
| relative_error | 0.6786% |
| cosine_similarity | 0.999982 |
| threshold | 1.0% |
| 结果 | PASS |
python benchmark.py在 Ascend910B4 单卡、batch_size=1 条件下:
| 指标 | 数值 |
|---|---|
| 平均延迟 | 25.86 ms |
| 最小延迟 | 22.45 ms |
| 最大延迟 | 35.03 ms |
| P50 | 23.12 ms |
| P90 | 31.79 ms |
| P95 | 33.41 ms |
| 吞吐 | 38.67 images/sec |
详见 logs/benchmark.log。
本项目未在完整 ImageNet-1k 验证集上运行官方精度评测,仅提供了 CPU/NPU smoke 一致性验证。如需完整精度评测,请准备 ImageNet-1k 数据集并运行标准 eval 脚本。
自验证摘要见 screenshots/self_verification.txt,可视化截图见 screenshots/self_verification.png。
| 文件 | 内容 |
|---|---|
logs/env_check.log | NPU 环境信息 |
logs/inference.log | NPU 推理输出与 Top-5 结果 |
logs/prediction.txt | 预测结果副本 |
logs/accuracy.log | CPU vs NPU 一致性对比 |
logs/benchmark.log | NPU 性能基准测试 |
logs/paths.txt | 模型本地路径记录 |
*.safetensors、*.bin、*.pth、*.pt、*.ckpt、*.onnx 已加入 .gitignore,不会提交到仓库。snapshot_download 获取模型,不依赖 HuggingFace Hub 直连。timm.data.resolve_model_data_config + timm.data.create_transform 自动构建与模型配套的预处理管道。fusion_result.json 和 kernel_meta/ 已在最终检查阶段删除。#NPU #Ascend #timm #ConvNeXt #image-classification