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

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

3天内不再提示

NVIDIA Triton 系列文章(9):为服务器添加模型

NVIDIA英伟达企业解决方案 ? 来源:未知 ? 2022-12-27 21:20 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前面已经用https://github.com/triton-inference-server/server/doc/examples 开源仓的范例资源,创建一个最基础的模型仓以便执行一些基础的用户端范例,现在就要带着读者为模型仓添加新的模型。

在“创建模型仓”的文章里讲解过,Triton 模型仓使用目录结构与相关文件来形成一个模型的基础要素,如下所列:

79a87fe2-85e8-11ed-bfe3-dac502259ad0.png

上面的目录结构与模型文件是最基本的材料,处理起来是很容易的,比较复杂的部分是配置文件 config.pbtxt 的内容,里面提供 Triton 服务器用来管理模型执行特性的各项参数,这些设置的内容主要分为静态的基础(minimal)设置项与动态的优化(optimization)设置两大部分,本文内容先针对基础配置项的部分进行说明。

为了说明这些配置内容,这里先以范例模型仓里的 inception_graphdef 模型的配置文件 config.pbtxt 为例,来配合以下的简单说明,比较容易让大家理解详细的内容:

79c93e9e-85e8-11ed-bfe3-dac502259ad0.png

每个配置文件里都至少包含以下5个部分:

1. 模型名称:

这部分直接使用存放模型的文件夹名称,因此可以省略,如果要指定的话就必须与文件夹名称一致。

2. 平台/后端名称(Name, Platform and Backend):

这部分必须与模型训练时使用的框架与文件格式相匹配,以下是使用频率较高的种类:

79f14218-85e8-11ed-bfe3-dac502259ad0.png

至于其他平台/后端的对应名称,就需要根据实际的平台与对应名称进行配置。

3. 模型执行策略(Model Transaction Policy):

这个属性只有一个“解耦(decoupled)与否”的选项。使用解耦意味着模型生成的响应的数量可能与发出的请求的数量不同,并且响应可能与请求的顺序无关。

默认值为 false,上面范例中并未列出这个参数的配置值,表示“不启用解耦”功能,意味着该模型将为每个请求生成一个响应。

如果需要启用解耦功能,就在配置文件内添加以下内容:

model_transaction_policy {
  decoupled: True
}

4. 最大批量值(Maximum Batch Size):

Triton 服务器支持多种调度和批处理算法,可以为每个模型独立选择。这个属性表示执行该推理模型计算时的最大批量规模,包括“无状态(stateless)”或“有状态(stateful)”等类型的模型。

这个参数主要配合下面“输入/输出节点内容”的张量尺度部分,例如本范例中输入节点张量格式为“format: FORMAT_NHWC”,但是下面尺度“dims: [ 299, 299, 3 ]”的三个数值是对应到“HWC(高/宽/通道)”,缺少“批量值(N)”的部分,这正是这个“最大批量值”为输入节点与输出节点所配置的数值,这样 Triton 可以使用动态批处理器或序列批处理器自动对模型进行批处理。

在这种情况下,max_batch_size 应设置为大于或等于1的值,表示应与该模型一起使用的最大批次大小;对于不支持批处理或不支持以上述特定方式进行批处理的推理模型,则将 max_batch_size 设置为 0。

5. 输入节点与输出节点(Inputs and Outputs):

每个推理模型都有至少一个输入节点与输出节点,这部分的内容必须配合模型的内容,不能自己随便定义。

要添加新的推理模型时,推荐使用 Netron 工具查看模型的网络结构,只要在浏览器上输入“netron.app”后打开模型文件就可以。目前经过测试,Netron.APP 工具能查看 ONNX、TensorFlow/graphdef、Pytorch 等模型文件的网络结构,相当方便。

下图是 model_repository/inception_graphdef/1/model.graphdef 模型文件所能看到的输入/输出节点的内容:

7a097c7a-85e8-11ed-bfe3-dac502259ad0.png

每个节点都包含“名称”“数据类型”“尺度(shape)”三个部分,现在就进一步说明:

(1) 节点名称(name):

