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英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。


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

    关注

    23

    文章

    4112

    浏览量

    99595

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA与亚马逊云科技深化合作伙伴关系

    NVIDIA 和亚马逊云科技 (AWS) 扩展双方合作,增强在 AWS 平台上的由 NVIDIA 驱动的数据处理能力,并增加对 NVIDIA Nemotron 开放模型
    的头像 发表于 03-23 15:17 421次阅读

    NVIDIA 扩展开放模型系列,推动代理式、物理和医疗 AI 下一阶段发展

    新闻摘要: ●NVIDIA Nemotron 3 全模态理解模型 (Omni-understanding Models) 为 AI 智能体提供动力 ,使其能够实现自然对话、复杂推理和高级视觉能力
    的头像 发表于 03-17 09:18 484次阅读
    <b class='flag-5'>NVIDIA</b> 扩展开放<b class='flag-5'>模型</b><b class='flag-5'>系列</b>,推动代理式、物理和医疗 AI 下一阶段发展

    NVIDIA Jetson模型赋能AI在边缘端落地

    开源生成式 AI 模型不再局限于数据中心,而是开始深入到现实世界的各种机器中。从 Orin 到 Thor,NVIDIA Jetson 系列正在成为运行 NVIDIA Nemotron、
    的头像 发表于 03-16 16:27 583次阅读
    <b class='flag-5'>NVIDIA</b> Jetson<b class='flag-5'>模型</b>赋能AI在边缘端落地

    借助NVIDIA CUDA Tile IR后端推进OpenAI Triton的GPU编程

    NVIDIA CUDA Tile 是基于 GPU 的编程模型,其设计目标是为 NVIDIA Tensor Cores 提供可移植性,从而释放 GPU 的极限性能。CUDA Tile 的一大优势是允许开发者基于其构建自定义的 DS
    的头像 发表于 02-10 10:31 498次阅读

    NVIDIA 推出 Alpamayo 系列开源 AI 模型与工具,加速安全可靠的推理型辅助驾驶汽车开发

    新闻摘要 : l NVIDIA 率先发布为应对辅助驾驶长尾场景挑战而设计的开源视觉-语言-动作推理模型(Reasoning VLA);NVIDIA Alpamayo 系列还包含赋能辅助
    的头像 发表于 01-06 09:40 505次阅读
    <b class='flag-5'>NVIDIA</b> 推出 Alpamayo <b class='flag-5'>系列</b>开源 AI <b class='flag-5'>模型</b>与工具,加速安全可靠的推理型辅助驾驶汽车开发

    七大基于大模型的地面测控站网调度分系统软件的应用与未来发展

    出的七项具有代表性的智能调度系统/项目。这些系统均深度融合大模型、AI决策与数据驱动优化技术,是航天测控体系向智能化、自主化升级的核心载体。    1.北京华盛恒辉大模型地面测控站网
    的头像 发表于 12-19 15:42 490次阅读

    NVIDIA 推出 Nemotron 3 系列开放模型

    新闻摘要: ● Nemotron 3 系列开放模型包含 Nano、Super 和 Ultra 三种规模,具有极高的效率和领先的精度,适用于代理式 AI 应用开发。 ● Nemotron 3 Nano
    的头像 发表于 12-16 09:27 795次阅读
    <b class='flag-5'>NVIDIA</b> 推出 Nemotron 3 <b class='flag-5'>系列</b>开放<b class='flag-5'>模型</b>

    NVIDIA携手Mistral AI发布全新开源大语言模型系列

    全新 Mistral 3 系列涵盖从前沿级到紧凑型模型,针对 NVIDIA 平台进行了优化,助力 Mistral AI 实现云到边缘分布式智能愿景。
    的头像 发表于 12-13 09:58 1424次阅读

    NVIDIA推动面向数字与物理AI的开源模型发展

    NVIDIA 发布一系列涵盖语音、安全与辅助驾驶领域的全新 AI 工具,其中包括面向移动出行领域的行业级开源视觉-语言-动作推理模型(Reasoning VLA) NVIDIA DRI
    的头像 发表于 12-13 09:50 1516次阅读

    利用NVIDIA Cosmos开放世界基础模型加速物理AI开发

    NVIDIA 最近发布了 NVIDIA Cosmos 开放世界基础模型(WFM)的更新,旨在加速物理 AI 模型的测试与验证数据生成。借助 NVID
    的头像 发表于 12-01 09:25 1388次阅读

    面向科学仿真的开放模型系列NVIDIA Apollo正式发布

    用于加速工业和计算工程的开放模型系列 NVIDIA Apollo 于近日举行的 SC25 大会上正式发布。
    的头像 发表于 11-25 11:15 7.4w次阅读

    NVIDIA Nemotron Nano 2推理模型发布

    NVIDIA 正式推出准确、高效的混合 Mamba-Transformer 推理模型系列 NVIDIA Nemotron Nano 2。
    的头像 发表于 08-27 12:45 1991次阅读
    <b class='flag-5'>NVIDIA</b> Nemotron Nano 2推理<b class='flag-5'>模型</b>发布

    如何本地部署NVIDIA Cosmos Reason-1-7B模型

    近日,NVIDIA 开源其物理 AI 平台 NVIDIA Cosmos 中的关键模型——NVIDIA Cosmos Reason-1-7B。
    的头像 发表于 07-09 10:17 995次阅读

    使用NVIDIA Triton和TensorRT-LLM部署TTS应用的最佳实践

    针对基于 Diffusion 和 LLM 类别的 TTS 模型NVIDIA Triton 和 TensorRT-LLM 方案能显著提升推理速度。在单张
    的头像 发表于 06-12 15:37 2048次阅读
    使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>和TensorRT-LLM部署TTS应用的最佳实践

    在阿里云PAI上快速部署NVIDIA Cosmos Reason-1模型

    NVIDIA 近期发布了 Cosmos Reason-1 的 7B 和 56B 两款多模态大语言模型 (MLLM),它们经过了“物理 AI 监督微调”和“物理 AI 强化学习”两个阶段的训练。其中
    的头像 发表于 06-04 13:43 1160次阅读