新闻详情

新闻详情

首页 / 资讯中心 / 详情

推理提速 3 倍:Chinese-CLIP ONNX/TensorRT 转换与加速完整指南

发布时间:2026/9/26 7:40:51来源:尧图网络
推理提速 3 倍:Chinese-CLIP ONNX/TensorRT 转换与加速完整指南
推理提速 3 倍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 是中文图文跨模态检索模型。这篇记录我们在 T4 上做的部署实战把 PyTorch 模型转成 ONNX 与 TensorRT 两种格式ViT-B/16 图像侧推理时延从 11.12ms 压到 3.58ms文本侧从 12.47ms 压到 1.54msMUGE zero-shot R1 只动 ±0.1。提速是真的精度几乎无损全程只用了仓库里两个现成脚本不用改一行模型代码。先定位瓶颈Chinese-CLIP 部署慢在哪线上每次检索 图像编码器一次前向 文本编码器一次前向 一次内积内积开销可以忽略瓶颈全在两个前向。PyTorch 前向带着框架层开销算子调度、图构建、张量搬运都摊在里面QPS 一上来GPU 时间大部分花在了这些零碎上。所以加速对象就是图像和文本这两个特征提取器把它们的计算图固化下来开销立刻降一个台阶。两条路线定位不同先想清楚要哪条格式定位ONNX跨平台通用中间格式CPU、NVIDIA、Apple Silicon、边缘设备都能跑TensorRTNVIDIA 专属推理引擎吃满 Tensor Core同卡延迟最低一张表核对硬件与软件版本环境装错最费时间先对着清单过一遍项目版本 / 要求说明GPUVolta 架构及以上必须支持 FP16 Tensor Core如 T4、A10显存16GB 及以上ViT-B/16 到 ViT-H/14 的转换与推理都够用CUDA11.6与 PyTorch cu116 版本对齐cuDNN8.6.0必须与 TensorRT 版本严格匹配TensorRT8.5.2.28.5.x 全系对应 cuDNN 8.6.0ONNX 工具链onnx 1.13.0 onnxruntime-gpu 1.13.1 onnxmltools 1.11.1onnxmltools 负责 FP16 转换PyTorch1.12.1cu116建议 pip 直装 wheel别混 conda cudatoolkitpip 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.txt注意 ONNX 工具链是两条路线的前置转 TensorRT 也要先过一遍 ONNX所以哪怕最终只用 TRT这一组包也得装齐。一条命令导出 Chinese-CLIP ONNX 模型pytorch_to_onnx.py 读入一个 .pt 预训练权重产出 4 个 ONNX 文件文本/图像 × FP32/FP16后续主要用 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-vision3 个核心参数参数作用--model-arch模型规模可选 RN50 / ViT-B-16 / ViT-L-14 / ViT-L-14-336 / ViT-H-14--pytorch-ckpt-pathPyTorch ckpt 路径必须与 model-arch 对应也可指向自训 ckpt--save-onnx-path输出路径前缀生成.txt/.img.fp16/.fp32.onnx文件--convert-text/--convert-vision是两个开关--context-length默认 52。顺带一提FP16 ONNX 附带一个.extra_file文件内部存了它的路径引用转换完别挪动目录否则加载时报找不到文件。图像侧特征提取ONNX 推理五行代码下面这段做的事会话载入图像侧引擎预处理后跑一次前向拿到未归一化的图像特征。img_session onnxruntime.InferenceSession(deploy/vit-b-16.img.fp16.onnx, providers[CUDAExecutionProvider]) image preprocess(Image.open(examples/pokemon.jpeg)).unsqueeze(0) features img_session.run([unnorm_image_features], {image: image.numpy()})[0]注意输入只吃 batch1一次处理一张图批量要自己循环。文本侧特征提取ONNX 推理五行代码文本侧同理给两条中文候选词分词填充长度 52和转换时一致算出文本特征。txt_session onnxruntime.InferenceSession(deploy/vit-b-16.txt.fp16.onnx, providers[CUDAExecutionProvider]) text clip.tokenize([杰尼龟, 妙蛙种子], context_length52) features txt_session.run([unnorm_text_features], {text: text.numpy()})[0]拿到归一化特征后和图像特征内积再 softmax 就是相似度操作和 PyTorch 版完全一样。ONNX 转 TensorRT 引擎--fp16 参数速查onnx_to_tensorrt.py 吃上一步的两个 ONNX 文件构建出两个.trt引擎python cn_clip/deploy/onnx_to_tensorrt.py \ --model-arch ViT-B-16 \ --text-onnx-path deploy/vit-b-16.txt.fp16.onnx \ --vision-onnx-path deploy/vit-b-16.img.fp16.onnx \ --save-tensorrt-path deploy/vit-b-16 \ --convert-text --convert-vision \ --fp16--fp16表示构建 FP16 精度引擎前提是卡上有 FP16 Tensor Core不开 FP16 就用--fp32构建 FP32 引擎个别对 FP16 溢出敏感的算子可以经--fp16-banned-ops指定保持 FP32。转换耗时按规模不同几分钟到十几分钟。不想自己转的话官方预训练 TensorRT 引擎基于 TensorRT 8.5.2.2 构建可直接获取模型规模图像侧引擎文本侧引擎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下载后放进 deploy/ 目录即可直接使用。另外提醒一点转换和运行如果不在同一台机器上运行环境的 TensorRT 库版本要和转换时保持一致否则加载引擎直接报错。TensorRTModel 最小推理示例tensorrt_utils.py 封装的 TensorRTModel 用法引擎路径传进去dict 传输入就能跑前向。from cn_clip.deploy.tensorrt_utils import TensorRTModel trt_model TensorRTModel(deploy/vit-b-16.img.fp16.trt) image preprocess(Image.open(examples/pokemon.jpeg)).unsqueeze(0).cuda() features trt_model(inputs{image: image})[unnorm_image_features]图像侧到此结束文本侧输入键是text序列长度 52规则和 ONNX 版一致。T4 实测Chinese-CLIP 推理时延与 MUGE 精度对照测试环境单卡 T416GB 显存、Xeon Platinum 8163 2.5GHz、64GB 内存全部 FP16、batch1。时延是 100 次特征提取的均值来自 speed_benchmark.py时延和 zero-shot 精度放同一张表模型规模任务PyTorchONNXTensorRTViT-B/16图像推理时延 (ms)11.124.923.58ViT-B/16文本推理时延 (ms)12.473.421.54ViT-H/14图像推理时延 (ms)35.1034.0026.98ViT-B/16MUGE zero-shot R1 (%)52.152.052.0ViT-H/14MUGE zero-shot R1 (%)63.062.962.9读法两句模型越小提速越大ViT-B/16 图像侧 3.1 倍、文本侧 8.1 倍ViT-H/14 这类大模型 TensorRT 优化空间小约 1.3 倍。R1 波动全部在 ±0.1 以内工程上可以直接忽略。部署踩坑速查三个最常见的⚠️cuDNN 与 TensorRT 版本不匹配TensorRT 8.5.x 必须配 cuDNN 8.6.0小版本错一位就直接加载报错。torch 建议走 pip 的 cu116 wheel 安装别在同一环境里混 conda 的 cudatoolkit这是 cuDNN 版本漂移的头号来源。⚠️onnxruntime 缺 CUDAExecutionProviderInferenceSession 建好了却回退 CPU多半是装成了 onnxruntime 而不是 onnxruntime-gpu装错一个包GPU 加速收益全丢。⚠️FP16 精度取舍FP16 引擎是提速主力3.58ms 对 11.12ms但动态范围比 FP32 窄个别算子会饱和漂移。转换脚本默认会把 LayerNorm 一类的 POWReduce 模式保留在 FP32一般直接用--fp16即可自训 ckpt 若发现精度掉把敏感算子加进--fp16-banned-ops再转一次。一句话选型ONNX 还是 TensorRT要跨平台部署CPU、其他 GPU 厂商、边缘设备选ONNX通用中间格式runtime 生态成熟。单张 NVIDIA 卡、追极致时延与 QPS选TensorRTFP16 引擎同卡延迟最低。【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址: https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

