本项目将 ModelScope 图片分类模型 timm/eva02_large_patch14_448.mim_m38m_ft_in22k_in1k 适配为可在单卡华为昇腾 NPU(Ascend910)上运行的推理工程。
模型说明:
适配要点:
snapshot_download 作为主下载方式timm.create_model(pretrained=False) 创建模型结构,并加载本地权重timm.data.resolve_model_data_config 自动解析预处理配置| 组件 | 版本/型号 |
|---|---|
| NPU | Ascend910 (Ascend910_9362) |
| npu-smi | 25.5.2 |
| HBM | 64 GB |
| PyTorch | 适配昇腾版本 |
| torch_npu | 适配昇腾版本 |
| timm | latest |
| modelscope | latest |
环境检查日志:logs/env_check.log
pip install -r requirements.txt
python inference.py推理流程:
model_utils.py 通过 ModelScope 下载模型权重到本地缓存timm.create_model(..., pretrained=False) 初始化模型结构.safetensors 权重(missing=0, unexpected=0)npu:0示例输出:
Top-1: class_978: 0.363622
Top-2: class_718: 0.043712
Top-3: class_460: 0.032092
Top-4: class_536: 0.023921
Top-5: class_977: 0.009449日志文件:logs/inference.log
python eval_accuracy.py对比 CPU 与 NPU 推理结果的一致性:
| 指标 | 数值 |
|---|---|
| Max logit diff | 0.003369 |
| Mean logit diff | 0.000712 |
| Max prob diff | 0.000592 |
| Top-1 match | True |
| Top-5 match | True |
说明:本验证为 Smoke Consistency 检查,非官方 ImageNet 精度评测。
日志文件:logs/accuracy.log
python benchmark.py测试条件:预热 2 次 + 正式 10 次,单张 448x448 图片,batch=1。
| 指标 | 数值 |
|---|---|
| Avg latency | 32.56 ms |
| Min latency | 32.39 ms |
| Max latency | 32.84 ms |
| P50 latency | 32.53 ms |
| P90 latency | 32.84 ms |
| Images/sec | 30.71 |
日志文件:logs/benchmark.log
本项目未在完整 ImageNet-1k 验证集上运行,仅提供单图 Smoke Consistency 验证。如需正式精度评测,请下载 ImageNet-1k 验证集并运行批量推理。
screenshots/self_verification.txtscreenshots/self_verification.png内容包含:NPU 环境信息、推理结果、精度对比摘要、性能基准摘要。
| 文件 | 内容 |
|---|---|
logs/env_check.log | NPU 环境检查 |
logs/inference.log | 单图 NPU 推理结果 |
logs/accuracy.log | CPU vs NPU Smoke 一致性验证 |
logs/benchmark.log | NPU 性能基准测试 |
logs/paths.txt | 本地模型权重路径记录 |
~/.cache/modelscope/hub/。timm.data.resolve_model_data_config 自动获取模型对应的预处理参数(mean、std、crop 尺寸等),无需手动硬编码。.gitignore 已排除所有权重文件,请勿将 .safetensors、.bin、.pth 等文件提交到仓库。#NPU #Ascend #timm #image-classification #EVA02