m0_74196153/vit_base_patch16_clip_224.openai
模型介绍文件和版本Pull Requests讨论分析

vit_base_patch16_clip_224.openai - NPU 适配

适用于昇腾 NPU(910B4)的 OpenAI CLIP ViT-B/16 图像编码器。

模型说明

  • 架构:ViT-Base(12 层,768 隐藏维度,12 头)
  • ** patch 大小**:16x16
  • 输入尺寸:224x224
  • 输出:512 维 CLIP 图像嵌入
  • 参数:8600 万
  • 原始来源:通过 timm 实现的 OpenAI CLIP 视觉编码器

环境

组件版本
torch2.9.0
torch-npu2.9.0.post1
timm1.0.27
transformers4.57.6
NPUAscend910B4

文件

文件说明
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 对比):

指标FP32FP16
余弦相似度0.9999870.999988
平均绝对误差0.0017900.001732
最大绝对误差0.0277540.025086
验证结果✅✅

性能(Ascend910B4):

批次大小FP32 (毫秒)FP16 (毫秒)
117.2021.03
414.7219.95
818.5814.71

权重来源

模型权重来自 GitCode:https://gitcode.com/hf_mirrors/timm/vit_base_patch16_clip_224.openai

关键适配步骤

  1. 从 ModelScope/GitCode 加载 OpenCLIP 检查点(open_clip_model.safetensors)
  2. 将 OpenCLIP 格式的 visual.* 键映射到 timm VisionTransformer 格式
  3. 特殊处理:visual.proj → head.weight(转置),head.bias = 零值
  4. 将模型移至 npu:0 设备
  5. 标准 CLIP 归一化:均值=[0.48145466, 0.4578275, 0.40821073],标准差=[0.26862954, 0.26130258, 0.27577711]

无需进行算子级修改——模型可通过 torch_npu 在昇腾 NPU 上直接运行。

下载使用量0