LeViT(LeViT: a Vision Transformer in ConvNet's Clothing for Faster Inference)是 Facebook Research 提出的一种轻量级视觉 Transformer 模型。LeViT-384 是 LeViT 系列中最大的模型,具有 384/512/768 的隐藏维度,在 ImageNet-1K 数据集上预训练。
LeViT-384 在 LeViT 系列中拥有最强的表达能力,同时保持了高效推理的特性。
图像分类(Image Classification)
| 依赖 | 版本 |
|---|---|
| Python | 3.11.14 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| Transformers | 4.57.6 |
| Pillow | 12.2.0 |
| NumPy | 1.x |
该模型基于华为昇腾 Ascend 910 NPU 进行适配。LeViT-384 是 LeViT 系列中最大的模型,约 150MB,NPU 加速效果最为显著。
.float() 确保 FP32 精度pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision transformers Pillow numpypython3 inference.py --device cpu --image test.jpgpython3 inference.py --device npu --image test.jpg使用合成测试图像(224×224 RGB)进行推理测试:
Top-5 predictions:
1. class 21: 36.24%
2. class 701: 9.08%
3. class 549: 7.85%
4. class 128: 5.87%
5. class 405: 1.94%Top-5 predictions:
1. class 21: 36.35%
2. class 701: 9.08%
3. class 549: 7.81%
4. class 128: 5.90%
5. class 405: 1.95%inference.py 进行推理使用相同输入分别在 CPU 和 NPU 上推理,对比 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 | 误差 |
|---|---|---|---|
| Top-1 类别 | class 21 | class 21 | 一致 |
| Top-1 概率 | 36.24% | 36.35% | 0.11% |
| Logits MAE | - | - | 0.00163950 |
| Logits MaxAE | - | - | 0.00856113 |
| Logits RMSE | - | - | 0.00205914 |
| 概率 MaxAE | - | - | 0.108862% |
| 余弦相似度 | - | - | 0.99999929 |
NPU 与 CPU 推理误差 < 1%。概率最大绝对误差仅 0.108862%,余弦相似度达到 0.99999929。Top-1 和 Top-5 预测完全一致。
| 设备 | 平均推理耗时 | 加速比 |
|---|---|---|
| CPU | 124.94 ms | 1.0× |
| NPU (Ascend 910) | 9.42 ms | 13.3× |
NPU 推理速度约为 CPU 的 13.3 倍。LeViT-384 在 NPU 上的加速效果最为显著,因为大模型能更充分地利用 NPU 的计算能力。
