Triton推理服务器04-创建模型仓

推理模型仓(inference model repository)是Triton推理服务器的最基础元件,如同数据库(database)服务器必须先创建一个数据库是类似的道理。

推理模型仓(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 NTFSLinux ext3/4文件服务器,也可以是Google云、亚马逊云、微软Asure之类的网上储存空间。

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

目录结构与文件

用途说明

<model_repo1>

  ├── <densenet_onnx>

  │   ├── <1>

  │   │   └── model.onnx

  │   ├── config.pbtxt

  │   └── densenet_labels.txt

  └── <inception_graphdef>

       ├── <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_repo1model_repo2
  2. 第二层“模型名称”:在模型仓下面根据模型名称创建目录,通常习惯使用“神经网络名称_后端种类”的组合格式,例如
  • densenet_onnx表示为ONNX后端的densenet网络模型;
  • inception_graphdef表示为TensorFlow graphdef后端的inception模型。
  1. 第三层“版本号”:用纯数字表示,因为相同的模型可能存在不同训练回合(epoch)、不同精度的多个版本。
  1. 文件内容:将以下三种文件内容,分别放置在对应的目录下
  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.graphdefmodel.savedmodel
  • OpenVINO模型:需要由.xml.bin组成,例如model.xmlmodel.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  triton

git clone https://github.com/triton-inference-server/server

cd server/docs/examples

tree 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_onnxinception_graphdef目录下,并没有提供对用的模型文件,因此需要执行以下指令将这两个模型文件下载,并存放在指定位置里:

$

./fetch_models.sh

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

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

来源:业界供稿

0赞

好文章,需要你的鼓励

2023

01/03

16:54

分享

点赞

邮件订阅