NVIDIA Triton系列04-创建模型仓

简介: Triton推理模型仓库是NVIDIA Triton推理服务器的基础组件,用于组织和管理模型及其相关资源。本文介绍如何创建模型仓库,包括目录结构、文件内容及配置方法,适用于本地和云端环境。通过在NVIDIA Jetson AGX Orin平台上实践,帮助读者快速上手。

NVIDIA Triton系列04-创建模型仓

B站:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com)

博客:肆十二-CSDN博客

问答:(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com)

推理模型仓(inference model repository)**是 Triton 推理服务器的最基础元件**,如同数据库(database)服务器必须先创建一个数据库是类似的道理。要使用 Triton 推理服务器的第一件任务,就是先创建一个模型存储仓来作为服务器的组织中心,将所需的模型、配置文件和其他资源都位于这个存储仓中,才能让 Triton 进行推理任务。

进入 https://github.com/triton-inference-server/server/tree/main/docs 这个最完整的说明文件区,在 “User Guide” 里的前 5 个步骤,就是为 Triton 服务器创建与管理模型仓的任务,依序如下:

创建模型储存仓(Creating a Model Repository)

撰写模型配置文件(Writing a Model Configuration)

创建模型的流水线(Buillding a Model Pipeline)

管理模型可用性(Managing Model Availablity)

收集服务器指标(Collecting Server Metrics)

本文先带着读者创建模型存储仓,这是执行 Triton 服务器之前必须执行的环节,另外四个部分会在后续文章中陆续探索。

这个储存仓的要求相对简单,只要是常用的文件系统就行,包括企业内部使用的 Windows NTFS 或 Linux ext3/4 文件服务器,也可以是 Google 云、亚马逊云、微软 Asure 之类的网上储存空间。

Triton 模型仓是以“目录结构”为主体的方式搭建,将配套的文件放置对应的位置里就可以,下面是一个简单的范例:

目录结构与文件

├──

│ ├── <1>

│ │ └── model.onnx

│ ├── config.pbtxt

│ └── densenet_labels.txt

└──

​ ├── <1>

​ │ └── model.graphdef

​ ├── <2>

​ │ └── model.graphdef

​ ├── config.pbtxt

​ └── inception_labels.txt

用途说明

根目录:仓名称

目录:模型densenet_onnx

目录:模型densenet_onnx的版本1

文件:模型densenet_onnx版本1的模型文件

文件:模型densenet_onnx的配置文件

文件:模型densenet_onnx的标注文件

目录:模型inception_graphdef

目录:模型inception_graphdef版本1

文件:模型inception_graphdef版本1的模型文件

目录:模型inception_graphdef版本2

文件:模型inception_graphdef版本2的模型文件

文件:模型inception_graphdef的配置文件

文件:模型inception_graphdef的标注文件

这个模型仓主要分为以下两大部分:

1. 目录结构:需要创建以下三层目录,并根据各层定义进行命名

(1) 第一层“仓名称”:简单创建一个文件夹作为模型该模型仓的根路径,一台设备上可以有任意个模型仓,例如 model_repo1、model_repo2;

(2) 第二层“模型名称”:在模型仓下面根据模型名称创建目录,通常习惯使用神经网络名称_后端种类”的组合格式,例如

densenet_onnx 表示为 ONNX 后端的 densenet 网络模型;

inception_graphdef 表示为 TensorFlow graphdef 后端的 inception 模型。

(3) 第三层“版本号”:用纯数字表示,因为相同的模型可能存在不同训练回合(epoch)、不同精度的多个版本。

2. 文件内容:将以下三种文件内容,分别放置在对应的目录下

(1) 配置文件:放在第二层的模型名称目录下,通常命名为 config.pbtxt,每个模型都有各自的配置文件,里面存放着该模型执行推理时所需要的信息与参数,是 Triton 模型仓里最重要的部分,主要内容将在后面有专门文章提供详细说明。

(2) 标注文件(如果有):放在第二层的模型名称目录下,例如 densenet_labels.txt

(3) 模型文件:放在第三层的版本目录下,就是最终执行推理功能的神经网络模型,其附加文件名根据训练时所用的框架而定,如下所列

