使用tritonserver完成clip-vit-large-patch14图像特征提取模型的工程化。

1、关于clip-vit-large-patch14模型

关于openapi开源的clip-vit-large-patch14模型的特征提取,可以参考之前的文章:Elasticsearch向量检索需要的数据集以及768维向量生成这篇文章详细介绍了模型的下载地址、使用方式、测试脚本,可以让你一步实现图片特征的提取,如果你想搭建一个图片搜搜索服务,也可以参考这篇文章:Golang+Elasticsearch轻松搭建AI时代的图片搜索服务今天要讨论的不同于以往,我们要实现的是,通过nvidia的开源框架tritonserver完成openai这个模型的工程化,对外可以通过http、grpc轻松获取任一图片的特征。这篇文章也是之前承诺的,说到做到。

2、triton自定义backend的实现

首先还是简单回顾一下triton自定义banckend的实现,openai开源的这个模型,无法直接使用triton进行工程化,所以我们需要编写一个自定义的python backend,关于triton backend的实现,可以参考如下文章:tritonserver学习之五:backend实现机制tritonserver学习之六:自定义c++、python custom backend实践,triton自定义python banckend的实现还是比较低成本的,只要实现三个api即可。

复制代码
def initialize(self, args)
def execute(self, requests)
def finalize(self)

看函数的名字,大家应该都能理解,三个函数分别为:初始化、执行推理、退出,finalize称为析构我觉着更贴切,就是释放掉整个推理过程中所申请的临时资源。

实现代码我会放到github上(https://github.com/liupengh3c/career),由于篇幅关系,就不贴在这里了。

接下来,设计该backend的输入以及输出,输入就是一张图片,格式为:不限制宽高、图片为3通道,输出就是一个768维的特征向量,那么对于triton架构中模型的配置编写如下:

复制代码
name:"clip-vit-large-patch14"
backend:"python"
input [
	{
		name:"INPUT0"
		data_type: TYPE_FP32
		dims: [3,-1,-1]
	}
]

output[
	{
		name:"OUTPUT0"
		data_type: TYPE_FP32
		dims: [ 768 ]
	}
]
instance_group[{ kind: KIND_CPU }]

因为没有gpu卡,所以【instance_group】这个字段就设置将服务运行在cpu上。

接下来需要按照triton的要求,对backend的目录重新组织一下,首先设定自定义backend的名称为:clip-vit-large-patch14,目录格式如下:

其中:

  • 【1】代表版本号。

  • 【clip-vit-large-patch14】文件夹为openai的原始模型。

  • 【config.pbtxt】为模型配置文件。

  • model.py】为python backend的实现。

到这里,自定义backend、配置文件、模型目录都已设置完毕,接下来serve该模型。

3、拉取tritonserver最新docker镜像

复制代码
docker pull nvcr.io/nvidia/tritonserver:24.12-py3

启动镜像,并将backend路径映射到容器内:

复制代码
docker run --rm -p8000:8000 -p8001:8001 -p8002:8002 -it -v /Users/liupeng/Documents/career/career/triton_backend:/models nvcr.io/nvidia/tritonserver:24.12-py3

在容器中安装backend依赖:

复制代码
pip3 install transformers
pip3 install torch
pip3 install pillow

启动tritonserver:

复制代码
tritonserver --model-repository=/models

对于triton的使用,我们可以参考这篇文章:tritonserver学习之一:triton使用流程,启动后打印如下:

可以看到,我们的新模型成功启动啦~~~~~~~~~~~。

模型已成功serve,但是模型是否能够正常抽取图片特征,则需要去实现tritonserver client端请求该服务来做验证,待我开发、验证完成后,再发文章分享给各位小伙伴,本周之内必定会完成,大家稍等几天。

相关推荐
阿正的梦工坊几秒前
Search-R1:用强化学习训练LLM推理并利用搜索引擎
人工智能·机器学习·搜索引擎·llm
焦耳加热几秒前
中国石油大学/天津大学《CEJ》突破:0.5秒极速“烧”制合金膜,实现CO₂到甲酸近100%高效转化
人工智能·科技·能源·制造·材料工程
ERROR:991 分钟前
野路子:把海量文档一次性转换成多个PPT
开发语言·人工智能·c#
其美杰布-富贵-李1 分钟前
Conv1d(一维卷积)深度学习学习笔记
笔记·深度学习·学习
图导物联2 分钟前
厂区地图导航系统:基于北斗/GPS+蓝牙 iBeacon 的开发方案,破解 “定位不准、调度混乱、安全薄弱” 三大痛点
大数据·人工智能·物联网
PPIO派欧云4 分钟前
PPIO上线Prompt Cache:让模型调用更快、更省、更稳
大数据·人工智能·prompt
ChaITSimpleLove7 分钟前
使用 .net10 构建 AI 友好的 RSS 订阅机器人
人工智能·.net·mcp·ai bot·rss bot
高洁019 分钟前
DNN案例一步步构建深层神经网络
人工智能·神经网络·算法·机器学习·transformer
找方案12 分钟前
我的 all-in-rag 学习笔记:初识 RAG—— 让 AI 从 “闭卷考试“ 变 “开卷考“
人工智能·笔记·学习·rag·all-in-rag
小小8程序员13 分钟前
图文排版天花板:Adobe InDesign 2025 安装步骤 高效排版指南:样式 + 自动化,效率翻倍
人工智能