Triton算法服务部署:初识与试用【Hello world】

0. 写在前面 

Triton Inference Server 是一款开源推理服务软件,可简化 AI 推理。其可以部署来自多个深度学习和机器学习框架的任何 AI 模型,包括 TensorRT、TensorFlow、PyTorch、ONNX、OpenVINO、Python、RAPIDS FIL 等。Triton 支持在 NVIDIA GPU、x86 和 ARM CPU 或 AWS Inferentia 上跨云、数据中心、边缘和嵌入式设备进行推理。Triton 推理服务器为许多查询类型提供优化的性能,包括实时、批量、集成和音频/视频流。

 一句话总结Triton的用法将训练好的模型通过配置文件指定运行参数,利用Trition Server将模型部署在后台,用户可以通过接口调用算法服务获取推理结果

这种模型部署方式其实和我们用Flask、Django、GRPC部署类似,只不过Triton提供了丰富的算法实例配置方式以及调度方式。

通过将算法推理过程服务化,我们就可以专注于模型的前后处理部分以及后续的算法逻辑内容,只在需要进行模型推理时调用一下接口即可。这种方式的好处也是显而易见的:同一种算法,只需部署一次,即可用于其他各种pipline中,提高了复用性。

举个例子,业务上有很多个需求分支,有的需要做行人跟踪,有的需要做人体属性识别,有的需要判断行人的各种行为,它们都需要一个基础模型——人体检测,这个时候,如果我们每个业务分支都实例化一个人体检测,那势必造成显存、内存等资源的浪费,而如果将其服务化,则只需每个业务分支在需要时通过接口从服务器调用一下即可。

下面,我们参考官方文档给出一个最简单的测试、试用Triton的方式。

1. Triton用法之Hello World

1.1 创建模型仓库

先clone 官方的Server代码:

git clone https://github.com/triton-inference-server/server.git

然后进到docs/examples目录下,并下载需要的模型:

cd docs/examples
./fetch_models.sh

这一步需要注意,直接运行上述脚本,可能会报无法连接SSL的错误,可以通过将脚本中的https改为http来解决:

1.2 拉取server镜像并启动服务

前置条件:需要安装好支持Nvidia GPU的docker

先拉取Triton的Server的镜像:

# 其中的23.04可以替换为你想用的其他版本
docker pull nvcr.io/nvidia/tritonserver:23.04-py3

然后即可通过命令启动Server:

# 其中的23.04可替换为其他版本,path_to_server需要改为上面clone的server的路径
docker run --gpus=1 --rm -p8000:8000 -p8003:8003 -p8002:8002 -v path_to_server/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:23.04-py3 tritonserver --model-repository=/models

启动后,看到如下内容即表示服务启动成功:

启动server后,可以通过以下命令测试一下是否能连上:

curl -v localhost:8000/v2/health/ready

展示如下形式的内容,表示连接成功:

 1.3 拉取client镜像并进行测试

client这里一般都是自己写的,比如我们之前已有的一些算法推理内容中已经包含了算法的前后处理、模型推理、算法逻辑,现在只把其中的模型推理部分替换为通过Triton调用即可。

这里为了快速测试,我们使用官方提供的一个镜像:

# 其中的23.04可以替换为其他版本
docker pull nvcr.io/nvidia/tritonserver:23.04-py3-sdk

拉取镜像后,启动一个容器,进入其中,并进行测试:

# 1. 进入容器
docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:23.04-py3-sdk
# 2. 执行测试
/workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg

执行测试后,看到如下结果,表示测试成功(使用的图像是个马克杯,测试结果top3分别是马克杯、杯子、咖啡杯):

参考:

Quickstart — NVIDIA Triton Inference Server

Triton 推理服务器 | NVIDIA 开发者

https://github.com/triton-inference-server/server

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】哈希表

文章目录 哈希概念哈希冲突哈希函数哈希表闭散列开散列 开散列与闭散列比较 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 哈希概念 顺…

微服务项目部署

启动rabbitmq \RabbitMQ\rabbitmq_server-3.8.2\sbin 找到你的安装路径 找到\sbin路径下执行这些命令即可 rabbitmqctl status //查看当前状态 rabbitmq-plugins enable rabbitmq_management //开启Web插件 rabbitmq-server start //启动服务 rabbitmq-server stop //停止服务…

不需要联网的ocr项目

地址 GitHub - plantree/ocr-pwa: A simple PWA for OCR, based on Tesseract. 协议 mit 界面 推荐理由 可以离线使用,隐私安全

python自动化测试实战 —— 自动化测试框架的实例

软件测试专栏 感兴趣可看:软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识: 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

【XR806开发板试用】基于FreeRTOS的SoftAp配网实现

1.环境搭建 由于电脑上之前就有开发其他设备用的ubuntu18.06虚拟机环境,就在此环境基础上进行开发。基本环境搭建参考官方文档进行: 全志XR806开发板开发环境搭建 2.功能实现 2.1设计思路 从官方下载的SDK开发包project/example目录下有基本功能实现…