TensorRT 模型:附加名为 .plan,例如 model.plan

ONNX 模型:附加名为 .onnx,例如 model.onnx

TorchScript 模型:附加名为 .pt,例如 model.pt

TensorFlow 模型:根据存储时的方式有 .graphdef 与 .savedmodel 两种,例如 model.graphdef 或 model.savedmodel

OpenVINO 模型:需要由 .xml 与 .bin 组成,例如 model.xml 与 model.bin

Python 模型:附加名为 .py,例如 model.py

DALI 模型:附加名为 .dali,例如 model.dali

即便是在云存储上,也只要根据上述要求创建目录结构,并将各类文件放置在对应目录下,然后启动 Triton 推理服务器时使用“--model-repostory=”参数,指向模型仓根路径的位置就可以,例如以下状况:

# 在本机上tritonserver --model-repository=/home/nvidia/triton/repo1# 在Google云tritonserver --model-repository=gs://bucket/triton/repo-google# 在亚马逊S3云tritonserver --model-repository=s3://IP:端口/triton/repo-amazone# 微软Azure云tritonserver --model-repository=as://用户名/容器名/repo-azure

Triton 服务器启动时,会将模型仓下的模型载入计算设备的内存之中,并不需要与模型仓所在服务器进行实时数据交换,因此启动之初会消耗比较多时间,开始执行推理计算之后是不会受到网络速度影响推理性能。

为了协助读者跟容易理解模型仓的使用,我们以 NVIDIA Jetson AGX Orin 设备作为实验平台,先下载 https://github.com/triton-inference-server/server 开源仓,里面的docs目录下有个 examples/model_repository 就是个模型仓范例,里面有 8 个简单的模型,可以做些简单的测试与体验。现在请执行以下指令:

cd $HOME && mkdir triton && cd tritongit clone https://github.com/triton-inference-server/servercd server/docs/examplestree model_repository

就会看到如下面左方的列表,共有 8 个模型文件夹:

目录结构与文件

model_repository/

├── densenet_onnx

│ ├── config.pbtxt

│ └── densenet_labels.txt

├── inception_graphdef

│ ├── config.pbtxt

│ └── inception_labels.txt

├── simple

│ ├── 1

│ │ └── model.graphdef

│ └── config.pbtxt

├── simple_dyna_sequence

│ ├── 1

│ │ └── model.graphdef

│ └── config.pbtxt

《中间省略》

└── simple_string

├── 1

│ └── model.graphdef

└── config.pbtxt

用途说明

根目录:仓名称为model_repository

目录:模型densenet_onnx

文件:模型densenet_onnx的配置文件

文件:模型densenet_onnx的标注文件

目录:模型inception_graphdef

文件:模型inception_graphdef的配置文件

文件:模型inception_graphdef的标注文件

目录:模型simple

目录:模型simple的版本1

文件:模型simple的模型文件

文件:模型simple的配置文件

目录:模型simple_dyna_sequence

目录:模型simple_dyna_sequence的版本1

文件:模型simple_dyna_sequence的模型文件

文件:模型simple_dyna_sequence的配置文件

《中间省略》

目录:模型simple_string

目录:模型simple_string的版本1

文件:模型simple_string的模型文件

文件:模型simple_string的配置文件

我们可以看到每个文件夹里面都有 1 个独立的 config.pbtxt 配置文件,而且内容都不尽相同,这是针对不同模型所设置的内容与参数。

在下载的模型仓里的 densenet_onnx 与 inception_graphdef 目录下,并没有提供对用的模型文件,因此需要执行以下指令将这两个模型文件下载,并存放在指定位置里:

$ ./fetch_models.sh

现在就能看到在 densenet_onnx 与 inception_graphdef 各生成版本 <1> 目录,并且各有一个 model.onnx 与 model.graphdef 模型文件。

接下去只要安装好 Triton 服务器软件,就能开始使用这个模型仓来进行测试与体验,这是下一篇文章会带着大家进行安装的部分。