上图最左边的输入节点在整个网络结构的最上方,名称为“input”;中间输出节点在网络结构最下方,点选“softmax”节点会出现右边灰色信息块,显示其完整名称为“InceptionV3/Predictions/Softmax”。现在对照模型的 config.pbtxt 里对应内容,是必须能匹配的,否则启动 Triton 服务器时会出现错误。

不过这个环节里对 PyTorch 模型需要特殊的处理,由于 TorchScript 模型文件中输入/输出的元数据不足,配置中输入/输出的“名称属性”必须遵循以下特定的命名约定:

  • 使用张量字典(Dictionary of Tensor):

Triton 服务器的 PyTorch 后端支持以张量字典的形式将输入传递给模型,例如模型有如下的张量字典内容: {'A': tensor1, 'B': tensor2} 输入的名称映射到该特定张量的字符串“key”值,例如“A”或“B”,其中输入“A”是指对应于 tensor1 的值、“B”是指对应于 tensor2 的值。

  • 映射到 forward() 函数的输入值:

当输入节点名称不在张量字典内,就使用 TorchScript 模型里所定义的 forward() 函数输入值。例如函数定义为“forward(self, input0, input1)”时,则两个输入节点的名称分别对应为“input0”与“input1”。
  • 使用_格式:

这里的可以是任何字符串、则对应到输入或输出顺序的整数,例如模型有两个输入节点与两个输出节点时,可以用“INPUT_0”与“INPUT_1”代表两个输入节点、用“OUTPUT_0”与“OUTPUT_1”代表两个输出节点。

  • 如果所有输入(或输出)不遵循相同的命名约定,那么我们从模型配置中强制执行严格排序,即我们假设配置中输入(或输出)的顺序是这些输入的真实顺序。

(2) 数据类型(data_type):

输入和输出张量所允许的数据类型因模型类型而异,数据类型部分描述了允许的数据类型以及它们如何映射到每个模型类型的数据类型。

下表显示了 Triton 支持的张量数据类型:

7a408f1c-85e8-11ed-bfe3-dac502259ad0.png

  • 第 1 列显示模型配置文件中显示的数据类型的名称;

  • 第 2~5 列显示了支持的模型框架的相应数据类型,如果模型框架没有给定数据类型的条目,则 Triton 不支持该模型的数据类型;

  • 第 6 列为“API”,显示 TRITONSERVER C API、TRITONBACKEND C API、HTTP/REST 协议和 GRPC 协议的对应数据类型;

  • 第 7 列显示 Python numpy 库的对应数据类型。

以上是关于模型数据类型的部分。

(3)张量尺度(dims):

这里提供的张量尺度内容是去除第一个 batch_size 的部分,因此需要与前面设定的 max_batch_size 组合形成完整的张量尺度。

输入节点的张量尺度(如“dims: [ 299, 299, 3 ]”),表示模型和 Triton 在推理请求中预期的张量尺寸;输出节点的张量尺度(如“dims: [ 1001 ]”),表示模型生成的输出张量的形状,并由 Triton 服务器响应推断请求返回。

输入和输出尺度内的值都必须大于或等于 1,也就是不允许使用[]空尺度,节点的尺度由 max_batch_size 和输入或输出 dims 属性指定的维度的组合指定。

  • max_batch_size > 0时:整个尺度的形式为[-1, dims]。

  • max_batch_size = 0时:整个形状形成为[ dims]。

例如本文范例中输入节点的尺度为“dims: [ 299, 299, 3 ]”、max_batch_size=128,则张量尺度的完整表达为“[ -1, 299, 299, 3]”;如果 max_batch_size=0 时,则张量尺度的完整表达为“[ 299, 299, 3]”。

6. 版本策略(version_policy):

每个模型可以有一个或多个版本,模型配置的 ModelVersionPolicy 属性用于设置以下策略之一。

7a8443ba-85e8-11ed-bfe3-dac502259ad0.png

如果未指定版本策略,则使用最新版本(n=1)作为默认值,表示 Triton 仅提供最新版本的模型。在所有情况下,从模型存储库中添加或删除版本子目录都可以更改后续推理请求中使用的模型版本。

以上是完成一个 config.pbtxt 模型配置文件的最基础内容,大部分内容都比较直观,除了最后面的张量尺度会有比较多的变化之外,不过只要逐渐熟悉推理运作的过程之后,就能更进一步掌握与 batch_size 相关的应用与调试方式。


