本仓库为 timm/convnext_base.clip_laion2b 模型提供在华为昇腾 NPU 上的适配推理、性能测试与精度验证脚本。
原始权重来源:https://huggingface.co/laion/CLIP-convnext_base_w-laion2B-s13B-b82K
| 属性 | 数值 |
|---|---|
| 架构 | ConvNeXt Base |
| 参数量 | 88.22M |
| 输入尺寸 | [3, 256, 256] |
| 分类数 | 640 |
| 预训练标签 | clip_laion2b |
pip install torch torchvision timm pillow说明:
torch_npu需根据您的 CANN 版本安装,请参考昇腾官方文档。
modelscope download --model timm/convnext_base.clip_laion2b --local_dir ./weight/convnext_base.clip_laion2b在 NPU 上执行单图推理:
python3 inference.py --device npu --image assets/dog.jpgLoading model on NPU...
Loading image from assets/dog.jpg...
Input tensor shape: torch.Size([1, 3, 256, 256])
Output shape: torch.Size([1, 640])
Output top-5 values: [2.2282383 1.1283001 1.1260693 0.99978167 0.98627335]
Output top-5 indices: [493 505 526 97 125]
Inference completed successfully!本模型通过
model.to("npu")直接加载到 NPU 运行,无需对第三方库进行 monkey-patch。
测试不同 batch size 下的推理延迟与吞吐量:
python3 benchmark.py --device npu| Batch Size | 平均延迟 (ms) | 吞吐量 (samples/s) |
|---|---|---|
| 1 | 14.802 | 67.56 |
| 2 | 16.028 | 124.78 |
| 4 | 18.564 | 215.47 |
| 8 | 24.214 | 330.38 |
| 16 | 35.435 | 451.53 |
对比 NPU 与 CPU 基线的输出一致性:
python3 accuracy.py --batch_size 1| 指标 | 数值 |
|---|---|
| MSE | 0.000003 |
| MAE | 0.001318 |
| 范围归一化相对误差 (%) | 0.030748 |
| 余弦相似度 | 0.999989 |
| 最大绝对差 | 0.011655 |
| Top-1 一致率 | 100% |
| Top-5 一致率 | 100% |
验证结论:通过 — 范围归一化相对误差 = 0.0307% < 1%,余弦相似度 = 0.999989
| 文件 | 说明 |
|---|---|
inference.py | NPU 单图推理脚本 |
benchmark.py | 多 batch 延迟与吞吐量测试 |
accuracy.py | NPU 与 CPU 精度对比 |
assets/dog.jpg | 测试用示例图片 |
output/ | 运行日志 |
@inproceedings{liu2022convnet,
title={A convnet for the 2020s},
author={Liu, Zhuang and Mao, Hanzi and Wu, Chao-Yuan and Feichtenhofer, Christoph and Darrell, Trevor and Xie, Saining},
booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition},
pages={11976--11986},
year={2022}
}