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

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

3天内不再提示

NVIDIA Triton 系列文章(13):模型与调度器-3

NVIDIA英伟达企业解决方案 来源:未知 2023-02-03 04:55 次阅读
前面两篇文章,已经将 Triton 的“无状态模型”、“有状态模型”与标准调度器的动态批量处理器与序列批量处理器的使用方式,做了较完整的说明。 大部分的实际应用都不是单纯的推理模型就能完成服务的需求,需要形成前后关系的工作流水线。例如一个二维码扫描的应用,除了需要第一关的二维码识别模型之外,后面可能还得将识别出来的字符传递给语句识别的推理模型、关键字搜索引擎等功能,最后找到用户所需要的信息,反馈给提出需求的用户端。 本文的内容要说明 Triton 服务器形成工作流水线的“集成推理”功能,里面包括“集成模型(ensemble model)”“集成调度器(ensemble scheduler)”两个部分。下面是个简单的推理流水线示意图,目的是对请求的输入图像最终反馈“图像分类”与“语义分割”两个推理结果: 6bce43b4-a33b-11ed-bfe3-dac502259ad0.png 当接收到集成模型的推断请求时,集成调度器将:
  1. 确认请求中的“IMAGE”张量映射到预处理模型中的输入“RAW_IMAGE”。
  2. 检查集合中的模型,并向预处理模型发送内部请求,因为所需的所有输入张量都已就绪。
  3. 识别内部请求的完成,收集输出张量并将内容映射到“预处理图像”,这是集成中已知的唯一名称。
  4. 将新收集的张量映射到集合中模型的输入。在这种情况下,“classification_model”和“segmentation_model”的输入将被映射并标记为就绪。
  5. 检查需要新收集的张量的模型,并向输入就绪的模型发送内部请求,在本例中是分类模型和分割模型。请注意,响应将根据各个模型的负载和计算时间以任意顺序排列。
  6. 重复步骤 3-5,直到不再发送内部请求,然后用集成输出名称的张量去响应推理请求。
整个流水线使用 3 个模型,并进行以下三个处理步骤:
  1. 使用 image_prepoecess_model 模型,将原始图像处理成preprocessed_image 数据;
  2. 将 preprocessed_image 数据传递给 classification_model 模型,执行图像分类推理,最终返回“CLASSIFICATION”结果;
  3. 将 preprocessed_image 数据传递给 segmentation_model 模型,执行语义分割推理计算,最终返回“SEGMENTATION”结果;
在执行过程中,推理服务器必须支持以下的功能,才能将多种推理模型集成一个或多个工作流水线,去执行完整的工作流程:
  • 支持一个或多个模型的流水线以及这些模型之间输入和输出张量的连接;
  • 处理多个模型的模型拼接或数据流,例如“数据处理->推理->数据后处理”等;
  • 收集每个步骤中的输出张量,并根据规范将其作为其他步骤的输入张量;
  • 所集成的模型能继承所涉及模型的特征,在请求方的元数据必须符合集成中的模型;
为了实现的推理流水线功能,Triton 服务器使用集成模型与集成调度器的配合,来完成这类工作流水线的搭建管理。接着就执行以下步骤来创建一个流水线所需要的配套内容:
  1. 在模型仓里为流水线创建一个新的“组合模型”文件夹,例如为“ensemble_model”;
  2. 在目路下创建新的 config.pbtxt,并且使用“platform: "ensemble"”来定义这个模型要执行集成功能;
  3. 定义集成模型:
无论工作流水线中调用多少个模型,Triton 服务器都将这样的组合视为一个模型,与其他模型配置一样,需要定义输入与输出节点的张量类型与尺度。 以上面示例图中的要求,这个集成模型有一个名为“IMAGE”的输入节,与两个名为“CLASSIFICATION”“SEGMENTATION”的输出节点,至于数据类型与张量维度内容,就得根据实际使用的模型去匹配。这部分配置的参考内容如下:
name:"ensemble_model"
platform: "ensemble"
max_batch_size: 1
input [
  {
    name: "IMAGE"
    data_type: TYPE_STRING
    dims: [ 1 ]
  }
]
output [
  {
    name: "CLASSIFICATION"
    data_type: TYPE_FP32
    dims: [ 1000 ]
  },
  {
    name: "SEGMENTATION"
    data_type: TYPE_FP32
    dims: [ 3, 224, 224 ]
  }
]
从这个内容中可以看出,Triton 服务器将这个集成模型视为一个独立模型。 4. 定义模型的集成调度器:这部分使用“ensemble_scheduling”来调动集成调度器,将使用到模型与数据形成完整的交互关系。 在上面示例图中,灰色区块所形成的工作流水线中,使用到 image_prepoecess_modelclassification_modelsegmentation_model 三个模型,以及 preprocessed_image 数据在模型中进行传递。 下面提供这部分的范例配置内容,一开始使用“ensemble_scheduling”来调用集成调度器,里面再用“step”来定义模组之间的执行关系,透过模型的“input_map”“output_map”“key:value”对的方式,串联起模型之间的交互动作:
ensemble_scheduling{
  step [
    {
      model_name: "image_preprocess_model"
      model_version: -1
      input_map {
        key: "RAW_IMAGE"
        value: "IMAGE"
      }
      output_map {
        key: "PREPROCESSED_OUTPUT"
        value: "preprocessed_image"
      }
    },
    {
      model_name: "classification_model"
      model_version: -1
      input_map {
        key: "FORMATTED_IMAGE"
        value: "preprocessed_image"
      }
      output_map {
        key: "CLASSIFICATION_OUTPUT"
        value: "CLASSIFICATION"
      }
    },
    {
      model_name: "segmentation_model"
      model_version: -1
      input_map {
        key: "FORMATTED_IMAGE"
        value: "preprocessed_image"
      }
      output_map {
        key: "SEGMENTATION_OUTPUT"
        value: "SEGMENTATION"
      }
    }
  ]
}
这里简单说明一下工作流程: (1) 模型 image_preprocess_model 接收外部输入的 IMAGE 数据,进行图像预处理任务,输出 preprocessed_image 数据;(2) 模型 classification_model 的输入为 preprocessed_image,表示这个模型的工作是在 image_preprocess_model 之后的任务,执行的推理输出为 CLASSIFICATION;(3) 模型 segmentation_model 的输入为 preprocessed_image,表示这个模型的工作是在 image_preprocess_model 之后的任务,执行的退输出为 SEGMENTATION;(4) 上面两步骤可以看出 classification_model 与 segmentation_model 属于分支的同级模型,与上面工作流图中的要求一致。 完成以上的步骤,就能用集成模型与集成调度器的搭配,来创建一个完整的推理工作流任务,相当简单。 不过这类集成模型中,还有以下几个需要注意的重点:
  • 这是 Triton 服务器用来执行用户定义模型流水线的抽象形式,由于没有与集成模型关联的物理实例,因此不能为其指定 instance_group 字段;
  • 不过集成模型内容所组成的个别模型(例如image_preprocess_model),可以在其配置文件中指定 instance_group,并在集成接收到多个请求时单独支持并行执行。
  • 由于集成模型将继承所涉及模型的特性,因此在请求起点的元数据(本例为“IMAGE”)必须符合集成中的模型,如果其中一个模型是有状态模型,那么集成模型的推理请求应该包含有状态模型中提到的信息,这些信息将由调度器提供给有状态模型。
总的来说,Triton 服务器提供的集成功能还是相对容易理解与操作的,只要大家留意模型之间所传递的数据张量格式与尺度,就能轻松搭建起这样的推理工作流,去面对实际环境中更多变的使用需求。


原文标题:NVIDIA Triton 系列文章(13):模型与调度器-3

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


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

    关注

    22

    文章

    3748

    浏览量

    90836

原文标题:NVIDIA Triton 系列文章(13):模型与调度器-3

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    NVIDIA Omniverse 将为全新 OpenPBR 材质模型提供原生支持

    、组合、模拟和协作的可扩展框架和生态系统,OpenUSD 使开发者能够构建可互操作的 3D 工作流,开启了工业数字化的新时代。 此外,NVIDIA Omniverse 还将为全新 OpenPBR 材质模型
    的头像 发表于 06-14 11:23 563次阅读
    <b class='flag-5'>NVIDIA</b> Omniverse 将为全新 OpenPBR 材质<b class='flag-5'>模型</b>提供原生支持

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

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

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

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

    NVIDIA生成式AI研究实现在1秒内生成3D形状

    NVIDIA 研究人员使 LATTE3D (一款最新文本转 3D 生成式 AI 模型)实现双倍加速。
    的头像 发表于 03-27 10:28 467次阅读
    <b class='flag-5'>NVIDIA</b>生成式AI研究实现在1秒内生成<b class='flag-5'>3</b>D形状

    Anthropic发布Claude3系列模型

    近日,人工智能领域的创新者 Anthropic 宣布推出其备受瞩目的 Claude 3 系列大型语言模型(LLM)。这一系列模型在各种认知任
    的头像 发表于 03-06 09:56 564次阅读

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

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

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

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

    利用NVIDIA产品技术组合提升用户体验

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

    不要错过!NVIDIA “大模型没那么泛!”主题活动

    2024 新年首发! NVIDIA模型系列活动 将于 2024 年 1 月 正式启动,由 NVIDIA 和业界专家携手分享大模型应用开
    的头像 发表于 12-20 19:35 631次阅读
    不要错过!<b class='flag-5'>NVIDIA</b> “大<b class='flag-5'>模型</b>没那么泛!”主题活动

    什么是Triton-shared?Triton-shared的安装和使用

    经过前面几章关于triton在nv gpu上调优的讲解,我们这章开始来看看triton的一个third_party库,该库是为了让triton去支持更多其他的backend。该项目的地址如下所示
    的头像 发表于 12-19 09:47 1113次阅读
    什么是<b class='flag-5'>Triton</b>-shared?<b class='flag-5'>Triton</b>-shared的安装和使用

    Triton编译的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言和编译Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton
    的头像 发表于 12-16 11:22 2745次阅读
    <b class='flag-5'>Triton</b>编译<b class='flag-5'>器</b>的原理和性能