g
gcw_C8PI9e90/levit-128-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

LeViT-128 昇腾 NPU 适配说明

模型介绍

LeViT(LeViT: a Vision Transformer in ConvNet's Clothing for Faster Inference)是 Facebook Research 提出的一种轻量级视觉 Transformer 模型。LeViT-128 是该系列中的一个小型模型,在 ImageNet-1K 数据集上预训练,适用于图像分类任务。

LeViT 混合了卷积神经网络(CNN)和 Transformer 的优势,通过使用注意力机制和卷积操作的结合,在保持高精度的同时实现了快速的推理速度。

  • 论文: LeViT: a Vision Transformer in ConvNet's Clothing for Faster Inference
  • 原始模型: facebook/levit-128

任务类型

图像分类(Image Classification)

模型框架

  • PyTorch + Transformers

输入格式

  • RGB 图像,分辨率 224×224 像素
  • 预处理:使用 LevitImageProcessor 进行标准化处理

输出格式

  • 1000 个 ImageNet 类别的 logits 向量
  • 经过 Softmax 后的概率分布

依赖环境

依赖版本
Python3.11.14
PyTorch2.9.0
torch_npu2.9.0.post1
Transformers4.57.6
Pillow12.2.0
NumPy1.x

NPU 适配说明

该模型基于华为昇腾 Ascend 910 NPU 进行适配,主要工作包括:

  1. 从 ModelScope 下载模型权重(PyTorch 格式)
  2. 使用 Transformers 库加载模型(LevitForImageClassificationWithTeacher)
  3. 在 CPU 和 NPU 上分别运行推理
  4. 对比 CPU 和 NPU 的输出结果,验证精度一致性
  5. 记录推理性能和精度对比数据

适配要点

  • 模型加载后使用 .float() 确保 FP32 精度
  • CPU 和 NPU 使用完全相同的输入图像和预处理流程
  • 推理过程使用 10 次平均以获取稳定耗时数据
  • 每个模型测试完成后释放 NPU 显存

环境准备

# 安装依赖
pip install torch torchvision transformers Pillow numpy

# 或使用清华镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision transformers Pillow numpy

推理命令

CPU 推理

python3 inference.py --device cpu --image test.jpg

NPU 推理

python3 inference.py --device npu --image test.jpg

推理结果

使用合成测试图像(224×224 RGB)进行推理测试:

CPU 推理结果

Top-5 predictions:
  1. class 21: 33.67%
  2. class 701: 13.35%
  3. class 22: 4.16%
  4. class 128: 3.54%
  5. class 977: 2.38%

NPU 推理结果

Top-5 predictions:
  1. class 21: 33.91%
  2. class 701: 13.27%
  3. class 22: 4.20%
  4. class 128: 3.57%
  5. class 557: 2.34%

部署和推理方法

  1. 将模型放置在本地目录或通过 ModelScope 下载
  2. 使用 inference.py 脚本进行推理
  3. 推理脚本会自动加载模型并进行预处理
  4. 支持 CPU 和 NPU 两种推理模式

CPU/NPU 精度测试方法

  1. 使用相同输入图像分别在 CPU 和 NPU 上运行推理
  2. 保存 logits 和概率分布结果
  3. 对比以下指标:
    • Logits 的 MAE(平均绝对误差)、MaxAE(最大绝对误差)、RMSE(均方根误差)
    • 概率分布的 MAE 和 MaxAE
    • Logits 的余弦相似度
    • Top-1 和 Top-5 预测一致性
python3 inference.py --device cpu --image test.jpg
python3 inference.py --device npu --image test.jpg
python3 compare_cpu_npu.py

CPU/NPU 精度测试结果

指标CPUNPU误差
Top-1 类别class 21class 21一致
Top-1 概率33.67%33.91%0.24%
Logits MAE--0.00356148
Logits MaxAE--0.01721168
Logits RMSE--0.00462557
概率 MaxAE--0.246301%
余弦相似度--0.99999537

结论

NPU 与 CPU 推理误差 < 1%。所有精度指标均显示 NPU 推理结果与 CPU 推理结果高度一致,概率最大绝对误差仅 0.246301%,余弦相似度达到 0.99999537。Top-1 预测完全一致。

性能测试结果

设备平均推理耗时加速比
CPU40.17 ms1.0×
NPU (Ascend 910)9.24 ms4.3×

NPU 推理速度约为 CPU 的 4.3 倍。

模拟终端输出截图

终端输出

模型标签

  • #+NPU
  • #+CV
  • #+图像分类
  • #+Vision Transformer
  • #+昇腾
  • #+LeViT
  • #+Ascend910