原文标题:NVIDIA Triton 系列文章(9):为服务器添加模型

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


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

    关注

    22

    文章

    3983

    浏览量

    94552

原文标题:NVIDIA Triton 系列文章(9):为服务器添加模型

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    下一步行动。本文将一步步带你在本地服务器上完成该模型的部署,并搭建一个直观的 Web 交互界面,亲身体验前沿 AI 的“思考”过程。
    的头像 发表于 07-09 10:17 ?287次阅读

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

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

    新加坡服务器延迟大吗?真相在这里#新加坡服务器 #服务器

    服务器
    jf_57681485
    发布于 :2025年04月18日 13:48:50

    如何在RAKsmart服务器上实现企业AI模型部署

    AI模型的训练与部署需要强大的算力支持、稳定的网络环境和专业的技术管理。RAKsmart作为全球领先的服务器托管与云计算服务提供商,已成为企业部署AI模型的理想选择。那么,如何在RAK
    的头像 发表于 03-27 09:46 ?578次阅读

    DeepSeek企业级部署服务器资源计算 以raksmart裸机云服务器

    以RakSmart裸机云服务器例,针对DeepSeek企业级部署的服务器资源计算指南,涵盖GPU/CPU/内存/存储/网络等核心维度的详细计算方法与配置推荐,主机推荐小编为您整理发布以raksmart裸机云
    的头像 发表于 03-21 10:17 ?519次阅读

    英伟达GTC25亮点:NVIDIA Dynamo开源库加速并扩展AI推理模型

    Triton 推理服务器的后续产品,NVIDIA Dynamo 是一款全新的 AI 推理服务软件,旨在为部署推理 AI 模型的 AI 工厂
    的头像 发表于 03-20 15:03 ?766次阅读

    利用RAKsmart服务器托管AI模型训练的优势

    AI模型训练需要强大的计算资源、高效的存储和稳定的网络支持,这对服务器的性能提出了较高要求。而RAKsmart服务器凭借其核心优势,成为托管AI模型训练的理想选择。下面,AI部落小编为
    的头像 发表于 03-18 10:08 ?338次阅读

    请问是否可以在模型服务器中使用REST请求OpenVINO?预测?

    是否可以在模型服务器中使用 REST 请求OpenVINO?预测?
    发表于 03-05 08:06

    Firefly 服务器系列:覆盖多个领域的高算力解决方案

    Firefly专注于以云计算和大数据核心的服务器产品开发与应用,陆续推出支持多种计算单元的ARM服务器,覆盖多个行业及领域,客户提供优质的解决方案。Firefly
    的头像 发表于 02-19 16:34 ?827次阅读
    Firefly <b class='flag-5'>服务器</b><b class='flag-5'>系列</b>:覆盖多个领域的高算力解决方案

    Triton编译的优化技巧

    在现代计算环境中,编译的性能对于软件的运行效率至关重要。Triton 编译作为一个先进的编译框架,提供了一系列的优化技术,以确保生成的
    的头像 发表于 12-25 09:09 ?1227次阅读

    Triton编译的优势与劣势分析

    据流分析技术,能够自动识别并优化深度学习模型中的计算瓶颈,从而提高模型的整体性能。 它支持多种硬件平台的优化,包括CPU、GPU、FPGA等,深度学习模型的部署提供了更广泛的选择。
    的头像 发表于 12-25 09:07 ?1408次阅读

    Triton编译在机器学习中的应用

    1. Triton编译概述 Triton编译NVIDIA Triton推理
    的头像 发表于 12-24 18:13 ?1209次阅读

    Triton编译功能介绍 Triton编译器使用教程

    Triton 是一个开源的编译前端,它支持多种编程语言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一个可扩展和可定制的编译框架,允许开发者
    的头像 发表于 12-24 17:23 ?1980次阅读

    NVIDIA AI服务器领域重大革新:预计明年首推插槽式设计

    在科技界引起广泛关注的最新动态中,里昂证券于9月26日发布了一份引人注目的报告,揭示了NVIDIA在AI服务器领域的一项重大变革。据该报告透露,NVIDIA即将在AI
    的头像 发表于 09-26 14:25 ?1311次阅读

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

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