使用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.rhkb.cn/news/5313.html

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

相关文章

人工智能之深度学习_[3] -PyTorch自动微分模块和构建线性回归模型

文章目录 自动微分模块9.1 梯度基本计算9.2 梯度下降法求最优解9.3 梯度计算注意点9.4 自动微分模块应用 10 PyTorch构建线性回归模型 自动微分模块 自动微分就是自动计算梯度值,也就是计算导数。 什么是梯度 对函数求导的值就是梯度 什么是梯度下降法 是一种求最优梯度值的方法…

logback日志自定义占位符

前言 在大型系统运维中,很大程度上是需要依赖日志的。在java大型web工程中,一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用,比如线程号【%t】、时间【%d】、日志等级【%p】,…

Qt中自定义信号与槽

在学习信号和槽的时候,我们知道信号一般对应的就是用户的行为,槽指的是接受到信号后的响应,在类内有许多的内置信号和槽函数,能够去实现一些常见的行为,但实际业务开发中,尤其是接受到信号的响应会根据具体…

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用. 本地部署,注重隐私,简单高效的MYSQL审计平台。 它可以通过流程审批,实现真实线上环境sql的审核和执行,还可以回滚执行,能够确保线上SQL更新的可靠性…

【Python项目】小区监控图像拼接系统

【Python项目】小区监控图像拼接系统 技术简介:采用Python技术、B/S框架、MYSQL数据库等实现。 系统简介:小区监控拼接系统,就是为了能够让业主或者安保人员能够在同一时间将不同地方的图像进行拼接。这样一来,可以很大程度的方便…

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器,支持MASM、TASM等多种汇编编译器,Windows界面,支持语法高亮,自带一个资源编辑器和一个调试器。 一、汇编IDE工具:RadASM RadASM有内置的语言包 下载地址:RadASM asse…

基于STM32的智能门锁安防系统(开源)

目录 项目演示 项目概述 硬件组成: 功能实现 1. 开锁模式 1.1 按键密码开锁 1.2 门禁卡开锁 1.3 指纹开锁 2. 功能备注 3. 硬件模块工作流程 3.1 步进电机控制 3.2 蜂鸣器提示 3.3 OLED显示 3.4 指纹与卡片管理 项目源代码分析 1. 主程序流程 (main…

AUTOSAR OS模块详解(三) Alarm

AUTOSAR OS模块详解(三) Alarm 本文主要介绍AUTOSAR OS的Alarm,并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。 文章目录 AUTOSAR OS模块详解(三) Alarm1 简介2 功能介绍2.1 触发原理2.2 工作类型2.3 Alarm启动方式2.4 Alarm配置2.5…

YOLO目标检测1

一. 参考资料 《YOLO目标检测》 by 杨建华博士 二. 背景 2.1 目标检测发展简史 2014年,RCNN问世,R-CNN的思路是先使用一个搜索算法从图像中提取出若干感兴趣区域(region of interest,RoI),然后使用一个卷积神经网络(convolutio…

【Qt 常用控件】显示类控件——QLabel

目录 1.QLabel 1.1 textFormat 文本类型 普通文本和富文本 Markdown格式 1.2 alignment 文本对齐方式 1.3 wordWrap 自动换行 1.4 indent 文本缩进 1.5 margin 边距 1.6 buddy,qlabel伙伴 1.7 pixmap图片 和 scaledContents自动填充 1.QLabel 功能&#x…

vif-方差膨胀因子计算

vif-方差膨胀因子 使用statsmodels中的variance_inflation_factor,数据集使用乳腺癌数据集 import pandas as pd import numpy as np from sklearn.datasets import load_breast_cancer from tqdm import notebook from statsmodels.stats.outliers_influence impor…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键,或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中,点击“性能”标签页,找到CPU使用记录区域&#xff0c…

数据恢复常见故障(四)关键信号的耦合电容撞件后导致SATA前端通信异常

数据恢复常见故障(四)关键信号耦合电容撞件后导致SATA前端通信异常 SATA固态硬盘SATA差分信号上有耦合电容,电容被撞件后,偏移,导致接触不良,引起SATA前端信号通信异常,故障现象表现为不认盘&a…

[HCTF 2018]WarmUp

题目&#xff1a;一上来给了个图片还是很懵的&#xff0c;于是尝试查看一下源代码&#xff1a;发现有提示&#xff1a;于是访问source.php得到了php代码&#xff1a;(这里将代码和代码分析放一块) <?phphighlight_file(__FILE__); class emmm{public static function chec…

MYSQL数据库基础-01.数据库的基本操作

数据库的语法是大小写不敏感的&#xff0c;可以使用大写&#xff0c;也可以使用小写。 每条语句要以&#xff1b;结尾&#xff0c;可以多行输入。 名称不能是关键字,若想用关键字命名,要用反引号 引起来。 目录 一.数据库的基本操作 1.创建数据库&#xff1a; 2.查看数据库…

Decode Global专注金融创新,构建便捷的交易平台

随着金融市场持续进阶&#xff0c;越来越多的年轻正在涌入金融交易的体系中&#xff0c;针对当下年轻人崇尚精简&#xff0c;优中取优的特点&#xff0c;Decode Global紧跟金融市场发展的步伐&#xff0c;不断创新体验&#xff0c;致力于打造一个精简快捷&#xff0c;安全便捷的…

系统思考—转型

我们大多数问题的来源是&#xff1a;人们的思考方式与大自然的运作方式之间的差异。——葛雷果利贝特森&#xff08;人类学家、生物学家及系统思考先驱&#xff09; 在企业转型的过程中&#xff0c;许多企业创始人常常面临一个困境——过去的成功经验和旧有的思维方式&#xf…

Flutter:carousel_slider 横向轮播图、垂直轮播公告栏实现

安装依赖 carousel_slider: ^5.0.01、垂直滚动公告栏 import package:carousel_slider/carousel_options.dart;// 垂直滚动公告栏Widget _buildNotice() {return <Widget>[<Widget>[TDImage(assetUrl: "assets/img/home11.png",width: 60.w,height: 60.w…

【二叉树的深搜】计算布尔二叉树的值 求根节点到叶节点数字之和

文章目录 2331. 计算布尔二叉树的值解题思路&#xff1a;后序遍历129. 求根节点到叶节点数字之和解题思路&#xff1a;深度优先搜索 前序遍历 2331. 计算布尔二叉树的值 2331. 计算布尔二叉树的值 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节…

【高阶数据结构】布隆过滤器(BloomFilter)

1. 概念 1.1 背景引入 背景&#xff1a;在计算机软件中&#xff0c;一个常见的需求就是 在一个集合中查找一个元素是否存在 &#xff0c;比如&#xff1a;1. Word 等打字软件需要判断用户键入的单词是否在字典中存在 2. 浏览器等网络爬虫程序需要保存一个列表来记录已经遍历过…