Triton Inference Server教程2
本文介绍如何编写一个config文件,config.pbtxt文件中包含哪些可以配置的参数,这些参数又会对triton server产生什么影响。
必须指定的模型参数
- platform/backend:模型要在什么backend上面运行,可以用两种参数指定,一个是platform,一个是backend,对于某些模型,两个参数二选一即可,某些模型必须从中选一个指定,具体的规则如下:
图中TensorRT,onnx RT,PyTorch三种模型可以platform或者backend随便指定一个即可;对于Tensorflow,platform平台是必须指定的,backend平台是可选的;对于OpenVINO、python、DALI,backend是必须指定的 - max batch size 模型执行推理最大的batch是多少,这个参数主要是限制推理中模型参数不会超过模型显存,或者gpu内存,保证推理服务不会因为爆显存而挂掉
- input and output:指定输入输出名称
特别的,当模型是由TensorRT、Tensorflow、onnx生成的,且设置strict-model-config=false时,可以不需要config.pbtxt文件。
配置文件示例说明
- 配置1:
指定platform:
max batch size = 8:注意,若max batch size大于0,默认网络的batch大小可以是动态调整的,在网络输入维度dims参数可以不指定batch大小。
输入输出参数:包括名称、数据类型、维度 - 配置2:
指定platform:
max batch size = 0:此时,这个维度不支持可变长度,网络输入维度dims参数必须显式指定每个维度的大小,这里也可以设置batch大于0,比如维度【2,3,224,224】。
输入输出参数:包括名称、数据类型、维度 - 配置3:
指定platform:pytorch_libtorch
max batch size = 8:这个维度支持可变长度。
输入输出参数:
包括名称、数据类型、**格式、**维度。
对于pytorch_libtorch的模型,不包含输入输出的具体信息,因此,对于输入输出名称,有特殊的格式:字符串+两个下划线+数字,必须是这种结构。
若模型支持可变维度,则可变的维度可以设置为-1。 - 配置4:
reshape应用:
max batch size = 0:维度不包含batch维度,但是若模型要求包含这个维度,就可以使用reshape,将其reshape成[1,3,224,224],就可以满足应用需求
可选的配置参数
除上述参数,配置文件中还可以设置其他参数。
1. version_policy:配置版本信息
model repository可以包含多个多个版本模型,因此,在配置文件中可以设定具体执行哪个模型。
如上图所示,version_policy可以有3种配置
All:表示model repository中所有模型都可以加载,若使用该配置,执行的时候model repository中所有模型都会加载。
Latest:只执行最新的版本,最新指版本数字最大的,若使用该配置,则只选择最新的模型加载。
Specific:执行指定版本。若使用该配置,需设定指定的版本号,加载时只加载指定的相应版本。
2. Instance_group:它对应triton一个重要的feature:concurrent model inference,就是在一个Triton server上对同一个模型开启多个execution instance,可以并行的在GPU上执行,从而提高GPU的利用率,增加模型的吞吐。
Instance_group:表示运行在同一设备上的一组model instance。
count:指定每个设备上的instance数量
kind:定义设备类型,可以是cpu,也可以是GPU
gpus:定义使用哪个GPU,若不指定,默认会在每一个GPU上都运行。
Instance_group中可以指定多个group 运行在多个设备上。
3. scheduling and batching:定义Triton应使用哪种调度测量来调度客户端的请求。调度策略也是Triton一个非常重要的feature,它也可以提高GPU的利用率,增加模型的吞吐。因为如果推理的batchsize越大,GPU的利用率越高。
Triton有多种调度器:
default scheduler:默认scheduler,若不对这个参数做设置,则执行默认测量。不做batching,即模型送进来的batch是多少,则推理的batch就设定多少。
dynamic batcher:它可以在服务端将多个batchsize比较小的request组合成一个batchsize大的input tensor,从而提升GPU利用率,增加吞吐。它只对stateless 模型有效,对于streaming视频音频流处理模型不适用(需要使用sequence模型)。它有两个关键参数需要指定:
1)preferred_batch_size:期望达到的batchsize大小,可以是一个数,也可以是一个数组,通常会在里面设置多个值。
2)max_queue_delay_microseconds:单位是微秒,打batch的时间限制,超过该时间会停止batch,超过该时间会将以打包的batch送走。
3)其他高级设置:preserve ordering:确保输出的顺序和请求送进来的顺序一致。
priority_level:可以设置优先级,
queue policy:设置排队的策略,比如时限超时则停止推理
sequence batcher:处理sequence请求。能够保证同一个streaming序列的请求送到同一个model instance执行,从而能够保证model instance的状态。
ensemble scheduler:可以组合不同的模块,形成一个pipeline
4. optimization policy
Triton中提供两种优化方式:分别针对onnx模型和tensorflow模型,可以使用下图的设置开启tensorrt加速。具体可以设置名称、tensorrt加速的精度等。
5. model warmup
有些模型在刚初始化的短时间内,执行推理时性能是不太稳定的,可能会比较慢,所以需要一个热身的过程使得推理趋于稳定。
Triton通过指定model warmup字段去定义热身过程。字段内可以指定batchsize大小、请求是如何生成的,比如随机数生成,还有数据维度、数据类型等。这样,Triton刚刚加载某个模型时候,会向模型发送热身请求。model在warmup过程中,Triton无法对外提供服务,导致模型加载较慢,完成后,client端才能使用模型推理
Triton Inference Server教程2相关推荐
- 深度学习部署神器——triton inference server入门教程指北
开新坑!准备开始聊triton. 老潘用triton有两年多了,一直想写个教程给大家.顺便自己学习学习,拖了又拖,趁着这次换版本的机会,终于有机会了写了. ![](https://img-blog.c ...
- linux如何查看jupyter日志_在Linux服务器上运行Jupyter notebook server教程
在Linux服务器上运行Jupyter notebook server教程 很多deep learning教程都推荐在jupyter notebook运行python代码,方便及时交互.但只在本地运行 ...
- SQL Server 教程
SQL Server的版本有很多,版本不同操作也会有些许不一样,本次的<SQL Server教程>是基于SQL Server的2014版本进行教学的:在开始本教程之前,您应该对 SQL S ...
- Xcode Server 教程1:入门
http://ios.jobbole.com/82240/ Xcode Server 教程1:入门 2015/09/08 · iOS开发 · Xcode Server 分享到:1 本文由 伯乐在线 - ...
- 群辉Synology NAS安装ts3语音服务器TeamSpeak3 Server教程,附带NAS安装套件
TeamSpeak3是一款团队语音聊天工具,很多游戏玩家都在使用它,连接服务器快,语音清晰,无广告等,延续优良功能,并大幅度的改进,提供了更好的稳定性和扩展性,软件强大的功能和全新的语音通讯体验,需要 ...
- 【SQL Server】阿里云CentOS安装SQL Server教程 含破解3.5G内存的限制、win端远程连接
参考博客 安装SQL Server: 参考一:https://blog.csdn.net/shengqianfeng/article/details/84572935 参考二:https://blog ...
- Docker 安装 SQL Server教程
本文教你如何快速通过Docker安装SQL Server 前置条件:服务器内存需要于2GB. 安装的版本:SQL Server2017 目录 一.拉取镜像 二.运行容器 三.进入容器 四.远程连接 五 ...
- RouterOS 建立PPTP Server教程(超详细)
根据PPTP拓扑图需求对RouterOS做如下设置. 大家能看这篇文章,证明大家网络技术水平已经超越入门级,为了节省读者阅读时间,这里就不讲基础性的知识,比如:固定IP接入.动态IP接入.宽带拨号接入 ...
- TOP Server教程:预览非标准协议创建的未来
2019独角兽企业重金招聘Python工程师标准>>> 下载TOP Server OPC Server最新版本 如果您熟悉OmniServer,您就会知道OmniServer经常用于 ...
最新文章
- [CF314C](Sereja and Subsequences)
- surfire单元测试添加jvm参数
- 7-12(图) 社交网络图中结点的“重要性”计算(30 分)
- 基于实战开发垂直搜索引擎_基于DDD的微服务设计和开发实战
- java 指针 地址压缩_JVM优化之压缩普通对象指针(CompressedOops)
- python机器学习-sklearn挖掘乳腺癌细胞(五)
- php图片滑动代码,基于mootools 1.3框架下的图片滑动效果代码_Mootools
- Python下的云计算(OpenStack技术书籍)
- 易语言-MD5加密16位和32位方法
- 开发用到的小功能、功能、网站等
- CSDN自定义模块简单设置之——添加图片、文字、链接等
- android ip冲突检测工具,android ping ip 来检测连接是否正常
- 医疗行业用户容灾备份方案
- 华为手机虚拟键盘遮挡菜单
- java微信个人订阅号发信息_微信个人公众号开发-java
- Python spider爬取高清电影
- 批量将多个文件夹整理合并到一个文件夹中
- 手机怎么模拟弱网_手游测试之模拟弱网环境测试
- logistic回归报错问题:Warning messages: 1: glm.fit:算法没有聚合 2: glm.fit:拟合機率算出来是数值零或一
- 经理人与元老能双赢联动吗?