使用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_FP32dims: [3,-1,-1]}
]output[{name:"OUTPUT0"data_type: TYPE_FP32dims: [ 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端请求该服务来做验证,待我开发、验证完成后,再发文章分享给各位小伙伴,本周之内必定会完成,大家稍等几天。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

偏序关系.

一、偏序(半序)关系 偏序关系 自反反对称传递性 二、全序(线序、链)关系 三、偏序集中的重要元素 1. 极大元与极小元 极大元找所在集合的一个或几个最高点; 极小元找所在集合的一个或几个最低点。 2. 最大元与最小…

2024嵌入式系统的未来发展与技术洞察分享

时间如白驹过隙,不知不觉又是一年,这一年收获满满。接下来,将本年度对技术的感悟和洞察分析如下,希望对大家有所帮助。 在过去几十年里,嵌入式系统技术迅速发展,成为现代电子设备和智能硬件的核心组成部分。…

AQS公平锁与非公平锁之源码解析

AQS加锁逻辑 ReentrantLock.lock public void lock() {sync.acquire(1);}AbstractQueuedSynchronizer#acquire public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}addWaiter就是将节点加入…

数字电子技术基础(十五)——MOS管的简单介绍

目录 1 MOS的简单介绍 1.1 MOS简介 1.2 MOS管的基本结构 1.3 MOS管工作时的三个区域 1.4 MOSEF的结构的工作原理 1 MOS的简单介绍 1.1 MOS简介 绝缘栅型场效应管,简称MOS管,全称为金属-氧化物-半导体场效应晶体管(Metal-Oxide-Semic…

基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响

知识点: 1、传输格式&传输数据-类型&编码&算法 2、密码存储&代码混淆-不可逆&非对称性 一、演示案例-传输格式&传输数据-类型&编码&算法 传输格式 JSON XML WebSockets HTML 二进制 自定义 WebSockets:聊天交互较常…

Spark/Kafka

文章目录 项目地址一、Spark1. RDD1.1 五大核心属性1.2 执行原理1.3 四种创建方式二、Kafka2.1 生产者(1)分区器(2)生产者提高吞吐量(3) 生产者数据可靠性数据传递语义幂等性和事务数据有序2.2 Broker(1)Broker工作流程(2)节点服役和退役2.3 副本(1)Follower故障细…

10倍数据交付提升 | 通过逻辑数据仓库和数据编织高效管理和利用大数据

数据已经成为企业核心竞争力的关键要素。随着大数据技术的发展,如何高效管理和利用海量的数据,已成为企业在数字化转型过程中面临的重要课题。传统的数据仓库已经不能满足当今企业对数据处理的高效性、灵活性和实时性的需求。在这种背景下,逻…

《keras 3 内卷神经网络》

keras 3 内卷神经网络 作者:Aritra Roy Gosthipaty 创建日期:2021/07/25 最后修改时间:2021/07/25 描述:深入研究特定于位置和通道无关的“内卷”内核。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub …

Unreal Engine 5 C++ Advanced Action RPG 十章笔记

第十章 Survival Game Mode 2-Game Mode Test Map 设置游戏规则进行游戏玩法 生成敌人玩家是否死亡敌人死亡是否需要刷出更多 肯定:难度增加否定:玩家胜利 流程 新的游戏模式类游戏状态新的数据表来指定总共有多少波敌人生成逻辑UI告诉当前玩家的敌人波数 3-Survival Game M…

嵌入式产品级-超小尺寸热成像相机(从0到1 硬件-软件-外壳)

Thermal_Imaging_Camera This is a small thermal imaging camera that includes everything from hardware and software. 小尺寸热成像相机-Pico-LVGL-RTOS 基于RP2040 Pico主控与RTOS,榨干双核性能实现LVGL和成图任务并行。ST7789驱动240280屏,CST8…

AI守护煤矿安全生产:基于视频智能的煤矿管理系统架构解析

前言 本文我将介绍我和我的团队自主研发设计的一款AI产品的成果展示——“基于视频AI识别技术的煤矿安全生产管理系统”。 这款产品是目前我在创业阶段和几位矿业大学的博士共同从架构设计、开发到交付的全过程中首次在博客频道发布, 我之前一直想写但没有机会来整理这套系统的…

OCCT 之 TDF_Attribute 以及子类

一.概述 TDF_Label是OCAF中核心数据结构,与TDF_Attribute结合使用,实现对模型的各种操作。 以下摘自OCCT7.7.0官方文档 A class each application has to implement. It is used to contain the application data. This abstract class, alongwith La…

数字化时代,传统代理模式的变革之路

在数字化飞速发展的今天,线上线下融合(O2O)成了商业领域的大趋势。这股潮流,正猛烈冲击着传统代理模式,给它带来了新的改变。 咱们先看看线上线下融合现在啥情况。线上渠道那是越来越多,企业纷纷在电商平台…

Vue2+OpenLayers添加缩放、滑块缩放、拾取坐标、鹰眼、全屏控件(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 废话不多说&#xff0c;直接给完整代码&#xff0c;替换成自己的KEY即可运行&#xff1a; <template><div><div i…

Vulnhub-Tr0ll靶机笔记

Tr0ll靶机笔记 概述 靶机地址&#xff1a;https://www.vulnhub.com/entry/tr0ll-1,100/ 这台靶机比较简单&#xff0c;包含ftp的渗透&#xff0c;pcap流量包的分析&#xff0c;常规的web渗透和系统内核提权。让我们开始吧 Hack it&#xff01; 一、nmap扫描 1、端口扫描 …

高效建站指南:通过Portainer快速搭建自己的在线网站

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

Docker Compose的使用

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/docker-compose.html 目录 Docker Compose是什么Docker Compose安装Docker Compose文件Docker Compose常用命令案例&#xff1a;部署WordPress博客系统 Docker Compose是什么 Docker Compose是Docker官方的开源…

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本&#xff08;LTS&#xff09;&#xff1a;JDK 8、11、17、21&#xff1a;

python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)

公式样例 渲染前 \[\sqrt{1904.615384} \approx 43.64\] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https://mirro…

SSM宠物医院信息管理系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 宠…