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

xcit_large_24_p8_224 昇腾 NPU 适配

模型介绍

XCiT (Cross-Covariance Image Transformer) 是一种基于交叉协方差注意力(Cross-Covariance Attention)的图像分类模型,由 Facebook AI 提出。xcit_large_24_p8_224 是 XCiT 系列中最大的模型变体,拥有 24 层 Transformer、patch size 为 8,输入分辨率为 224×224。

  • 模型架构:XCiT-large (24 layers, 16 heads, 768 dim)
  • 输入尺寸:224 × 224
  • patch size:8 × 8
  • 参数量:约 189M
  • 预训练数据:ImageNet-1k

原始模型地址

  • ModelScope: timm/xcit_large_24_p8_224.fb_in1k
  • HuggingFace: timm/xcit_large_24_p8_224.fb_in1k

任务类型

图像分类(Image Classification)

模型框架

PyTorch + timm

输入格式

(batch_size, 3, 224, 224) 的浮点张量,值范围为 [0, 1] 或经标准化的 ImageNet 输入。

输出格式

(batch_size, 1000) 的 logits 张量,对应 ImageNet-1k 的 1000 个类别。

依赖环境

依赖版本要求
Python>= 3.9
PyTorch>= 2.0.0
torch_npu>= 2.0.0
timm>= 1.0.0
modelscope>= 1.0.0
NumPy>= 1.20.0

NPU 适配说明

该模型基于 PyTorch 框架,昇腾 NPU 适配无需修改模型结构。适配步骤:

  1. 使用 modelscope 下载模型权重到本地缓存
  2. 通过 timm 创建模型并加载本地权重
  3. 调用 model.to(device) 将模型迁移到 NPU
  4. 直接执行推理

关键代码:

import torch
import timm
from modelscope import snapshot_download

model_dir = snapshot_download("timm/xcit_large_24_p8_224.fb_in1k")
model = timm.create_model("xcit_large_24_p8_224.fb_in1k", pretrained=False)
state_dict = safetensors.torch.load_file(f"{model_dir}/model.safetensors")
model.load_state_dict(state_dict)
model = model.to("npu:0").eval()

环境准备

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision torch_npu timm modelscope safetensors numpy Pillow
source /usr/local/Ascend/ascend-toolkit/set_env.sh
npu-smi info

推理命令

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

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

推理结果

设备平均推理耗时 (ms)吞吐量 (samples/sec)
CPU (Intel Xeon)5314.050.19
NPU (Ascend910B)24.7140.47

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

CPU/NPU 精度测试方法

python3 compare_cpu_npu.py

CPU/NPU 精度测试结果

Logits 对比

指标值
最大绝对误差 (Max Abs Error)1.259342e-02
平均绝对误差 (Mean Abs Error)3.060688e-03

概率输出对比

指标值
最大绝对误差 (Max Abs Error)1.583586e-05
平均绝对误差 (Mean Abs Error)3.095804e-06

Top-1 类别一致性

设备Top-1 类别
CPU539
NPU539
一致性100%

结论

NPU 与 CPU 推理结果误差 < 1%(最大概率误差为 0.0016%),精度完全满足要求。

精度结论

基于现有评测数据,CPU 与 NPU 的 平均绝对误差 精度误差为 0.3061%,小于 1% 的精度要求。

运行截图

终端运行截图

推理成功证据

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

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

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

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

模型标签

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