XCiT (Cross-Covariance Image Transformer) 是一种基于交叉协方差注意力(Cross-Covariance Attention)的图像分类模型,由 Facebook AI 提出。xcit_large_24_p8_224 是 XCiT 系列中最大的模型变体,拥有 24 层 Transformer、patch size 为 8,输入分辨率为 224×224。
图像分类(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 |
该模型基于 PyTorch 框架,昇腾 NPU 适配无需修改模型结构。适配步骤:
model.to(device) 将模型迁移到 NPU关键代码:
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.05 | 0.19 |
| NPU (Ascend910B) | 24.71 | 40.47 |
NPU 推理速度约为 CPU 的 215 倍。
python3 compare_cpu_npu.py| 指标 | 值 |
|---|---|
| 最大绝对误差 (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 类别 |
|---|---|
| CPU | 539 |
| NPU | 539 |
| 一致性 | 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 上推理成功。