基于 ViT-Large (L) 架构的 SigLIP(Sigmoid Loss for Language Image Pre-Training)多模态视觉模型。该模型使用 Sigmoid 损失函数进行图文对比学习训练,适用于图像特征提取、图文检索、零样本分类等任务。
该模型权重基于 open_clip 预训练权重,原始训练数据集为 WebLI。
图像特征提取(多模态对比学习)
PyTorch + open_clip
torch>=2.0.0
torch_npu>=2.0.0
open_clip_torch>=2.24.0
safetensors>=0.4.0
Pillow>=10.0.0该模型为标准 ViT 架构,基于 open_clip 加载。NPU 适配过程无需对模型代码做任何修改。
pip install torch torch_npu open_clip_torch safetensors Pillowpip install modelscope
python -c "from modelscope.hub.snapshot_download import snapshot_download; snapshot_download('timm/ViT-L-16-SigLIP-256')"python inference.py --image test.jpg --device npu| 指标 | CPU | NPU |
|---|---|---|
| 推理耗时 | 3.0502s | 0.2116s |
| 加速比 | - | 14.42x |
| 索引 | CPU 输出 | NPU 输出 | 绝对误差 |
|---|---|---|---|
| 0 | 0.025194 | 0.025278 | -8.5e-05 |
| 1 | -0.010171 | -0.009845 | -0.000326 |
| 2 | 0.007128 | 0.007338 | -0.00021 |
| 3 | -0.002937 | -0.003014 | 7.7e-05 |
| 4 | -0.00191 | -0.001777 | -0.000133 |
| 5 | -0.002695 | -0.002599 | -9.7e-05 |
| 6 | 0.005559 | 0.005671 | -0.000112 |
| 7 | -0.019337 | -0.019263 | -7.5e-05 |
| 8 | 0.006173 | 0.005938 | 0.000235 |
| 9 | 0.00422 | 0.004049 | 0.000171 |
| 指标 | 数值 |
|---|---|
| 最大绝对误差 | 0.00067155 |
| 平均绝对误差 | 0.00011988 |
| 最大相对误差 | 0.187582% |
| 余弦相似度 | 0.99998814 |
| CPU 推理时间 | 3.0502s |
| NPU 推理时间 | 0.2116s |
NPU 与 CPU 推理结果误差 < 1%,精度对齐验证通过。
| 设备 | 推理耗时 (s) | 加速比 |
|---|---|---|
| CPU | 3.0502 | 1.00x (baseline) |
| NPU (Ascend910) | 0.2116 | 14.42x |
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0012%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+CV #+图像特征 #+ViT #+多模态 #+昇腾 #+Ascend910 #+SigLIP #+ViT-Large
运行 python3 inference.py --image test.jpg --device npu 的输出:
$ python3 inference.py --image test.jpg --device npu
Loading ViT-L-16-SigLIP-256 on npu...
Model loaded. Running inference on test.jpg...
Inference time: 0.2116s
Image features shape: torch.Size([1, 1024])
Feature vector (first 10): [see results.json for full output]
Done.运行 python3 compare_cpu_npu.py 的输出:
$ python3 compare_cpu_npu.py
Model: ViT-L-16-SigLIP-256
Image: (256, 256)
--- CPU Inference ---
Time: 3.0502s
--- NPU Inference ---
Time: 0.2116s
--- Precision Comparison ---
model: ViT-L-16-SigLIP-256
cpu_time_s: 3.0502
npu_time_s: 0.2116
speedup: 14.42
max_abs_diff: 0.00067155
mean_abs_diff: 0.00011988
max_rel_diff_pct: 0.187582
cosine_similarity: 0.99998814
precision_pass: True
PASSED: NPU vs CPU error < 1%
本 README 由 model-agent 自动生成,基于昇腾 NPU 实际测试数据。