Chinese-CLIP 部署完整实战ONNX 与 TensorRT 转换加速指南【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址: https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP本文以 Chinese-CLIP ViT-B-16 为例走通 Chinese-CLIP 部署全流程环境速配、PyTorch → ONNX → TensorRT 两级模型转换、最小推理代码以及实测推理时延与零样本精度对比面向生产级图文检索落地。选型先行什么场景用 ONNX什么场景用 TensorRT先给结论。需要跨平台CPU 或多厂商 GPU交付、快速上线的选 ONNXONNX Runtime 生态成熟、模型可携带FP16 版本开箱即用。固定 NVIDIA GPU 上追求 Chinese-CLIP TensorRT 推理加速、把时延压到最低的选 TensorRT实测 ViT-B/16 文本侧时延从 12.47ms 降到 1.54ms约 8 倍提速。两者 FP16 下与 PyTorch 的 zero-shot 图文检索精度差距在 ±0.1 以内生产可用。Chinese-CLIP 部署环境速配两条命令装齐全部依赖硬件与软件要求合并在一张表里注意版本匹配链TensorRT 8.5.x ↔ cuDNN 8.6.0 ↔ CUDA 11.6任何一环不匹配都会出现晦涩的加载报错。项目推荐版本 / 配置说明GPUNVIDIA Volta 架构及以上需配备 FP16 Tensor Core显存16GB 及以上本文测速环境为 T416GBCUDA11.6核心计算平台cuDNN8.6.0必须与 TensorRT 版本匹配TensorRT8.5.x本文 8.5.2.2高性能推理引擎ONNX / onnxruntime-gpu1.13.0 / 1.13.1中间格式与推理运行时PyTorch1.12.1直接安装 cu116 版本代码不在本地可先克隆git clone https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP然后一条命令装齐核心依赖pip install tensorrt8.5.2.2 onnx1.13.0 onnxruntime-gpu1.13.1 pip install torch1.12.1cu116 torchvision0.13.1cu116Chinese-CLIP 模型转换两级流水线PyTorch → ONNX → TensorRT TensorRT 不直接读 PyTorch checkpoint唯一路径是先转 ONNX 再建引擎。仓库 cn_clip/deploy/ 内置两个转换脚本按顺序跑完两级即可。第一步PyTorch → ONNXChinese-CLIP ONNX 转换以 ViT-B-16 为例一次导出文本侧与图像侧各得 FP32/FP16 两份文件python cn_clip/deploy/pytorch_to_onnx.py \ --model-arch ViT-B-16 \ --pytorch-ckpt-path pretrained_weights/clip_cn_vit-b-16.pt \ --save-onnx-path deploy/vit-b-16 \ --convert-text --convert-vision参数说明--model-arch模型规模可选RN50、ViT-B-16、ViT-L-14、ViT-L-14-336、ViT-H-14--pytorch-ckpt-pathPyTorch checkpoint 路径预训练或微调均可须与规模对应--save-onnx-path输出路径前缀实际生成.txt/.img×.fp32/.fp16共 4 个.onnx--convert-text/--convert-vision指定导出文本侧 / 图像侧编码器--context-length可选文本序列长度默认 52注意 FP16 文件附带一个.extra_file外置权重它与.onnx必须同目录且不可改名。第二步ONNX → TensorRTChinese-CLIP TensorRT 引擎构建用第一步的 FP16 ONNX 建引擎单个规模耗时几分钟到十几分钟python cn_clip/deploy/onnx_to_tensorrt.py \ --model-arch ViT-B-16 \ --convert-text --text-onnx-path deploy/vit-b-16.txt.fp16.onnx \ --convert-vision --vision-onnx-path deploy/vit-b-16.img.fp16.onnx \ --save-tensorrt-path deploy/vit-b-16 \ --fp16参数说明--model-arch规模须与 ONNX 输入一致--text-onnx-path/--vision-onnx-path第一步产出的两个 ONNX 文件--save-tensorrt-path输出前缀生成.txt.fp16.trt与.img.fp16.trt--fp16以 FP16 构建要求 Volta 及以上--convert-text/--convert-vision指定构建哪一侧不想自己构建可直接使用官方预转换的 FP16 引擎基于 TensorRT 8.5.2.2下载后放入deploy/即可模型规模图像侧引擎文本侧引擎RN50rn50.img.fp16.trtrn50.txt.fp16.trtViT-B/16vit-b-16.img.fp16.trtvit-b-16.txt.fp16.trtViT-L/14vit-l-14.img.fp16.trtvit-l-14.txt.fp16.trtViT-L/14336pxvit-l-14-336.img.fp16.trtvit-l-14-336.txt.fp16.trtViT-H/14vit-h-14.img.fp16.trtvit-h-14.txt.fp16.trt最小可运行示例5 行代码跑通 Chinese-CLIP TensorRT 推理转换出的引擎固定 batch1一次处理一张图或一条文本图像输入为[1,3,分辨率,分辨率]文本侧先用clip.tokenize分词、序列长度 52 与转换时--context-length保持一致。TensorRT 侧写法如下ONNX 侧同理用 onnxruntime 载入.fp16.onnx传 CPU 张量输入名image/text输出名unnorm_image_features/unnorm_text_featuresfrom cn_clip.deploy.tensorrt_utils import TensorRTModel img_engine TensorRTModel(deploy/vit-b-16.img.fp16.trt) image preprocess(Image.open(examples/pokemon.jpeg)).unsqueeze(0).cuda() feats img_engine(inputs{image: image})[unnorm_image_features] feats feats / feats.norm(dim-1, keepdimTrue) # 归一化图像特征其中preprocess由clip.utils.image_transform按模型输入分辨率生成。特征算出后图文特征内积乘以logit_scale.exp()官方预训练值为 4.6052即乘 100再 softmax即得相似概率。Chinese-CLIP 推理时延与零样本精度验证测试环境单卡 T416GB、Xeon Platinum 8163 2.5GHz16 核、64GB 内存。三种格式模型均 FP16、batch1各执行 100 次特征提取取均值ms/样本模型规模图像 PyTorch图像 ONNX图像 TensorRT文本 PyTorch文本 ONNX文本 TensorRTRN5012.935.041.363.640.950.58ViT-B/1611.124.923.5812.473.421.54ViT-L/1421.1917.1013.0812.453.481.52ViT-L/14336px47.1148.4031.5912.243.251.54ViT-H/1435.1034.0026.9823.986.013.89MUGE 图文检索 zero-shot 精度R1模型格式ViT-B/16 R1ViT-H/14 R1PyTorch52.163.0ONNX52.062.9TensorRT52.062.9结论两种格式与 PyTorch 仅差 ±0.1精度基本无损而 TensorRT 对小规模模型的提速尤为显著。Chinese-CLIP 部署常见坑位与 FAQ ⚠️cuDNN 与 TensorRT 版本不匹配TensorRT 8.5.x 必须搭配 cuDNN 8.6.0。建议随 torch cu116 轮子一并处理 cuDNN不要用 conda 安装 cudatoolkitcuDNN 版本漂移会直接导致 TRT 构建失败。FP16 建不出来Volta 之前的 GPU如 Pascal 一代没有 FP16 Tensor Core此时改用--fp32构建或升级显卡。显存不足ViT-H/14 等大规模引擎构建期显存占用较高建议 16GB 以上OOM 时换大显存机器构建一次产物可复用。extra_file 丢失ONNX FP16 权重存于外置.extra_file.onnx内记录其路径重命名或移动文件会加载失败转换时输出前缀尽量用相对路径。TRT 版本漂移.trt引擎不保证跨版本加载运行环境的 TensorRT 版本必须与构建时一致8.5.2.2。输入形状写死引擎按 batch1、文本序列 52 构建运行时要改这两个参数必须重新构建。一句话总结ONNX 负责跨平台交付TensorRT 负责极致 GPU 时延两级流水线跑完Chinese-CLIP 部署即可投产。相关资源cn_clip/deploy/转换与推理加速脚本、cn_clip/eval/ONNX/TensorRT 特征提取与评测脚本、deployment.md官方部署文档、speed_benchmark.py时延测试脚本。【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址: https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