扫盲运动—字节序

1 大端、小端字节序 术语“大端”和“小端”表示多个字节值的哪一端(小端或大端)存储在该值的起始地址。 大端:将高序字节存储在起始地址,这称为大端(big-endian)字节序小端:将低序字节存储在…

03-详解Nacos注册中心的配置步骤和功能

Nacos注册中心 服务注册到Nacos Nacos是SpringCloudAlibaba的组件也遵循SpringCloud中定义的服务注册和服务发现规范,因此使用Nacos与使用Eureka对于微服务来说并没有太大区别 主要差异就是依赖不同,服务地址不同 第一步: 在父工程cloud-demo模块的pom.xml文件中引入Spring…

现代信号处理实验:MATLAB实现LD算法进行AR估计

MATLAB实现LD算法进行AR估计 利用给定的一组样本数据估计一个平稳随机信号的功率谱密度称为功率谱估计,又称谱估计。谱估计的方法可以分成经典谱估计和现代谱估计。 经典谱估计又称为非参数化的谱估计,分为直接法和间接法。直接法是指直接计算样本数据…

C# WPF上位机开发(增强版绘图软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们写过一个绘图软件,不过那个比较简单,主要就是用鼠标模拟pen进行绘图。实际应用中,另外一种使用比较多的…

MySQL笔记-第18章_MySQL8其它新特性

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第18章_MySQL8其它新特性1. MySQL8新特性概述1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1:窗口函数2.1 使用窗口…

最新鸿蒙HarmonyOS4.0开发登陆的界面1

下载deveco-studio 说明一下,本人只是学习中,现在只是拿着vue及uniapp的经验在一点一点的折腾,不过现在看来,鸿蒙入门并不是很难。也许是自己没有深入下去。 https://developer.harmonyos.com/cn/develop/deveco-studio#download…

谈谈常用的分布式ID的设计方案?

典型回答 首先,我们需要明确通常的分布式ID定义,基本的要求包括: 全局唯一,区别于单点系统的唯一,全局是要求分布式系统内唯一。 有序性,通常都需要保证生成的ID是有序递增的。例如,在数据库存…

循环神经网络-RNN记忆能力实验 [HBU]

目录 一、循环神经网络 二、循环神经网络的记忆能力实验 三、数据集构建 数据集的构建函数 加载数据并进行数据划分 构造Dataset类 四、模型构建 嵌入层 SRN层 五、模型训练 训练指定长度的数字预测模型 多组训练 损失曲线展示 六、模型评价 参考《神经网络与深度…

SpringCloud系列(一)| SpringCloud简介

上个系列中,我们已经介绍完了SpringBoot的用法,简单概述 springBoot Spring X, 就是对于Spring和其他技术的融合 进行了简化开发,所以x可以代表任何技术,比如 mybtis, mybatisPlus, redis.... 对于集成这些常用框架,…

SpringBoot之请求的详细解析

1. 请求 在本章节呢,我们主要讲解,如何接收页面传递过来的请求数据。 1.1 Postman 之前我们课程中有提到当前最为主流的开发模式:前后端分离 在这种模式下,前端技术人员基于"接口文档",开发前端程序&…

电流测量原理

由于直接测量电流信号是很难的,但是测试电压信号比较容易,因此通常都是先将电流信号转换为电压信号,将电压信号进行调理后送至 CPU,CPU 通过 AD 转换得到一个码值,软件读出该码值,先根据主控的硬件设计参数…

【送书活动】探究AIGC、AGI、GPT和人工智能大模型

文章目录 前言01 《ChatGPT 驱动软件开发》推荐语 02 《ChatGPT原理与实战》推荐语 03 《神经网络与深度学习》推荐语 04 《AIGC重塑教育》推荐语 05 《通用人工智能》推荐语 后记赠书活动 前言 人工智能技术在过去几年中发展迅猛,得益于大数据、云计算、深度学习等…

爬虫 scrapy (十一)

目录 一、scrapy shell 1.什么是scrapy shell? 2.安装 ipython 3.使用scrapy shell 二、当当网案例 1.在items.py中定义数据结构 2.在dang.py中解析数据 3.使用pipeline保存 4.多条管道的使用 5.多页下载 参考 一、scrapy shell 1.什么是scrapy shell&am…

设计模式(2)--对象创建(3)--工厂方法

1. 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。 2. 四种角色 抽象产品、具体产品、抽象构造者、具体构造者 3. 优点 3.1 仅处理抽象产品(Product)接口 3.2 给子类一个钩子(hook)以提供对象的扩展版本(父…

C/C++ 快乐数: 编写一个算法来判断一个数n是不是快乐数

题目: 编写一个算法来判断一个数n是不是快乐数。 快乐数的定义: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过…