推理模型倉(inference model repository)是 Triton 推理服務器的最基礎元件,如同數(shù)據(jù)庫(database)服務器必須先創(chuàng)建一個數(shù)據(jù)庫是類似的道理。要使用 Triton 推理服務器的第一件任務,就是先創(chuàng)建一個模型存儲倉來作為服務器的組織中心,將所需的模型、配置文件和其他資源都位于這個存儲倉中,才能讓 Triton 進行推理任務。
進入https://github.com/triton-inference-server/server/tree/main/docs這個最完整的說明文件區(qū),在“User Guide”里的前 5 個步驟,就是為 Triton 服務器創(chuàng)建與管理模型倉的任務,依序如下:
創(chuàng)建模型儲存?zhèn)}(Creating a Model Repository)
撰寫模型配置文件(Writing a Model Configuration)
創(chuàng)建模型的流水線(Buillding a Model Pipeline)
管理模型可用性(Managing Model Availablity)
收集服務器指標(Collecting Server Metrics)
本文先帶著讀者創(chuàng)建模型存儲倉,這是執(zhí)行 Triton 服務器之前必須執(zhí)行的環(huán)節(jié),另外四個部分會在后續(xù)文章中陸續(xù)探索。
這個儲存?zhèn)}的要求相對簡單,只要是常用的文件系統(tǒng)就行,包括企業(yè)內部使用的 Windows NTFS 或 Linux ext3/4 文件服務器,也可以是 Google 云、亞馬遜云、微軟 Asure 之類的網(wǎng)上儲存空間。
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. 目錄結構:需要創(chuàng)建以下三層目錄,并根據(jù)各層定義進行命名
(1) 第一層“倉名稱”:簡單創(chuàng)建一個文件夾作為模型該模型倉的根路徑,一臺設備上可以有任意個模型倉,例如 model_repo1、model_repo2;
(2) 第二層“模型名稱”:在模型倉下面根據(jù)模型名稱創(chuàng)建目錄,通常習慣使用“神經(jīng)網(wǎng)絡名稱_后端種類”的組合格式,例如
densenet_onnx 表示為 ONNX 后端的 densenet 網(wǎng)絡模型;
inception_graphdef 表示為 TensorFlow graphdef 后端的 inception 模型。
(3) 第三層“版本號”:用純數(shù)字表示,因為相同的模型可能存在不同訓練回合(epoch)、不同精度的多個版本。
2. 文件內容:將以下三種文件內容,分別放置在對應的目錄下
(1)配置文件:放在第二層的模型名稱目錄下,通常命名為 config.pbtxt,每個模型都有各自的配置文件,里面存放著該模型執(zhí)行推理時所需要的信息與參數(shù),是 Triton 模型倉里最重要的部分,主要內容將在后面有專門文章提供詳細說明。
(2)標注文件(如果有):放在第二層的模型名稱目錄下,例如 densenet_labels.txt
(3)模型文件:放在第三層的版本目錄下,就是最終執(zhí)行推理功能的神經(jīng)網(wǎng)絡模型,其附加文件名根據(jù)訓練時所用的框架而定,如下所列
TensorRT 模型:附加名為 .plan,例如 model.plan
ONNX 模型:附加名為 .onnx,例如 model.onnx
TorchScript 模型:附加名為 .pt,例如 model.pt
TensorFlow 模型:根據(jù)存儲時的方式有 .graphdef 與 .savedmodel 兩種,例如 model.graphdef 或 model.savedmodel
OpenVINO 模型:需要由 .xml 與 .bin 組成,例如 model.xml 與 model.bin
Python 模型:附加名為 .py,例如 model.py
DALI 模型:附加名為 .dali,例如 model.dali
即便是在云存儲上,也只要根據(jù)上述要求創(chuàng)建目錄結構,并將各類文件放置在對應目錄下,然后啟動 Triton 推理服務器時使用“--model-repostory=”參數(shù),指向模型倉根路徑的位置就可以,例如以下狀況:
复制 在本機上
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 服務器啟動時,會將模型倉下的模型載入計算設備的內存之中,并不需要與模型倉所在服務器進行實時數(shù)據(jù)交換,因此啟動之初會消耗比較多時間,開始執(zhí)行推理計算之后是不會受到網(wǎng)絡速度影響推理性能。
為了協(xié)助讀者跟容易理解模型倉的使用,我們以 NVIDIA Jetson AGX Orin 設備作為實驗平臺,先下載https://github.com/triton-inference-server/server開源倉,里面的docs目錄下有個examples/model_repository就是個模型倉范例,里面有 8 個簡單的模型,可以做些簡單的測試與體驗。現(xiàn)在請執(zhí)行以下指令:
复制 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 配置文件,而且內容都不盡相同,這是針對不同模型所設置的內容與參數(shù)。
在下載的模型倉里的 densenet_onnx 與 inception_graphdef 目錄下,并沒有提供對用的模型文件,因此需要執(zhí)行以下指令將這兩個模型文件下載,并存放在指定位置里:
复制 ./fetch_models.sh
現(xiàn)在就能看到在 densenet_onnx 與 inception_graphdef 各生成版本 <1> 目錄,并且各有一個 model.onnx 與 model.graphdef 模型文件。
接下去只要安裝好 Triton 服務器軟件,就能開始使用這個模型倉來進行測試與體驗,這是下一篇文章會帶著大家進行安裝的部分。
推薦閱讀
NVIDIA Jetson Nano 2GB 系列文章(1):開箱介紹

