将 timm/convnext_small.in12k 图片分类模型适配到华为昇腾 NPU (Ascend910) 单卡环境。该模型为 ConvNeXt-Small 架构,在 ImageNet-12K (11821 类) 上预训练。
timm/convnext_small.in12ktimm.create_model(pretrained=False) + ModelScope snapshot_download + 本地权重加载| 项目 | 值 |
|---|---|
| NPU 型号 | Ascend910 |
| PyTorch | 2.x |
| torch_npu | 已安装 |
| timm | 已安装 |
| modelscope | 已安装 |
| 操作系统 | Linux (aarch64) |
pip install -r requirements.txt
python inference.py推理结果 (NPU Top-5):
日志保存在 logs/inference.log。
python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.033449 |
| mean_abs_error | 0.005554 |
| relative_error | 0.7962% |
| cosine_similarity | 0.999974 |
| threshold | 1.0% |
| 结果 | PASS |
| 指标 | 值 |
|---|---|
| 输入尺寸 | [1, 3, 224, 224] |
| 平均延迟 | 12.89 ms |
| 最小延迟 | 12.87 ms |
| 最大延迟 | 12.93 ms |
| P50 | 12.89 ms |
| P90 | 12.93 ms |
| P95 | 12.93 ms |
| 吞吐量 | 77.55 images/sec |
测试条件:2 次预热 + 10 次正式测试,单卡 Ascend910,batch_size=1。
CPU-NPU 一致性验证(Smoke Check,非官方精度评测):
| 指标 | 值 |
|---|---|
| 最大 logit 差异 | 0.033449 |
| 平均 logit 差异 | 0.005554 |
| 最大概率差异 | 0.000607 |
| Top-1 一致 | 完全匹配 (class_8753) |
| Top-5 一致 | 完全匹配 |
CPU-NPU 结果高度一致,差异来源于浮点精度(float32 vs float16 计算路径)。
详见 screenshots/self_verification.png。
| 文件 | 说明 |
|---|---|
logs/inference.log | 推理结果日志 |
logs/accuracy.log | 精度验证日志 |
logs/benchmark.log | 性能测试日志 |
logs/env_check.log | 环境检查日志 |
class_{index} 形式展示model.safetensors, pytorch_model.bin) 已通过 .gitignore 排除,不随代码提交#NPU #Ascend910 #timm #ConvNeXt #image-classification #ModelScope