0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVIDIA Triton 系列文章(11):模型类别与调度器-1

NVIDIA英伟达企业解决方案 来源:未知 2023-01-11 06:35 次阅读

在 Triton 推理服务器的使用中,模型(model)类别与调度器(scheduler)、批量处理器(batcher)类型的搭配,是整个管理机制中最重要的环节,三者之间根据实际计算资源与使用场景的要求去进行调配,这是整个 Triton 服务器中比较复杂的部分。

在模型类别中有“无状态(stateless)”“有状态(stateful)”“集成(ensemble)”三种,调度器方面则有“标准调度器(default scheduler)”“集成调度器(ensemble scheduler)”两种,而标准调度器下面还有“动态批量处理器(dynamic batcher)”“序列批量处理器(sequence batcher)”两种批量处理器。

模型类别与调度器/批量处理器之间存在一些关联性,以下整理出一个简单的配合表格,提供大家参考:

类别

调度器

批量处理器

使用场景

无状态

标准调度器

动态批量处理器

面向各自独立的推理模型

有状态

标准调度器

序列批量处理器

处理存在交互关系的推理模型组

集成

集成调度器

创建复杂的工作流水线

接下去就要为这几个管理机制的组合进行说明,由于内容较多并且不均衡,特别是“有状态模型”与“集成模型”两部分的使用是相对复杂的,因此这些组合会分为三篇文章来进行较为深入的说明。

1. 无状态(Stateless)模式:

这是 Triton 默认的模型模式,最主要的要求就是“模型所维护的状态不跨越推理请求”,也就是不存在与其他推理请求有任何交互关系,大部分处于最末端的独立推理模型,都适合使用这种模式,例如车牌检测最末端的将图像识别成符号的推理、为车辆识别颜色/种类/厂牌的图像分类等,还有 RNN 以及具有内部内存的类似模型,也可以是无状态的。

2. 有状态(Stateful)模式:

很多提供云服务的系统,需要具备同时接受多个推理请求去形成一系列推理的能力,这些推理必须路由到某些特定模型实例中,以便正确更新模型维护的状态。此外,该模型可能要求推理服务器提供控制信号,例如指示序列的开始和结束。

Triton 服务器提供动态(dynamic)与序列(sequence)两种批量处理器(batcher),其中序列批量处理器必须用于这种有状态模式,因为序列中的所有推理请求都被路由到同一个模型实例,以便模型能够正确地维护状态。

序列批量处理程序还需要与模型相互传递信息,以指示序列的开始、结束、具有可执行推理请求的时间,以及序列的关联编号(ID)。当对有状态模型进行推理请求时,客户端应用程序必须为序列中的所有请求提供相同的关联编号,并且还必须标记序列的开始和结束。

下面是这种模式的控制行为有“控制输入”“隐式状态管理”“调度策略”三个部分,本文后面先说明控制输入的内容,另外两个部分在下篇文章内讲解。

(1) 控制输入(control inputs)

为了使有状态模型能够与序列批处理程序一起正确运行,模型通常必须接受 Triton 用于与模型通信的一个或多个控制输入张量。

模型配置的sequence_batching里的control_input部分,指示模型如何公开序列批处理程序应用于这些控件的张量。所有控件都是可选的,下面是模型配置的一部分,显示了所有可用控制信号的示例配置:

05204e62-9136-11ed-bfe3-dac502259ad0.png

  • 开始(start):

这个输入张量在配置中使用“CONTROL_SEQUENCE_START”指定,上面配置表明模型有一个名为“START”的输入张量,其数据类型为 32 位浮点数,序列批量处理程序将在对模型执行推理时定义此张量。

START 输入张量必须是一维的,大小等于批量大小,张量中的每个元素指示相应批槽中的序列是否开始。上面配置中“fp32_false_true”表示,当张量元素等于 0 时为“false(不开始)”、等于 1 时为“ture(开始)”

  • 结束(End):

结束输入张量在配置中使用“CONTROL_SEQUENCE_END”指定,上面配置表明模型有一个名为“END”的输入张量,具有 32 位浮点数据类型,序列批处理程序将在对模型执行推理时定义此张量。

END 输入张量必须是一维的,大小等于批量大小,张量中的每个元素指示相应批槽中的序列是否开始。上面配置中“fp32_false_true”表示,当张量元素等于 0 时为“false(不结束)”、等于 1 时为“ture(结束)”。

  • 准备就绪(Ready):