NVIDIA Jetson Nano 2GB 系列文章(2):安裝系統(tǒng)

NVIDIA Jetson Nano 2GB 系列文章(3):網(wǎng)絡設置及添加 SWAPFile 虛擬內存

NVIDIA Jetson Nano 2GB 系列文章(4):體驗并行計算性能

NVIDIA Jetson Nano 2GB 系列文章(5):體驗視覺功能庫

NVIDIA Jetson Nano 2GB 系列文章(6):安裝與調用攝像頭


NVIDIA Jetson Nano 2GB 系列文章(8):執(zhí)行常見機器視覺應用

NVIDIA Jetson Nano 2GB 系列文章(9):調節(jié) CSI 圖像質量

NVIDIA Jetson Nano 2GB 系列文章(10):顏色空間動態(tài)調節(jié)技巧

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 環(huán)境安裝

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” 擴充參數(shù)解析功能

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開發(fā)環(huán)境

NVIDIAJetson Nano 2GB 系列文章(35): Python版test1實戰(zhàn)說明

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

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

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

NVIDIAJetson Nano 2GB 系列文章(39): 結合IoT信息傳輸

NVIDIAJetson Nano 2GB 系列文章(40): Jetbot系統(tǒng)介紹

NVIDIAJetson Nano 2GB 系列文章(41): 軟件環(huán)境安裝

NVIDIAJetson Nano 2GB 系列文章(42): 無線WIFI的安裝與調試

NVIDIAJetson Nano 2GB 系列文章(43): CSI攝像頭安裝與測試

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


NVIDIAJetson Nano 2GB 系列文章(46): 機電控制設備的安裝

NVIDIAJetson Nano 2GB 系列文章(47): 組裝過程的注意細節(jié)

NVIDIAJetson Nano 2GB 系列文章(48): 用鍵盤與搖桿控制行動

NVIDIAJetson Nano 2GB 系列文章(49): 智能避撞之現(xiàn)場演示

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

NVIDIAJetson Nano 2GB 系列文章(51): 圖像分類法實現(xiàn)找路功能

NVIDIAJetson Nano 2GB 系列文章(52): 圖像分類法實現(xiàn)找路功能

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):視覺類腳本的環(huán)境配置與映射

NVIDIA Jetson Nano 2GB 系列文章(58):視覺類的數(shù)據(jù)格式

NVIDIA Jetson Nano 2GB 系列文章(59):視覺類的數(shù)據(jù)增強

NVIDIA Jetson Nano 2GB 系列文章(60):圖像分類的模型訓練與修剪

NVIDIA Jetson Nano 2GB 系列文章(61):物件檢測的模型訓練與優(yōu)化

NVIDIA Jetson Nano 2GB 系列文章(62):物件檢測的模型訓練與優(yōu)化-2

NVIDIA Jetson Nano 2GB 系列文章(63):物件檢測的模型訓練與優(yōu)化-3

NVIDIA Jetson Nano 2GB 系列文章(64):將模型部署到Jetson設備

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

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

NVIDIA Jetson 系列文章(2):配置操作系統(tǒng)

NVIDIA Jetson 系列文章(3):安裝開發(fā)環(huán)境

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

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

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

NVIDIA Jetson 系列文章(7):配置DS容器Python開發(fā)環(huán)境

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

NVIDIA Jetson 系列文章(9):為容器接入USB攝像頭

NVIDIA Jetson 系列文章(10):從頭創(chuàng)建Jetson的容器(1)

NVIDIA Jetson 系列文章(11):從頭創(chuàng)建Jetson的容器(2)

NVIDIA Jetson 系列文章(12):創(chuàng)建各種YOLO-l4t容器

NVIDIA Triton系列文章(1):應用概論

NVIDIA Triton系列文章(2):功能與架構簡介

NVIDIA Triton系列文章(3):開發(fā)資源說明

原文標題:NVIDIA Triton 系列文章(4):創(chuàng)建模型倉
文章出處:【微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。
-
英偉達
+關注
關注
22文章
3900瀏覽量
92846
原文標題:NVIDIA Triton 系列文章(4):創(chuàng)建模型倉
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
英偉達GTC25亮點:NVIDIA Dynamo開源庫加速并擴展AI推理模型
基于RC熱阻SPICE模型的GaNPX?和PDFN封裝的熱特性建模

NVIDIA推出開放式Llama Nemotron系列模型
Triton編譯器的優(yōu)化技巧
Triton編譯器的優(yōu)勢與劣勢分析
Triton編譯器在機器學習中的應用
Triton編譯器功能介紹 Triton編譯器使用教程
NVIDIA助力企業(yè)創(chuàng)建定制AI應用
NVIDIA助力提供多樣、靈活的模型選擇
NVIDIA Nemotron-4 340B模型幫助開發(fā)者生成合成訓練數(shù)據(jù)

采用OpenUSD和NVIDIA NIM微服務創(chuàng)建精準品牌視覺
NVIDIA AI Foundry 為全球企業(yè)打造自定義 Llama 3.1 生成式 AI 模型

評論