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

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

3天内不再提示

NVIDIA Triton 系列文章(4):创建模型仓

NVIDIA英伟达企业解决方案 来源:未知 2022-11-15 21:20 次阅读

推理模型仓(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&&mkdirtriton&&cdtriton
git clone https://github.com/triton-inference-server/server
cd server/docs/examples
treemodel_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 Jetson Nano 2GB 系列文章(1):开箱介绍

NVIDIA Jetson Nano 2GB 系列文章(2):安装系统

NVIDIA Jetson Nano 2GB 系列文章(3):网络设置及添加 SWAPFile 虚拟内存

NVIDIA Jetson Nano 2GB 系列文章(4):体验并行计算性能

NVIDIA Jetson Nano 2GB 系列文章(5):体验视觉功能库



NVIDIA Jetson Nano 2GB 系列文章(6):安装与调用摄像头


NVIDIA Jetson Nano 2GB 系列文章(7):通过 OpenCV 调用 CSI/USB 摄像头

NVIDIA Jetson Nano 2GB 系列文章(8):执行常见机器视觉应用


NVIDIA Jetson Nano 2GB 系列文章(9):调节 CSI 图像质量

NVIDIA Jetson Nano 2GB 系列文章(10):颜色空间动态调节技巧

NVIDIA Jetson Nano 2GB 系列文章(11):你应该了解的 OpenCV

NVIDIA Jetson Nano 2GB 系列文章(12):人脸定位


NVIDIA Jetson Nano 2GB 系列文章(13):身份识别


NVIDIA Jetson Nano 2GB 系列文章(14):Hello AI World

NVIDIA Jetson Nano 2GB 系列文章(15):Hello AI World 环境安装


NVIDIA Jetson Nano 2GB 系列文章(16):10行代码威力



NVIDIA Jetson Nano 2GB 系列文章(17):更换模型得到不同效果

NVIDIA Jetson Nano 2GB 系列文章(18):Utils 的 videoSource 工具

NVIDIA Jetson Nano 2GB 系列文章(19):Utils 的 videoOutput 工具

NVIDIA Jetson Nano 2GB 系列文章(20):“Hello AI World” 扩充参数解析功能

NVIDIA Jetson Nano 2GB 系列文章(21):身份识别

NVIDIA Jetson Nano 2GB 系列文章(22):“Hello AI World” 图像分类代码

NVIDIA Jetson Nano 2GB 系列文章(23):“Hello AI World 的物件识别应用

NVIDIAJetson Nano 2GB 系列文章(24): “Hello AI World” 的物件识别应用

NVIDIAJetson Nano 2GB 系列文章(25): “Hello AI World” 图像分类的模型训练

NVIDIAJetson Nano 2GB 系列文章(26): “Hello AI World” 物件检测的模型训练

NVIDIAJetson Nano 2GB 系列文章(27): DeepStream 简介与启用

NVIDIAJetson Nano 2GB 系列文章(28): DeepStream 初体验

NVIDIAJetson Nano 2GB 系列文章(29): DeepStream 目标追踪功能

NVIDIAJetson Nano 2GB 系列文章(30): DeepStream 摄像头“实时性能”

NVIDIAJetson Nano 2GB 系列文章(31): DeepStream 多模型组合检测-1

NVIDIAJetson Nano 2GB 系列文章(32): 架构说明与deepstream-test范例

NVIDIAJetsonNano 2GB 系列文章(33): DeepStream 车牌识别与私密信息遮盖

NVIDIA Jetson Nano 2GB 系列文章(34): DeepStream 安装Python开发环境

NVIDIAJetson Nano 2GB 系列文章(35): Python版test1实战说明

NVIDIAJetson Nano 2GB 系列文章(36): 加入USB输入与RTSP输出

NVIDIAJetson Nano 2GB 系列文章(37): 多网路模型合成功能

NVIDIAJetson Nano 2GB 系列文章(38): nvdsanalytics视频分析插件

NVIDIAJetson Nano 2GB 系列文章(39): 结合IoT信息传输

NVIDIAJetson Nano 2GB 系列文章(40): Jetbot系统介绍

NVIDIAJetson Nano 2GB 系列文章(41): 软件环境安装

NVIDIAJetson Nano 2GB 系列文章(42): 无线WIFI的安装与调试

NVIDIAJetson Nano 2GB 系列文章(43): CSI摄像头安装与测试

NVIDIAJetson Nano 2GB 系列文章(44): Jetson的40针引脚

NVIDIAJetson Nano 2GB 系列文章(45): I2C总线与PiOLED

NVIDIAJetson Nano 2GB 系列文章(46): 机电控制设备的安装

NVIDIAJetson Nano 2GB 系列文章(47): 组装过程的注意细节

NVIDIAJetson Nano 2GB 系列文章(48): 用键盘与摇杆控制行动

NVIDIAJetson Nano 2GB 系列文章(49): 智能避撞之现场演示

NVIDIAJetson Nano 2GB 系列文章(50): 智能避障之模型训练

NVIDIAJetson Nano 2GB 系列文章(51): 图像分类法实现找路功能

NVIDIAJetson Nano 2GB 系列文章(52): 图像分类法实现找路功能

NVIDIAJetson Nano 2GB 系列文章(53): 简化模型训练流程的TAO工具套件

NVIDIA Jetson Nano 2GB 系列文章(54):NGC的内容简介与注册密钥

NVIDIA Jetson Nano 2GB 系列文章(55):安装TAO模型训练工具

NVIDIA Jetson Nano 2GB 系列文章(56):启动器CLI指令集与配置文件

NVIDIA Jetson Nano 2GB 系列文章(57):视觉类脚本的环境配置与映射

NVIDIA Jetson Nano 2GB 系列文章(58):视觉类的数据格式

NVIDIA Jetson Nano 2GB 系列文章(59):视觉类的数据增强

NVIDIA Jetson Nano 2GB 系列文章(60):图像分类的模型训练与修剪

NVIDIA Jetson Nano 2GB 系列文章(61):物件检测的模型训练与优化

NVIDIA Jetson Nano 2GB 系列文章(62):物件检测的模型训练与优化-2

NVIDIA Jetson Nano 2GB 系列文章(63):物件检测的模型训练与优化-3

NVIDIA Jetson Nano 2GB 系列文章(64):将模型部署到Jetson设备

NVIDIA Jetson Nano 2GB 系列文章(65):执行部署的 TensorRT 加速引擎

NVIDIA Jetson 系列文章(1):硬件开箱

NVIDIA Jetson 系列文章(2):配置操作系统

NVIDIA Jetson 系列文章(3):安装开发环境

NVIDIA Jetson 系列文章(4):安装DeepStream

NVIDIA Jetson 系列文章(5):使用Docker容器的入门技巧

NVIDIA Jetson 系列文章(6):使用容器版DeepStream

NVIDIA Jetson 系列文章(7):配置DS容器Python开发环境

NVIDIA Jetson 系列文章(8):用DS容器执行Python范例

NVIDIA Jetson 系列文章(9):为容器接入USB摄像头

NVIDIA Jetson 系列文章(10):从头创建Jetson的容器(1)

NVIDIA Jetson 系列文章(11):从头创建Jetson的容器(2)

NVIDIA Jetson 系列文章(12):创建各种YOLO-l4t容器

NVIDIA Triton系列文章(1):应用概论

NVIDIA Triton系列文章(2):功能与架构简介

NVIDIA Triton系列文章(3):开发资源说明


原文标题:NVIDIA Triton 系列文章(4):创建模型仓

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

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

    关注

    22

    文章

    3330

    浏览量

    87798

原文标题:NVIDIA Triton 系列文章(4):创建模型仓

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

收藏 人收藏

    评论

    相关推荐

    使用CUBEAI部署tflite模型到STM32F0中,模型创建失败怎么解决?

    看到CUBE_AI已经支持到STM32F0系列芯片,就想拿来入门嵌入式AI。 生成的模型很小,是可以部署到F0上的,但是一直无法创建成功。 查阅CUBE AI文档说在调用create函数前,要启用
    发表于 03-15 08:10

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

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

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

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

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

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

    如何使用RMxprt创建电机模型

    创建电机模型,通过RMxprt来创建Maxwell 2D和3D几何模型,同时对几何模型进行求解计算,查看相应的设计表单等结果。
    的头像 发表于 12-22 15:59 1886次阅读
    如何使用RMxprt<b class='flag-5'>创建</b>电机<b class='flag-5'>模型</b>

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

    2024 新年首发! NVIDIA模型系列活动 将于 2024 年 1 月 正式启动,由 NVIDIA 和业界专家携手分享大模型应用开
    的头像 发表于 12-20 19:35 354次阅读
    不要错过!<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 451次阅读
    什么是<b class='flag-5'>Triton</b>-shared?<b class='flag-5'>Triton</b>-shared的安装和使用

    Triton编译器的原理和性能

    为Torch inductor的基本组件,以合成针对GPU的高效内核。与传统库使用相比,这具有多种优势。它允许创建各种各样的融合,它可以独立调整,并且它的内存占用更小。本次演讲将介绍Triton编译器,并描述使其能够以最少的用户努力生成闪电般快速内核的过程。
    的头像 发表于 12-16 11:22 1072次阅读
    <b class='flag-5'>Triton</b>编译器的原理和性能

    SaberRD状态机建模工具介绍(一)什么是状态机建模

    状态机建模是使用状态图和方程式的手段,创建基于混合信号的有限状态机模型的一种建模工具。
    的头像 发表于 12-05 09:51 539次阅读
    SaberRD状态机<b class='flag-5'>建模</b>工具介绍(一)什么是状态机<b class='flag-5'>建模</b>

    如何创建机器人模型

    的细节,先来找link和joint,看下这个机器人是由哪些部分组成的,了解完全局之后,再看细节。 创建机器人模型 好啦,讲了这么多,还是要看一个完整的示例。 我们以这款移动机器人模型为例,一起看下它的URDF
    的头像 发表于 11-22 17:09 387次阅读
    如何<b class='flag-5'>创建</b>机器人<b class='flag-5'>模型</b>

    周四研讨会预告 | 注册报名 NVIDIA AI Inference Day - 大模型推理线上研讨会

    由 CSDN 举办的 NVIDIA AI Inference Day - 大模型推理线上研讨会,将帮助您了解 NVIDIA 开源大型语言模型(LLM)推理加速库 TensorRT-LL
    的头像 发表于 10-26 09:05 195次阅读

    如何使用NVIDIA Triton 推理服务器来运行推理管道

    使用集成模型NVIDIA Triton 推理服务器上为 ML 模型管道提供服务
    的头像 发表于 07-05 16:30 1161次阅读
    如何使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b> 推理服务器来运行推理管道

    如何使用NVIDIA Triton Inference Server

    如何使用 PyTriton 在 Python 中部署 AI 模型
    的头像 发表于 07-05 16:30 545次阅读

    IBIS建模:为何以及如何创建您自己的IBIS模型

    与SPICE模型类似。尽管还有本文未介绍其他类型的数字IO,但提取C_comp、I-V数据和V-T数据的程序可以作为创建其他类型IO模型的基础。
    的头像 发表于 06-15 17:06 1434次阅读
    IBIS<b class='flag-5'>建模</b>:为何以及如何<b class='flag-5'>创建</b>您自己的IBIS<b class='flag-5'>模型</b>

    利用 NVIDIA Omniverse 和 Bentley LumenRT 创建实时模拟

    Omniverse ,快速创建引人注目且高质量的可视化效果与项目交付成果。 LumenRT for NVIDIA Omniverse 是市面上首个基于 NVIDIA Omniverse 的工程软件应用。通过集成
    的头像 发表于 05-18 00:35 429次阅读
    利用 <b class='flag-5'>NVIDIA</b> Omniverse 和 Bentley LumenRT <b class='flag-5'>创建</b>实时模拟