本文档记录 fastvit_sa12.apple_in1k 在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。
原始模型地址:https://www.modelscope.cn/models/timm/fastvit_sa12.apple_in1k
| 组件 | 版本 |
|---|---|
| CANN | 8.5.1 |
| torch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| timm | 1.0.27 |
| torchvision | 0.24.0 |
| modelscope | 1.35.3 |
| NPU | Ascend 910B (32GB HBM) |
| OS | Linux 5.10.0 aarch64 |
# 安装依赖(使用清华 PyPI 镜像)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torch_npu timm torchvision pillow numpy modelscope safetensors
# 确保 CANN 和 torch_npu 已正确安装
python3 -c "import torch; import torch_npu; print('NPU available:', torch.npu.is_available())"# 从 ModelScope 下载
python3 -c "
from modelscope import snapshot_download
path = snapshot_download('timm/fastvit_sa12.apple_in1k', cache_dir='./model')
print('Model downloaded to:', path)
"# CPU 推理
python3 inference.py --device cpu
# NPU 推理
python3 inference.py --device npupython3 compare_cpu_npu.py验证方法:在 CPU 和 NPU 上分别加载同一模型权重,使用相同随机输入(固定随机种子)运行推理,对比输出 logits。
| 测试编号 | CPU Top-1 | NPU Top-1 | Top-1 一致 | Top-5 重叠 | 相对误差 | 余弦相似度 | 状态 |
|---|---|---|---|---|---|---|---|
| 1 | 625 | 625 | True | 5/5 | 0.4798% | 0.99999234 | PASS |
| 2 | 625 | 625 | True | 5/5 | 0.3916% | 0.99999296 | PASS |
| 3 | 625 | 625 | True | 5/5 | 0.5371% | 0.99999178 | PASS |
| 指标 | 数值 |
|---|---|
| 测试用例数 | 3 |
| Top-1 一致数 | 3/3 |
| 平均 MAE | 5.505744e-03 |
| 平均相对误差 | 0.4695% |
| 平均余弦相似度 | 0.99999236 |
| 精度要求 | NPU vs CPU 误差 < 1% |
| 精度结论 | ✅ 通过 (误差 0.4695% < 1%) |
| 总体状态 | PASS |
精度测试结论:NPU 与 CPU 推理结果误差为 0.4695%,小于 1%,精度符合要求。
| 指标 | CPU 推理耗时 | NPU 推理耗时 | 加速比 |
|---|---|---|---|
| 平均延迟 | 170.1 ms | 59.4 ms | 2.9x |
NPU 相对于 CPU 的加速效果显著,对于大批量推理场景可明显降低推理延迟。
.
├── model/ # 模型权重(从 ModelScope 下载)
├── inference.py # NPU/CPU 推理脚本
├── compare_cpu_npu.py # CPU/NPU 精度对比脚本
├── accuracy_report.json # 精度测试报告
├── requirements.txt # 依赖清单
├── terminal_screenshot.png # 推理终端截图
└── README.md # 本文档torch_npu 将 PyTorch 模型迁移至 Ascend NPUtorch.npu.synchronize() 同步确保计时准确model.to(torch.device('npu:0')) 将模型部署到 NPUtorch.npu.empty_cache() 释放 NPU 显存
torch_npu 会有设备替换警告,属正常现象torch.no_grad() 上下文进行推理以节省显存torch.npu.empty_cache() 释放 NPU 显存#NPU #Ascend #CV #图像分类 #FastViT #timm #昇腾
适配方:Ascend NPU Adaptation 仓库地址:https://gitcode.com/gcw_GSiqzzLf/fastvit_sa12-apple_in1k-npu
以下日志展示了 NPU 推理成功的关键信息:
Device: cpu
Running inference (5 runs) with random input...
Top-5 predictions: