本文档记录 fireicewolf/wd-convnext-tagger-v3 在昇腾 NPU(Ascend910)环境的快速部署与验证结果。
本模型使用 timm 库加载,权重为 safetensors 格式。非 HuggingFace transformers 格式。act_layer="gelu_tanh" 需显式指定。
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.5.1 |
torch_npu | 2.5.1 |
CANN | 8.5.RC1 |
3x448x44810861ConvNeXt-Base(Danbooru tagger,10861 类)pip install torch torchvision pillow
pip install timm safetensorsimport torch
from safetensors import safe_open
import timm
from timm.data import create_transform
from PIL import Image
device = torch.device("npu:0" if torch.npu.is_available() else "cpu")
model = timm.create_model("convnext_base", pretrained=False,
num_classes=10861, in_chans=3, act_layer="gelu_tanh")
state_dict = {}
with safe_open("model.safetensors", framework="pt") as f:
for k in f.keys():
state_dict[k] = f.get_tensor(k)
model.load_state_dict(state_dict, strict=True)
model = model.to(device).eval()
transform = create_transform(input_size=448, is_training=False,
mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
img = Image.new("RGB", (448, 448), (128, 128, 128))
tensor = transform(img).unsqueeze(0).to(device)
with torch.no_grad():
output = model(tensor)
pred = output.argmax(-1).item()
print(f"类别: {pred}")python3 inference.py验证结果:
npu:0测试条件:FP32 / batch=1 / warmup=5 / timed=50 runs,Ascend910 单卡。
| 指标 | 数值 |
|---|---|
| 平均推理时间 | 17.3ms |
| 测试次数 | 50 |
NPU 与 CPU 输出对比,使用 4 张纯色测试图,比较 logits 一致性。
| 指标 | 数值 |
|---|---|
| Top-1 一致性 | 4/4 |
| Top-5 一致性 | 4/4 |
| 最大 logits 差异 | 0.010505 |
| 平均 KL 散度 | 0.0 |
| 结论 | PASS |
transformers 标准格式,需使用特定推理脚本