适用于昇腾 NPU(910B4)的 OpenAI CLIP ViT-B/16 图像编码器。
| 组件 | 版本 |
|---|---|
| torch | 2.9.0 |
| torch-npu | 2.9.0.post1 |
| timm | 1.0.27 |
| transformers | 4.57.6 |
| NPU | Ascend910B4 |
| 文件 | 说明 |
|---|---|
inference.py | 推理包装器(CPU/NPU) |
vit_clip_npu_adapt.py | 精度验证 + 性能基准测试 |
eval_vit_clip.py | 结构化评估脚本 |
config.json | 模型配置 |
eval_output/ | 验证报告 |
from inference import ViTCIPInference
import torch
# NPU inference
model = ViTCIPInference(device="npu:0", dtype=torch.float32)
embedding = model.embed(image) # returns numpy array [1, 512]精度(CPU FP32 与 NPU 对比):
| 指标 | FP32 | FP16 |
|---|---|---|
| 余弦相似度 | 0.999987 | 0.999988 |
| 平均绝对误差 | 0.001790 | 0.001732 |
| 最大绝对误差 | 0.027754 | 0.025086 |
| 验证结果 | ✅ | ✅ |
性能(Ascend910B4):
| 批次大小 | FP32 (毫秒) | FP16 (毫秒) |
|---|---|---|
| 1 | 17.20 | 21.03 |
| 4 | 14.72 | 19.95 |
| 8 | 18.58 | 14.71 |
模型权重来自 GitCode:https://gitcode.com/hf_mirrors/timm/vit_base_patch16_clip_224.openai
open_clip_model.safetensors)visual.* 键映射到 timm VisionTransformer 格式visual.proj → head.weight(转置),head.bias = 零值npu:0 设备无需进行算子级修改——模型可通过 torch_npu 在昇腾 NPU 上直接运行。