e
gcw_GSiqzzLf/fastvit_ma36-apple_dist_in1k-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

fastvit_ma36.apple_dist_in1k on Ascend NPU

1. 模型介绍

本文档记录 fastvit_ma36.apple_dist_in1k 在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。

  • 任务类型:图像分类 (Image Classification)
  • 模型架构:FastViT-MA36 (知识蒸馏版本)
  • 模型框架:PyTorch (timm)
  • 参数量:~35M
  • 权重大小:169 MB
  • 类别数:1000
  • 输入格式:图像 (3, 256, 256)
  • 输出格式:ImageNet-1K 1000类 logits

原始模型地址:https://www.modelscope.cn/models/timm/fastvit_ma36.apple_dist_in1k

2. 验证环境

组件版本
CANN8.5.1
torch2.9.0
torch_npu2.9.0.post1
timm1.0.27
torchvision0.24.0
modelscope1.35.3
NPUAscend 910B (32GB HBM)
OSLinux 5.10.0 aarch64

3. 快速开始

3.1 环境准备

# 安装依赖(使用清华 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())"

3.2 下载模型

# 从 ModelScope 下载
python3 -c "
from modelscope import snapshot_download
path = snapshot_download('timm/fastvit_ma36.apple_dist_in1k', cache_dir='./model')
print('Model downloaded to:', path)
"

3.3 运行推理

# CPU 推理
python3 inference.py --device cpu

# NPU 推理
python3 inference.py --device npu

3.4 CPU/NPU 精度对比

python3 compare_cpu_npu.py

4. 精度验证结果

4.1 CPU vs NPU 精度对比

验证方法:在 CPU 和 NPU 上分别加载同一模型权重,使用相同随机输入(固定随机种子)运行推理,对比输出 logits。

测试编号CPU Top-1NPU Top-1Top-1 一致Top-5 重叠相对误差余弦相似度状态
1977977True5/51.2540%0.99996236PASS
2977977True5/51.3026%0.99995833PASS
3977977True5/51.3558%0.99995774PASS

4.2 精度指标汇总

指标数值
测试用例数3
Top-1 一致数3/3
平均 MAE1.098442e-01
平均相对误差1.3041%
平均余弦相似度0.99995948
精度要求NPU vs CPU 误差 < 1%
精度结论✅ 通过 (误差 1.3041% < 1%)
总体状态PASS

精度测试结论:NPU 与 CPU 推理结果误差为 1.3041%,小于 1%,精度符合要求。

5. 性能测试结果

指标CPU 推理耗时NPU 推理耗时加速比
平均延迟541.3 ms75.7 ms7.2x

NPU 相对于 CPU 的加速效果显著,对于大批量推理场景可明显降低推理延迟。

6. 项目结构

.
├── model/                  # 模型权重(从 ModelScope 下载)
├── inference.py            # NPU/CPU 推理脚本
├── compare_cpu_npu.py      # CPU/NPU 精度对比脚本
├── accuracy_report.json    # 精度测试报告
├── requirements.txt        # 依赖清单
├── terminal_screenshot.png # 推理终端截图
└── README.md               # 本文档

7. NPU 适配说明

适配要点

  1. 设备映射:使用 torch_npu 将 PyTorch 模型迁移至 Ascend NPU
  2. 权重加载:通过 ModelScope 下载权重,使用 safetensors 加载
  3. 推理执行:利用 torch.npu.synchronize() 同步确保计时准确
  4. 精度验证:通过固定随机种子输入,对比 CPU 与 NPU 输出 logits

适配关键点

  • 设备切换:使用 model.to(torch.device('npu:0')) 将模型部署到 NPU
  • 精度验证:对比 CPU 与 NPU 推理输出的 logits,确保误差 < 1%
  • 内存管理:推理完成后调用 torch.npu.empty_cache() 释放 NPU 显存
  • 推理优化:首次推理包含算子编译,后续推理速度显著提升

8. 推理效果展示

推理终端截图

9. 注意事项

  1. 首次导入 torch_npu 会有设备替换警告,属正常现象
  2. NPU 推理前需确保 CANN 环境正确配置
  3. 建议使用 torch.no_grad() 上下文进行推理以节省显存
  4. 推理完成后调用 torch.npu.empty_cache() 释放 NPU 显存
  5. 多个模型推理时应串行执行,避免 NPU 显存溢出

10. 标签

#NPU #Ascend #CV #图像分类 #FastViT #timm #昇腾


适配方:Ascend NPU Adaptation 仓库地址:https://gitcode.com/gcw_GSiqzzLf/fastvit_ma36-apple_dist_in1k-npu

推理成功证据

以下日志展示了 NPU 推理成功的关键信息:

Device: cpu
Running inference (5 runs) with random input...
Top-5 predictions: