| 组件 | 版本 |
|---|---|
| CANN | 8.5.1 |
| torch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| timm | 1.0.27 |
| Python | 3.11.14 |
| NPU | Ascend 910B |
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torch_npu timm Pillow numpy safetensors modelscopepython -c "from modelscope import snapshot_download; snapshot_download('timm/mixer_b16_224.miil_in21k')"# CPU推理
python inference.py --device cpu
# NPU推理
python inference.py --device npu
# CPU vs NPU精度对比
python compare_cpu_npu.py| 设备 | 推理耗时 (ms) | Top-1 标签 |
|---|---|---|
| CPU | 485.95 | Unknown |
| NPU | 4.93 | Unknown |
加速比:98.61x
| 指标 | 值 |
|---|---|
| Logits 余弦相似度 | 0.99999321 |
| 概率最大差异 | 0.0232% |
| Top-1 匹配 | 是 |
| Top-5 重叠 | 5/5 |
精度测试结论:NPU与CPU推理结果误差为0.02%,小于1%,精度通过。
import torch
import torch_npu
import timm
from PIL import Image
from timm.data import resolve_data_config, create_transform
# 加载模型到NPU
model = timm.create_model('mixer_b16_224.miil_in21k', pretrained=True).to('npu:0')
model.eval()
# 预处理
transform = create_transform(**resolve_data_config({}, model=model))
img = transform(Image.open('test.jpg').convert('RGB')).unsqueeze(0).to('npu:0')
# 推理
with torch.no_grad():
torch.npu.synchronize()
output = model(img)
torch.npu.synchronize()
probs = torch.nn.functional.softmax(output.cpu()[0], dim=0)#+NPU #+昇腾 #+图像分类 #+CV #+PyTorch #+timm #+MLPMixer
以下日志展示了 NPU 推理成功的关键信息:
CPU Top-1: class 3963 (unknown)
NPU Top-1: class 3963 (unknown)
Top-1 Match: True
Top-5 Overlap: 5/5