g
gcw_C8PI9e90/dm_nfnet_f1.dm_in1k-npu
模型介绍文件和版本Pull Requests讨论分析

dm_nfnet_f1 NPU 部署与推理

模型介绍

dm_nfnet_f1 dm_in1k 是 NFNet(Normalization-Free Net)系列的一个变体。NFNet 由 DeepMind 提出,基于 ResNet 架构但去除了所有 Batch Normalization 层,使用梯度裁剪和自适应梯度缩放技术来维持训练稳定性。该模型在 ImageNet-1K 上预训练,适用于图像分类任务。

  • 原始模型地址: https://www.modelscope.cn/models/timm/dm_nfnet_f1.dm_in1k
  • 任务类型: 图像分类
  • 模型框架: PyTorch + timm
  • 输入格式: RGB 图像(224×224)
  • 输出格式: 类别概率分布(1000 类)
  • 参数量: ~34M
  • 输入数据: 单张图像,3 通道 RGB,分辨率 224×224

NPU 适配说明

本模型已适配昇腾 Ascend 910 NPU,支持在 NPU 上进行推理。核心适配工作包括:

  1. 使用 torch.npu 将模型加载到 NPU 设备。
  2. 使用 torch.npu.synchronize() 确保 NPU 同步执行。
  3. 对 NPU 进行 3 轮 warmup 后再执行正式推理。
  4. 单测结果已完成 CPU 与 NPU 的精度对比验证。

环境准备

系统要求

  • Python 3.11+
  • Ascend 910 NPU
  • CANN 8.5.1+
  • torch 2.0+
  • torch-npu 2.0+

安装依赖

pip install torch torch-npu timm Pillow safetensors

推理方法

使用推理脚本

# CPU 推理
python3 inference.py --model dm_nfnet_f1.dm_in1k --device cpu --image test.jpg

# NPU 推理
python3 inference.py --model dm_nfnet_f1.dm_in1k --device npu --image test.jpg

推理结果

CPU 推理结果

Model: dm_nfnet_f1 dm_in1k
Device: cpu
Time: 1.1068s
Top-1: class 906
Top-5: [906, 885, 699, 641, 772]

NPU 推理结果

Model: dm_nfnet_f1 dm_in1k
Device: npu
Time: 0.0212s
Top-1: class 906
Top-5: [906, 885, 699, 641, 772]

CPU/NPU 精度对比

精度测试方法

  1. 分别在 CPU 和 NPU 上加载同一模型权重。
  2. 使用相同的输入图像,经过相同的预处理流程。
  3. 对比 CPU 与 NPU 的输出 logits,计算以下指标:
    • MAE(平均绝对误差)
    • MSE(均方误差)
    • 最大绝对误差
    • 余弦相似度
    • Top-100 平均相对误差
    • Top-1 分类一致性
    • Top-5 分类一致性

精度测试结果

指标值
MAE0.00101619
MSE0.00000170
最大绝对误差0.00724125
余弦相似度0.99999934
Top-100 平均相对误差0.0752%
Top-1 分类一致是
Top-5 重叠数5/5
Top-1 (CPU)906
Top-1 (NPU)906
Top-5 (CPU)[906, 885, 699, 641, 772]
Top-5 (NPU)[906, 885, 699, 641, 772]

结论:NPU 与 CPU 推理结果误差 < 1%,精度完全满足要求。

精度结论

基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0001%,小于 1% 的精度要求。

精度结论

基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0001%,小于 1% 的精度要求。

性能对比

设备推理耗时
CPU1.1068 s
NPU0.0212 s
加速比52.12×

运行截图

运行截图

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

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

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

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。

模型标签

  • #+NPU
  • #+CV
  • #+图像分类
  • #+昇腾
  • #+NFNet
  • #+dm_nfnet
  • #+timm
下载使用量0