就绪输入张量在配置中使用“CONTROL_SEQUENCE_READY”指定,上面配置表明模型有一个名为“READY”的输入张量,其数据类型为 32 位浮点数,序列批处理程序将在对模型执行推理时定义此张量。

READY 输入张量必须是一维的,大小等于批量大小,张量中的每个元素指示相应批槽中的序列是否开始。上面配置中“fp32_false_true”表示,当张量元素等于 0 时为“false(未就绪)”、等于1时为“ture(就绪)”。

  • 关联编号(Correlation ID):

关联编号输入张量在配置中使用“CONTROL_SEQUENCE_CORRID”指定,上面置表明模型有一个名为“CORRID”的输入张量,其数据类型为无符号 64 位整数,序列批处理程序将在对模型执行推理时定义此张量。

CORRID 张量必须是一维的,大小等于批量大小,张量中的每个元素表示相应批槽中序列的相关编号。

(2) 隐式状态管理(implicit State Management)

这种方式允许有状态模型将其状态存储在 Triton 服务器中。当使用隐式状态时,有状态模型不需要在模型内部存储推理所需的状态。不过隐式状态管理需要后端(backend)支持。目前只有 onnxruntime_backend 和 tensorrt_backend 支持隐式状态。

下面是模型配置的一部分,在sequence_batching配置中的 state 部分,就是用于指示该模型正在使用隐式状态:

sequence_batching {
  state  [
    {
       input_name: "INPUT_STATE"
       output_name: "OUTPUT_STATE"
       data_type: TYPE_INT32
      dims:  [ -1 ]
    }
  ]
}

这里做简单的说明:

  • 字段说明:

  • input_name 字段:指定将包含输入状态的输入张量的名称;
  • output_name 字段:描述由包含输出状态的模型生成的输出张量的名称;
  • dims 字段:指定状态张量的维度。

  • 执行要点:

  • 序列中第 i 个请求中模型提供的输出状态,将用作第 i+1 个请求中的输入状态;
  • 当 dims 字段包含可变大小的维度时,输入状态和输出状态的尺度不必匹配;
  • 出于调试目的,客户端可以请求输出状态。为了实现这个目的,模型配置的输出部分必须将输出状态(OUTPUT_STATE)列为模型的一个输出;
  • 由于需要传输额外的张量,从客户端请求输出状态可能会增加请求延迟。

默认情况下,序列中的启动请求包含输入状态的未初始化数据。模型可以使用请求中的开始标志来检测新序列的开始,并通过在模型输出中提供初始状态来初始化模型状态,如果模型状态描述中的 dims 部分包含可变尺度,则 Triton 在开始请求时将每个可变尺寸设置为“1”。对于序列中的其他非启动请求,输入状态是序列中前一个请求的输出状态。

对于状态初的初始化部分,有以下两种状况需要调整:

  • 启动请求时:则模型将“OUTPUT_STATE”设置为等于“INPUT”张量;

  • 非启动请求时:将“OUTPUT_STATE”设为“INPUT”和“INPUT_STATE”张量之和。

除了上面讨论的默认状态初始化之外,Triton 还提供了“从 0 开始”与“从文件导入”两种初始化状态的机制。下面提供两种初始化的配置示例:

052f0830-9136-11ed-bfe3-dac502259ad0.png

两个配置只有粗体部分不一样,其余内容都是相同的,提供读者做个参考。

以上是关于有状态模型的“控制输入”与“隐式状态管理”的使用方式,剩下的“调度策略”部分,会在后文中提供完整的说明。


原文标题:NVIDIA Triton 系列文章(11):模型类别与调度器-1

文章出处:【微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英伟达
    +关注

    关注

    22

    文章

    3772

    浏览量

    91005