目录
相关文章
|
机器学习/深度学习 虚拟化 数据中心
NVIDIA T4和A10:不同应用场景下的GPU加速器选择
在数据中心和云计算领域,GPU加速器扮演着至关重要的角色。NVIDIA T4和A10是两款适用于不同应用场景的GPU加速器。本文将比较它们的性能和适用场景,帮助读者更好地选择适合自己需求的GPU实例。
4904 0
|
并行计算 C++ 异构计算
Nvidia 并行计算架构 CUDA 分析(一)——CUDA 简介
    CUDA(Compute Unified Device Architecture,统一计算设备架构)是由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题。
4963 0
|
1月前
|
Kubernetes 调度 算法框架/工具
NVIDIA Triton系列02-功能与架构简介
本文介绍了NVIDIA Triton推理服务器的功能与架构,强调其不仅适用于大型服务类应用,还能广泛应用于各类推理场景。Triton支持多种模型格式、查询类型和部署方式,具备高效的模型管理和优化能力,确保高性能和系统稳定性。文章详细解析了Triton的主从架构,包括模型仓库、客户端应用、通信协议和推理服务器的核心功能模块。
56 1
NVIDIA Triton系列02-功能与架构简介
|
1月前
|
存储 并行计算 C++
NVIDIA Triton系列08-用户端其他特性
本文详细解析了NVIDIA Triton开源项目的image_client.py示例代码,涵盖指定通信协议(HTTP与gRPC)、调用异步模式与数据流处理、以及使用共享内存等核心功能,为开发者提供撰写Triton用户端应用的指导。通过具体代码示例,帮助读者理解如何高效利用Triton服务器进行模型推理。
42 1
NVIDIA Triton系列08-用户端其他特性
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
NVIDIA Triton系列13-用 FasterTransformer 和 Triton 加速大型 Transformer 模型的推理
本文介绍了 NVIDIA FasterTransformer 库及其在加速大型 Transformer 模型推理中的应用。FasterTransformer 是一个高效、可扩展的库,支持分布式多 GPU 推理,特别适合处理具有数万亿参数的模型。文章还详细讲解了如何使用 FasterTransformer 和 NVIDIA Triton 推理服务器优化 GPT-J 和 T5 模型的推理性能,包括张量并行、流水线并行等技术。
53 0
NVIDIA Triton系列13-用 FasterTransformer 和 Triton 加速大型 Transformer 模型的推理
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
NVIDIA Triton系列03-开发资源说明
NVIDIA Triton 推理服务器是用于高效部署机器学习模型的开源工具。本文介绍了初学者如何通过官方文档和 GitHub 开源仓库获取开发资源,包括快速启动指南、生产文档、示例和反馈渠道。特别强调了核心仓库中的六个重要部分,涵盖服务器部署、核心功能、后端支持、客户端接口、模型分析和模型导航工具。这些资源有助于初学者全面了解和掌握 Triton 项目。
41 0
NVIDIA Triton系列03-开发资源说明
|
1月前
|
存储 机器学习/深度学习 调度
NVIDIA Triton系列11-模型类别与调度器-1
NVIDIA Triton推理服务器中,模型类别与调度器、批量处理器的搭配是管理机制的核心。本文介绍了无状态、有状态和集成模型,以及标准调度器和集成调度器,详细解释了有状态模型的控制输入和隐式状态管理,帮助理解 Triton 的复杂管理机制。
33 0
|
弹性计算 人工智能 PyTorch
GPU实验室-在云上部署ChatGLM2-6B大模型
ChatGLB2-6B大模型:由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。截至2023年7月,在C-Eval中,排名靠前。Pytorch:一个开源的Python机器学习库,基于Torch,底层由C++实现,应用于人工智能领域,如计算机视觉和自然语言处理。它主要由Meta Platforms的人工智能研究团队开发。著名的用途有:特斯拉自动驾驶,Uber最初发起而现属Linux基金会项目的概率编程软件Pyro,Lightning。
|
3月前
|
物联网 Serverless API
函数计算产品使用问题之怎么部署Docker镜像进行lora训练
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
人工智能 监控 并行计算
NVIDIA智算中心“产品”上市问题之NVIDIA Megatron-LM的定义如何解决
NVIDIA智算中心“产品”上市问题之NVIDIA Megatron-LM的定义如何解决