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-CLIPChinese-CLIP 是中文图文跨模态检索模型。这篇带你把 PyTorch 权重两步转成可直接上线的 ONNX 与 TensorRT 引擎并附上 T4 实测时延和 MUGE zero-shot 精度对齐结果跑完一遍你就有可用的部署模型。为什么要转换PyTorch 部署的三个瓶颈上手转换之前先搞清楚要解决的痛点。直接用 PyTorch 跑 Chinese-CLIP 推理通常会撞上三个问题时延偏高。单卡 T4 上图像特征每次 11.12ms、文本特征 12.47ms离线批量勉强能忍在线图文检索服务就偏高了。跨平台麻烦。PyTorch 推理绑死 CUDA 与 GPU 环境换机器、换团队依赖就得重配一遍。ONNX 是标准模型交换格式onnxruntime 自带 CPU 和多种加速器的 provider拿走就能跑。依赖与显存开销大。PyTorch 框架拖着一整条依赖链而 TensorRT 引擎是针对当前显卡编译优化的FP16 精度下权重与中间激活再减半。这三点在在线检索服务里会同时出现查询突发性强、候选集要实时重打分、部署机器未必是 NVIDIA 卡。ONNX vs TensorRT两条路线怎么选先给结论NVIDIA GPU 上追求极致速度选 TensorRT需要 CPU 或跨平台部署选 ONNX。两条路线不是二选一——TensorRT 引擎本身就是从 ONNX 构建的转换链路固定为 PyTorch → ONNX → TensorRT。维度ONNXTensorRT定位跨平台推理CPU/GPU/各类加速器NVIDIA GPU 专用极致加速运行时onnxruntimetrt Runtime对版本敏感ViT-B/16 图像时延T4, ms11.12 → 4.9211.12 → 3.58工程成本低中需对齐环境版本产物.onnx附 .extra_file.trt 引擎判断方法很简单先问服务最终跑在什么硬件上再问对时延要求多苛刻。如果团队已有 onnxruntime 服务框架选 ONNX 就是零迁移成本方案。部署环境清单与一条命令装好版本不匹配是转换报错的第一大来源先把版本钉死后面能省掉大量排错时间。组件版本说明GPUVolta 架构及以上如 T4需支持 FP16 Tensor CoreCUDA11.6实测环境为 11.6cuDNN8.6.0必须与 TensorRT 版本匹配TensorRT8.5.2.2转换与运行版本必须一致ONNX / onnxruntime-gpu1.13.0 / 1.13.1FP16 转换另需 onnxmltools 1.11.1PyTorch1.12.1cu116建议直接 pip 安装 CUDA 11.6 轮子安装命令pip install tensorrt8.5.2.2 onnx1.13.0 onnxruntime-gpu1.13.1 onnxmltools1.11.1 pip install torch1.12.1cu116 torchvision0.13.1cu116 pip install -r requirements.txtcuDNN 请装系统级 8.6.0不要再用 conda 装一份 cudatoolkit版本很容易被覆盖掉导致 TensorRT 构建时报错。后面所有实测数据都基于这套组合。转换实操从 PyTorch 到 ONNX 再到 TensorRT 整条转换是固定两步流水线在项目根目录按顺序跑命令均用相对路径。第一步PyTorch → ONNX脚本是cn_clip/deploy/pytorch_to_onnx.py。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-path原始 PyTorch 权重路径缺省则自动下载官方预训练权重--save-onnx-path输出文件名前缀跑完得到 文本/图像 × FP32/FP16 共四个文件--convert-text / --convert-vision分别指定是否转换文本、图像编码器注意 FP16 的 .onnx 会附带一个 .extra_file它是模型的一部分后续不要移动或改名。第二步ONNX → TensorRT脚本是cn_clip/deploy/onnx_to_tensorrt.py。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--text-onnx-path / --vision-onnx-path第一步产出的两个 FP16 ONNX 文件--save-tensorrt-path输出前缀生成 .txt.fp16.trt 与 .img.fp16.trt--fp16构建 FP16 引擎前提是显卡有 Tensor Core耗时视模型规模几分钟到十几分钟日志出现 Finished ONNX to TensorRT conversion... 即完成。跑通验证最小推理示例与输出对齐 ✅转换是否成功标准只有一个三方输出对齐。同一输入下PyTorch、ONNX、TensorRT 的特征归一化后必须基本一致才算通过。ONNX 图像特征提取最小示例import onnxruntime from PIL import Image from cn_clip.clip.utils import image_transform session onnxruntime.InferenceSession(deploy/vit-b-16.img.fp16.onnx, providers[CUDAExecutionProvider]) image image_transform(224)(Image.open(examples/pokemon.jpeg)).unsqueeze(0) feats session.run([unnorm_image_features], {image: image.cpu().numpy()})[0]TensorRT 更短from cn_clip.deploy.tensorrt_utils import TensorRTModel trt TensorRTModel(deploy/vit-b-16.img.fp16.trt) feats trt(inputs{image: image.cuda()})[unnorm_image_features]ONNX 与 TRT 模型都只接受 batch 大小为 1 的输入多张图请循环调用。算相似度时内积要先乘上模型的 logit_scale.exp()官方预训练约为 100再 softmax与 PyTorch 用法完全一致。核对方法一句话归一化后的图像特征与杰尼龟 / 妙蛙种子 / 小火龙 / 皮卡丘四条候选文本做内积皮卡丘概率在三个框架下分别为 9.4523e-01、9.4523e-01、9.4504e-01差异小于 0.1%即对齐。实测数据推理时延与精度对照 ⚡先看结论ViT-B/16 图像时延 11.12ms → 3.58ms约 3.1 倍文本 12.47ms → 1.54ms约 8 倍精度无可见损失。测试环境为单卡 T416GBFP16batch size 1各跑 100 次取平均。时延ms/样本模型图像PyTorch / ONNX / TRT文本PyTorch / ONNX / TRTRN5012.93 / 5.04 /1.363.64 / 0.95 /0.58ViT-B/1611.12 / 4.92 /3.5812.47 / 3.42 /1.54ViT-L/1421.19 / 17.10 /13.0812.45 / 3.48 /1.52ViT-L/14336px47.11 / 48.40 /31.5912.24 / 3.25 /1.54ViT-H/1435.10 / 34.00 /26.9823.98 / 6.01 /3.89模型越小TensorRT 收益越大RN50 图像 12.93 → 1.36ms放大 9.5 倍大模型 ViT-H/14 计算量主导ONNX 与 TRT 的差距收窄但方向一致。文本侧收益普遍大于图像侧文本编码器计算密度低对框架开销更敏感。精度MUGE 检索 zero-shotR1 / R5格式ViT-B/16 R1 / R5ViT-H/14 R1 / R5PyTorch FP1652.1 / 76.763.0 / 84.1ONNX FP1652.0 / 76.863.1 / 84.1TensorRT FP1652.0 / 76.863.1 / 84.2精度差异在 ±0.2 以内与换一台机器带来的浮动同量级可以认为 FP16 转换不掉点。想复现测速把对应模型路径传给 speed_benchmark.py 即可。常见坑与解法这几个报错出现频率最高按现象对号入座TensorRT 构建报错日志提示 cuDNN 版本不匹配→ 固定 cuDNN 8.6.0 搭配 TensorRT 8.5.x并且不要用 conda 再装 cudatoolkit。转换好的 .trt 到目标机器加载失败→ 运行环境的 TensorRT 版本必须与转换时一致对齐不了就直接用官方预转换的 TRT 模型。移动 ONNX 目录后报找不到 extra_file→ FP16 的 .onnx 把小张量拆到 .extra_file 里并按路径引用文件不要移动、不要改名或干脆重新转换。ONNX 输出与 PyTorch 对不上→ 先查输入序列长度是否与转换时的 context-length默认 52一致再查是否传了 batch 大于 1 的输入最后核对 FP16/FP32 精度选择是否对得上。选型速查一句话一个场景用的时候直接查CPU 或非 NVIDIA 硬件跨平台部署 → ONNXNVIDIA GPU 追求极致时延 → TensorRT FP16RN50 / ViT-B/16 这类小模型 → 优先 TensorRT收益最大自定义微调过的权重 → 依次走 PyTorch → ONNX → TensorRT不能跳步环境版本记不住 → 直接抄 CUDA 11.6 cuDNN 8.6.0 TensorRT 8.5.2.2 这套到这里转换、验证、实测都跑完了小模型上 3~8 倍的时延收益拿到手精度基本无损。完整的环境细节与下载说明看 deployment.md转换、推理与测速的全部脚本都在 cn_clip/deploy/ 目录里直接取用即可。【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址: https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
openclaw插件配 TaoToken:settings.json 骨架与报错排查 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:23:10
Modbus RTU波形与时序实战:从示波器到CRC校验 1. 这不是教科书,是我在产线盯了72小时波形后撕下来的笔记Modbus RTU不是协议栈里一个抽象的名词,它是PLC和温控表之间那根485线缆上真实跑着的电平跳变、是示波器探头底下抖动的AB差分电压、是CRC校验失败时温控表面板上一闪而过的Err-03红灯。我手边这… · 2026/9/26 10:23:10
看懂Linux内核:从调度、内存到系统调用全链路解析 想真正看懂 Linux 内核的人,大多不是想背几个名词,而是想弄明白一个核心问题:操作系统到底在我这台机器上干了什么?无论你是写 Java 的后端、调 C 的嵌入式开发,还是搞云原生天天跟容器打交道,只要程序跑在… · 2026/9/26 10:23:10
原生JavaScript手写轮播图组件:原理、实现与避坑指南 轮播图听起来简单,写起来翻车的概率一点都不低。如果把“轮播图(JavaScript)”拿到实际开发里做一遍,你会发现它远不是把图片横向排开、再定时往左移动 100% 那么简单:自动播放和手动切换的配合、定时器的清理、边界条… · 2026/9/26 11:36:00
ACL 2025中稿10篇背后:通义实验室代码智能与对话智能的工程化落地路径 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 11:35:48
物联网设备安全防护链:TLS加密通信与数据安全擦除的工程方案 物联网设备的安全威胁模型
物联网设备的安全问题这两年被放大了。大量设备直接暴露在公网,用默认密码、明文HTTP传输、固件可被逆向提取。2025年某智慧水务系统被入侵,攻击者就是通过截获设备的明文MQTT通信篡改了传感器数据,导致告警系统误报… · 2026/9/26 11:35:42
VCC、VDD、VEE、VSS、VBAT供电标识全解析 1. 这些字母组合不是密码,是电路世界的“门牌号”刚入行那会儿,我蹲在实验室里调一块STM32最小系统板,焊完发现RTC不走时——明明晶振起振了,代码也烧进去了,可万用表一量,VBAT引脚电压只有0.8V。当时盯着原… · 2026/9/26 11:35:42
掌控 Rust 双向链表:从 `LinkedList<T>` 源码到高阶实践的 2000 字深度剖析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 11:35:36
OpenClaw AI Agent跨平台部署教程:飞书Teams接入与踩坑实录 最近AI圈子里突然流行起一句话:"你领养龙虾了吗?"乍一看以为是宠物博主在整活,点进技术群才发现,大家说的是开源的AI Agent框架OpenClaw。这个名字本身就带梗——Claw和龙虾钳子脱不开关系,社区索性把"… · 2026/9/26 11:35:30
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46