在上篇文章中,已经说明了有状态(stateful)模型的“控制输入”与“隐式状态管理”的使用方式,本文内容接着就继续说明“调度策略”的使用。
(续前一篇文章的编号)
(3) 调度策略(Scheduling Strategies)在决定如何对分发到同一模型实例的序列进行批处理时,序列批量处理器(sequence batcher)可以采用以下两种调度策略的其中一种:
现在简单说明以下配置的内容:
下图显示使用直接调度策略,将多个序列调度到模型实例上的执行:
图左显示了到达 Triton 的 5 个请求序列,每个序列可以由任意数量的推理请求组成。图右侧显示了推理请求序列是如何随时间安排到模型实例上的,
在本示例中,模型需要序列批量处理的开始、结束和相关 ID 控制输入。下图显示了此配置指定的序列批处理程序和推理资源的表示。
使用最旧的调度策略,序列批处理程序会执行以下工作:
下图显示将多个序列调度到上述示例配置指定的模型实例上,左图显示 Triton 接收了四个请求序列,每个序列由多个推理请求组成:
这里假设每个请求的长度是相同的,那么左边候选序列中送进右边批量处理槽的顺序,就是上图中间的排列顺序。
最旧的策略从最旧的请求中形成一个动态批处理,但在一个批处理中从不包含来自给定序列的多个请求,例如上面序列 D 中的最后两个推理不是一起批处理的。
以上是关于有状态模型的“调度策略”主要内容,剩下的“集成模型”部分,会在下篇文章中提供完整的说明。
- 直接(direct)策略
name: "direct_stateful_model"platform: "tensorrt_plan"max_batch_size: 2sequence_batching{ max_sequence_idle_microseconds: 5000000direct { } control_input [{name: "START" control [{ kind: CONTROL_SEQUENCE_START fp32_false_true: [ 0, 1 ]}]},{name: "READY" control [{ kind: CONTROL_SEQUENCE_READY fp32_false_true: [ 0, 1 ]}]}]}#续接右栏 | #上接左栏input [{name: "INPUT" data_type: TYPE_FP32dims: [ 100, 100 ]}]output [{name: "OUTPUT" data_type: TYPE_FP32dims: [ 10 ]}]instance_group [{ count: 2}] |
- sequence_batching 部分指示模型会使用序列调度器的 Direct 调度策略;
- 示例中模型只需要序列批处理程序的启动和就绪控制输入,因此只列出这些控制;
- instance_group 表示应该实例化模型的两个实例;
- max_batch_size 表示这些实例中的每一个都应该执行批量大小为 2 的推理计算。
所识别的推理请求种类 | 执行动作 |
需要启动新序列 | 1. 有可用处理槽时:就为该序列分配批处理槽2. 无可用处理槽时:就将推理请求放在积压工作中 |
是已分配处理槽序列的一部分 | 将该请求分发到该配置好的批量处理槽 |
是积压工作中序列的一部分 | 将请求放入积压工作中 |
是最后一个推理请求 | 1. 有积压工作时:将处理槽分配给积压工作的序列2. 有积压工作:释放该序列处理槽给其他序列使用 |
- 在实例 0 与实例 1 中各有两个槽 0 与槽 1;
- 根据接收的顺序,为序列 0 至序列 3 各分配一个批量处理槽,而序列 4 与序列 5 先处于排队等候状态;
- 当序列 3 的请求全部完成之后,将处理槽释放出来给序列 4 使用;
- 当序列 1 的请求全部完成之后,将处理槽释放出来给序列 5 使用;
- 序列中第一个请求(Req 0)到达槽 0 时,因为模型实例尚未执行推理,则序列调度器会立即安排模型实例执行,因为推理请求可用;
- 由于这是序列中的第一个请求,因此 START 张量中的对应元素设置为 1,但槽 1 中没有可用的请求,因此 READY 张量仅显示槽 0 为就绪。
- 推理完成后,序列调度器会发现任何批处理槽中都没有可用的请求,因此模型实例处于空闲状态。
- 接下来,两个推理请求(上面的 Req 1 与下面的 Req 0)差不多的时间到达,序列调度器看到两个处理槽都是可用,就立即执行批量大小为 2 的推理模型实例,使用 READY 显示两个槽都有可用的推理请求,但只有槽 1 是新序列的开始(START)。
- 对于其他推理请求,处理以类似的方式继续。
- 最旧的(oldest)策略
直接(direct)策略 | 最旧的(oldest)策略 |
direct {} |
oldest { max_candidate_sequences: 4 } |
所识别的推理请求种类 | 执行动作 |
需要启动新序列 | 尝试查找具有候选序列空间的模型实例,如果没有实例可以容纳新的候选序列,就将请求放在一个积压工作中 |
已经是候选序列的一部分 | 将该请求分发到该模型实例 |
是积压工作中序列的一部分 | 将请求放入积压工作中 |
是最后一个推理请求 | 模型实例立即从积压工作中删除一个序列,并将其作为模型实例中的候选序列,或者记录如果没有积压工作,模型实例可以处理未来的序列。 |
原文标题:NVIDIA Triton 系列文章(11):模型类别与调度器-2
文章出处:【微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
英伟达
+关注
关注
22文章
3739浏览量
90789
原文标题:NVIDIA Triton 系列文章(11):模型类别与调度器-2
文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
NVIDIA助力提供多样、灵活的模型选择
在本案例中,Dify 以模型中立以及开源生态的优势,为广大 AI 创新者提供丰富的模型选择。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服务
NVIDIA Nemotron-4 340B模型帮助开发者生成合成训练数据
Nemotron-4 340B 是针对 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 优化的模型系列,该系列包含最先进
英伟达推出全新NVIDIA AI Foundry服务和NVIDIA NIM推理微服务
NVIDIA 宣布推出全新 NVIDIA AI Foundry 服务和 NVIDIA NIM 推理微服务,与同样刚推出的 Llama 3.1 系列开源
NVIDIA AI Foundry 为全球企业打造自定义 Llama 3.1 生成式 AI 模型
借助 NVIDIA AI Foundry,企业和各国现在能够使用自有数据与 Llama 3.1 405B 和 NVIDIA Nemotron 模型配对,来构建“超级模型”
发表于 07-24 09:39
•678次阅读
NVIDIA与Google DeepMind合作推动大语言模型创新
支持 NVIDIA NIM 推理微服务的谷歌最新开源模型 PaliGemma 首次亮相。
NVIDIA加速微软最新的Phi-3 Mini开源语言模型
NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微软最新的 Phi-3 Mini 开源语言模型。TensorRT-LLM 是一个开源库,用于优化从 PC 到云端的 NVID
使用NVIDIA Triton推理服务器来加速AI预测
这家云计算巨头的计算机视觉和数据科学服务使用 NVIDIA Triton 推理服务器来加速 AI 预测。
在AMD GPU上如何安装和配置triton?
最近在整理python-based的benchmark代码,反过来在NV的GPU上又把Triton装了一遍,发现Triton的github repo已经给出了对应的llvm的commit id以及对应的编译细节,然后跟着走了一遍,也顺利的安装成功,只需要按照如下方式即可完
【BBuf的CUDA笔记】OpenAI Triton入门笔记一
这里来看官方的介绍:https://openai.com/research/triton ,从官方的介绍中我们可以看到OpenAI Triton的产生动机以及它的目标是什么,还可以看到一些经典算法的实现例子展示。
利用NVIDIA产品技术组合提升用户体验
本案例通过利用NVIDIA TensorRT-LLM加速指令识别深度学习模型,并借助NVIDIA Triton推理服务器在
什么是Triton-shared?Triton-shared的安装和使用
经过前面几章关于triton在nv gpu上调优的讲解,我们这章开始来看看triton的一个third_party库,该库是为了让triton去支持更多其他的backend。该项目的地址如下所示
Triton编译器的原理和性能
Triton是一种用于编写高效自定义深度学习原语的语言和编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton
NVIDIA 为部分大型亚马逊 Titan 基础模型提供训练支持
本文将介绍亚马逊如何使用 NVIDIA NeMo 框架、GPU 以及亚马逊云科技的 EFA 来训练其 最大的新一代大语言模型(LLM)。 大语言模型的一切都很庞大——巨型模型是在数千颗
评论