本文介绍如何编写一个config文件,config.pbtxt文件中包含哪些可以配置的参数,这些参数又会对triton server产生什么影响。

必须指定的模型参数

  1. platform/backend:模型要在什么backend上面运行,可以用两种参数指定,一个是platform,一个是backend,对于某些模型,两个参数二选一即可,某些模型必须从中选一个指定,具体的规则如下:

    图中TensorRT,onnx RT,PyTorch三种模型可以platform或者backend随便指定一个即可;对于Tensorflow,platform平台是必须指定的,backend平台是可选的;对于OpenVINO、python、DALI,backend是必须指定的
  2. max batch size 模型执行推理最大的batch是多少,这个参数主要是限制推理中模型参数不会超过模型显存,或者gpu内存,保证推理服务不会因为爆显存而挂掉
  3. 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相关推荐

  1. 深度学习部署神器——triton inference server入门教程指北

    开新坑!准备开始聊triton. 老潘用triton有两年多了,一直想写个教程给大家.顺便自己学习学习,拖了又拖,趁着这次换版本的机会,终于有机会了写了. ![](https://img-blog.c ...

  2. linux如何查看jupyter日志_在Linux服务器上运行Jupyter notebook server教程

    在Linux服务器上运行Jupyter notebook server教程 很多deep learning教程都推荐在jupyter notebook运行python代码,方便及时交互.但只在本地运行 ...

  3. SQL Server 教程

    SQL Server的版本有很多,版本不同操作也会有些许不一样,本次的<SQL Server教程>是基于SQL Server的2014版本进行教学的:在开始本教程之前,您应该对 SQL S ...

  4. Xcode Server 教程1:入门

    http://ios.jobbole.com/82240/ Xcode Server 教程1:入门 2015/09/08 · iOS开发 · Xcode Server 分享到:1 本文由 伯乐在线 - ...

  5. 群辉Synology NAS安装ts3语音服务器TeamSpeak3 Server教程,附带NAS安装套件

    TeamSpeak3是一款团队语音聊天工具,很多游戏玩家都在使用它,连接服务器快,语音清晰,无广告等,延续优良功能,并大幅度的改进,提供了更好的稳定性和扩展性,软件强大的功能和全新的语音通讯体验,需要 ...

  6. 【SQL Server】阿里云CentOS安装SQL Server教程 含破解3.5G内存的限制、win端远程连接

    参考博客 安装SQL Server: 参考一:https://blog.csdn.net/shengqianfeng/article/details/84572935 参考二:https://blog ...

  7. Docker 安装 SQL Server教程

    本文教你如何快速通过Docker安装SQL Server 前置条件:服务器内存需要于2GB. 安装的版本:SQL Server2017 目录 一.拉取镜像 二.运行容器 三.进入容器 四.远程连接 五 ...

  8. RouterOS 建立PPTP Server教程(超详细)

    根据PPTP拓扑图需求对RouterOS做如下设置. 大家能看这篇文章,证明大家网络技术水平已经超越入门级,为了节省读者阅读时间,这里就不讲基础性的知识,比如:固定IP接入.动态IP接入.宽带拨号接入 ...

  9. TOP Server教程:预览非标准协议创建的未来

    2019独角兽企业重金招聘Python工程师标准>>> 下载TOP Server OPC Server最新版本 如果您熟悉OmniServer,您就会知道OmniServer经常用于 ...

最新文章

  1. [CF314C](Sereja and Subsequences)
  2. surfire单元测试添加jvm参数
  3. 7-12(图) 社交网络图中结点的“重要性”计算(30 分)
  4. 基于实战开发垂直搜索引擎_基于DDD的微服务设计和开发实战
  5. java 指针 地址压缩_JVM优化之压缩普通对象指针(CompressedOops)
  6. python机器学习-sklearn挖掘乳腺癌细胞(五)
  7. php图片滑动代码,基于mootools 1.3框架下的图片滑动效果代码_Mootools
  8. Python下的云计算(OpenStack技术书籍)
  9. 易语言-MD5加密16位和32位方法
  10. 开发用到的小功能、功能、网站等
  11. CSDN自定义模块简单设置之——添加图片、文字、链接等
  12. android ip冲突检测工具,android ping ip 来检测连接是否正常
  13. 医疗行业用户容灾备份方案
  14. 华为手机虚拟键盘遮挡菜单
  15. java微信个人订阅号发信息_微信个人公众号开发-java
  16. Python spider爬取高清电影
  17. 批量将多个文件夹整理合并到一个文件夹中
  18. 手机怎么模拟弱网_手游测试之模拟弱网环境测试
  19. logistic回归报错问题:Warning messages: 1: glm.fit:算法没有聚合 2: glm.fit:拟合機率算出来是数值零或一
  20. 经理人与元老能双赢联动吗?

热门文章

  1. MySQL使用ssl连接,java通过ssl连接数据库
  2. leetcode 寻找两个有序数组的中位数 hard
  3. 代码忍者通过CoderDojo获得“腰带”
  4. 获得CRC校验码的途径
  5. 高手过招,洛谷之提高历练地,博弈论(3-6)
  6. 手机淘宝性能优化全记录
  7. 项目管理之软件测试,项目管理之PDCA
  8. Mybatis入门学习(八、懒加载)
  9. docker镜像加速国内镜像站大全
  10. Unity - 遮挡剔除(Occlusion Culling)优化