原文标题:NVIDIA Triton 系列文章(11):模型类别与调度器-1

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NVIDIA推出全新生成式AI模型Fugatto

    NVIDIA 开发了一个全新的生成式 AI 模型。利用输入的文本和音频,该模型可以创作出包含任意的音乐、人声和声音组合的作品。
    的头像 发表于 11-27 11:29 341次阅读

    NVIDIA NIM助力企业高效部署生成式AI模型

    Canonical、Nutanix 和 Red Hat 等厂商的开源 Kubernetes 平台集成了 NVIDIA NIM,将允许用户通过 API 调用来大规模地部署大语言模型
    的头像 发表于 10-10 09:49 386次阅读

    NVIDIA新增生成式AI就绪系统认证类别

    借助全新的 NVIDIA Spectrum-X Ready 和 NVIDIA IGX 认证,领先的制造业合作伙伴将提供高性能系统,帮助客户轻松部署 AI。
    的头像 发表于 10-10 09:44 364次阅读

    NVIDIA CorrDiff生成式AI模型能够精准预测台风

    NVIDIA GPU 上运行的一个扩散模型向天气预报工作者展示了加速计算如何实现新的用途并提升能效。
    的头像 发表于 09-13 17:13 699次阅读

    NVIDIA助力提供多样、灵活的模型选择

    在本案例中,Dify 以模型中立以及开源生态的优势,为广大 AI 创新者提供丰富的模型选择。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服务
    的头像 发表于 09-09 09:19 463次阅读

    NVIDIA Nemotron-4 340B模型帮助开发者生成合成训练数据

    Nemotron-4 340B 是针对 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 优化的模型系列,该系列包含最先进
    的头像 发表于 09-06 14:59 303次阅读
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B<b class='flag-5'>模型</b>帮助开发者生成合成训练数据

    NVIDIA文本嵌入模型NV-Embed的精度基准

    NVIDIA 的最新嵌入模型 NV-Embed —— 以 69.32 的分数创下了嵌入准确率的新纪录海量文本嵌入基准测试(MTEB)涵盖 56 项嵌入任务。
    的头像 发表于 08-23 16:54 1981次阅读
    <b class='flag-5'>NVIDIA</b>文本嵌入<b class='flag-5'>模型</b>NV-Embed的精度基准

    英伟达推出全新NVIDIA AI Foundry服务和NVIDIA NIM推理微服务

    NVIDIA 宣布推出全新 NVIDIA AI Foundry 服务和 NVIDIA NIM 推理微服务,与同样刚推出的 Llama 3.1 系列开源
    的头像 发表于 07-25 09:48 703次阅读

    NVIDIA AI Foundry 为全球企业打造自定义 Llama 3.1 生成式 AI 模型

    借助 NVIDIA AI Foundry,企业和各国现在能够使用自有数据与 Llama 3.1 405B 和 NVIDIA Nemotron 模型配对,来构建“超级模型
    发表于 07-24 09:39 706次阅读
    <b class='flag-5'>NVIDIA</b> AI Foundry 为全球企业打造自定义 Llama 3.1 生成式 AI <b class='flag-5'>模型</b>

    NVIDIA与Google DeepMind合作推动大语言模型创新

    支持 NVIDIA NIM 推理微服务的谷歌最新开源模型 PaliGemma 首次亮相。
    的头像 发表于 05-16 09:44 445次阅读

    NVIDIA加速微软最新的Phi-3 Mini开源语言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微软最新的 Phi-3 Mini 开源语言模型。TensorRT-LLM 是一个开源库,用于优化从 PC 到云端的 NVID
    的头像 发表于 04-28 10:36 556次阅读

    使用NVIDIA Triton推理服务来加速AI预测

    这家云计算巨头的计算机视觉和数据科学服务使用 NVIDIA Triton 推理服务来加速 AI 预测。
    的头像 发表于 02-29 14:04 577次阅读

    在AMD GPU上如何安装和配置triton

    最近在整理python-based的benchmark代码,反过来在NV的GPU上又把Triton装了一遍,发现Triton的github repo已经给出了对应的llvm的commit id以及对应的编译细节,然后跟着走了一遍,也顺利的安装成功,只需要按照如下方式即可完
    的头像 发表于 02-22 17:04 2362次阅读
    在AMD GPU上如何安装和配置<b class='flag-5'>triton</b>?

    【BBuf的CUDA笔记】OpenAI Triton入门笔记一

    这里来看官方的介绍:https://openai.com/research/triton ,从官方的介绍中我们可以看到OpenAI Triton的产生动机以及它的目标是什么,还可以看到一些经典算法的实现例子展示。
    的头像 发表于 01-23 10:00 2565次阅读
    【BBuf的CUDA笔记】OpenAI <b class='flag-5'>Triton</b>入门笔记一

    利用NVIDIA产品威廉希尔官方网站 组合提升用户体验

    本案例通过利用NVIDIA TensorRT-LLM加速指令识别深度学习模型,并借助NVIDIA Triton推理服务
    的头像 发表于 01-17 09:30 687次阅读