本文档记录 ConvNextV2-atto-1k-224(源自 facebook/convnextv2-atto-1k-224)在华为昇腾 NPU 上的适配与验证结果。
ConvNextV2 是 ConvNeXt 架构的改进版本,atto 为最小变体(hidden sizes: [40, 80, 160, 320]),用于 ImageNet 图像分类(1000 类)。
相关获取地址:
| 组件 | 版本 |
|---|---|
| torch | 2.x |
| torch-npu | 最新 |
| transformers | 4.x |
| NPU | Ascend 910 |
直接使用 PyTorch + transformers 加载模型进行推理(非 vLLM):
import torch
from transformers import AutoImageProcessor, ConvNextV2ForImageClassification
from PIL import Image
device = torch.device("npu:0" if torch.npu.is_available() else "cpu")
model = ConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-atto-1k-224")
model = model.to(device)
model.eval()
processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-atto-1k-224")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
predicted_class = outputs.logits.argmax(-1).item()python3 inference.py预期输出:
npu:0[1, 1000]| 指标 | 数值 |
|---|---|
| 设备 | Ascend NPU (npu:0) |
| 输入尺寸 | [1, 3, 224, 224] |
| 预热次数 | 5 |
| 测试次数 | 20 |
| 平均推理时间 | 4.53 ms |
| 模型参数量 | ~5.8M (atto) |
NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标):
| 指标 | 数值 |
|---|---|
| 测试用例数 | 1 |
| 最大 logits 差异 | 0.007561 |
| 预测一致性 | 1/1 |
| 精度要求 | NPU vs CPU 最大 logits 误差 < 1% |
| 精度结论 | 一致 |
精度评测源代码和日志详见 eval/ 目录。