多智能体协作代码审查:从提示词到产线的架构设计与实践 2026/9/26 8:27:38

多智能体协作代码审查:从提示词到产线的架构设计与实践

1. 从提示词到产线:为什么代码审查需要多智能体代码审查这件事,做过几年开发的人都有体会——它从来不是“看一眼代码有没有语法错误”这么简单。一个合格的审查者要同时关注逻辑正确性、边界条件、安全漏洞、性能隐患、可维护性、团队规范一致性&#x…

阅读更多 →
AI图生视频实战:让唐代仕女画跳舞合集制作全攻略 2026/9/26 8:27:37

AI图生视频实战:让唐代仕女画跳舞合集制作全攻略

这次我们来看一个在传统文化素材圈和 AI 短视频圈都很火的内容类型:用 AI 让唐代仕女画像动起来跳舞,最后做成一个小合集。这类内容的重点不是概念有多复杂,而是能不能用一张静态的古代绘画或文物照片,生成一段动作自然、节奏统一…

阅读更多 →
文献管理重复条目合并判据:同一篇文献存了好几条,以哪条为准 2026/9/26 8:27:31

文献管理重复条目合并判据:同一篇文献存了好几条,以哪条为准

同一篇论文在文献管理软件里出现两三遍,删哪一条、留哪一条,常比检索本身更耗神。梳理过多份投稿前的文献清单后,我们把这件事收敛成一套可复用的判据:能核验的著录信息优先,正文引用链不能断,缺漏字段从被…

阅读更多 →
Eclipse Mosquitto 插件开发实战指南:从动态安全到消息改写的内置插件生态解析 2026/9/26 8:27:31

Eclipse Mosquitto 插件开发实战指南:从动态安全到消息改写的内置插件生态解析

物联网消息队列后端 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mosquit/mosquitto 点击查看 免费下载 Eclipse Mosquitto 在 2.x 系列中提供了完整的插件体系,允许以共享库…

阅读更多 →
11张截图到6张海报:用WorkBuddy自然语言批量重构视觉物料 2026/9/26 8:27:25

11张截图到6张海报:用WorkBuddy自然语言批量重构视觉物料

每年云栖大会的展区要做作品展示物料,今年我从布展通知里拿到一组图片素材时,心里是有点犯怵的——11张截图,有的是代码运行界面,有的是数据仪表盘,有的是产品功能页,风格、尺寸、留白完全对不上。按过去的…

阅读更多 →
Rust嵌入式机器人开发:Radxa ZERO 3W与Microduck部署实战 2026/9/26 8:27:25

Rust嵌入式机器人开发:Radxa ZERO 3W与Microduck部署实战

1. 项目缘起与整体设计思路 1.1 为什么选择 Microduck 这套方案 第一次拿到 Radxa ZERO 3W 和 Microduck 扩展板的时候,我其实没抱太大期望。这类“小板子扩展底板”的组合我玩过不少,很多都是文档写得天花乱坠,实际跑起来一堆坑。但 Microd…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