推理模型倉(inference model repository)是 Triton 推理服務(wù)器的最基礎(chǔ)元件,如同數(shù)據(jù)庫(database)服務(wù)器必須先創(chuàng)建一個(gè)數(shù)據(jù)庫是類似的道理。要使用 Triton 推理服務(wù)器的第一件任務(wù),就是先創(chuàng)建一個(gè)模型存儲(chǔ)倉來作為服務(wù)器的組織中心,將所需的模型、配置文件和其他資源都位于這個(gè)存儲(chǔ)倉中,才能讓 Triton 進(jìn)行推理任務(wù)。
進(jìn)入https://github.com/triton-inference-server/server/tree/main/docs這個(gè)最完整的說明文件區(qū),在“User Guide”里的前 5 個(gè)步驟,就是為 Triton 服務(wù)器創(chuàng)建與管理模型倉的任務(wù),依序如下:
創(chuàng)建模型儲(chǔ)存?zhèn)}(Creating a Model Repository)
撰寫模型配置文件(Writing a Model Configuration)
創(chuàng)建模型的流水線(Buillding a Model Pipeline)
管理模型可用性(Managing Model Availablity)
收集服務(wù)器指標(biāo)(Collecting Server Metrics)
本文先帶著讀者創(chuàng)建模型存儲(chǔ)倉,這是執(zhí)行 Triton 服務(wù)器之前必須執(zhí)行的環(huán)節(jié),另外四個(gè)部分會(huì)在后續(xù)文章中陸續(xù)探索。
這個(gè)儲(chǔ)存?zhèn)}的要求相對(duì)簡單,只要是常用的文件系統(tǒng)就行,包括企業(yè)內(nèi)部使用的 Windows NTFS 或 Linux ext3/4 文件服務(wù)器,也可以是 Google 云、亞馬遜云、微軟 Asure 之類的網(wǎng)上儲(chǔ)存空間。
Triton 模型倉是以“目錄結(jié)構(gòu)”為主體的方式搭建,將配套的文件放置對(duì)應(yīng)的位置里就可以,下面是一個(gè)簡單的范例:
目錄結(jié)構(gòu)與文件 |
├── │ ├── <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的標(biāo)注文件 目錄:模型inception_graphdef 目錄:模型inception_graphdef版本1 文件:模型inception_graphdef版本1的模型文件 目錄:模型inception_graphdef版本2 文件:模型inception_graphdef版本2的模型文件 文件:模型inception_graphdef的配置文件 文件:模型inception_graphdef的標(biāo)注文件 |
這個(gè)模型倉主要分為以下兩大部分:
1. 目錄結(jié)構(gòu):需要?jiǎng)?chuàng)建以下三層目錄,并根據(jù)各層定義進(jìn)行命名
(1) 第一層“倉名稱”:簡單創(chuàng)建一個(gè)文件夾作為模型該模型倉的根路徑,一臺(tái)設(shè)備上可以有任意個(gè)模型倉,例如 model_repo1、model_repo2;
(2) 第二層“模型名稱”:在模型倉下面根據(jù)模型名稱創(chuàng)建目錄,通常習(xí)慣使用“神經(jīng)網(wǎng)絡(luò)名稱_后端種類”的組合格式,例如
densenet_onnx 表示為 ONNX 后端的 densenet 網(wǎng)絡(luò)模型;
inception_graphdef 表示為 TensorFlow graphdef 后端的 inception 模型。
(3) 第三層“版本號(hào)”:用純數(shù)字表示,因?yàn)橄嗤哪P涂赡艽嬖诓煌?xùn)練回合(epoch)、不同精度的多個(gè)版本。
2. 文件內(nèi)容:將以下三種文件內(nèi)容,分別放置在對(duì)應(yīng)的目錄下
(1)配置文件:放在第二層的模型名稱目錄下,通常命名為 config.pbtxt,每個(gè)模型都有各自的配置文件,里面存放著該模型執(zhí)行推理時(shí)所需要的信息與參數(shù),是 Triton 模型倉里最重要的部分,主要內(nèi)容將在后面有專門文章提供詳細(xì)說明。
(2)標(biāo)注文件(如果有):放在第二層的模型名稱目錄下,例如 densenet_labels.txt
(3)模型文件:放在第三層的版本目錄下,就是最終執(zhí)行推理功能的神經(jīng)網(wǎng)絡(luò)模型,其附加文件名根據(jù)訓(xùn)練時(shí)所用的框架而定,如下所列
TensorRT 模型:附加名為 .plan,例如 model.plan
ONNX 模型:附加名為 .onnx,例如 model.onnx
TorchScript 模型:附加名為 .pt,例如 model.pt
TensorFlow 模型:根據(jù)存儲(chǔ)時(shí)的方式有 .graphdef 與 .savedmodel 兩種,例如 model.graphdef 或 model.savedmodel
OpenVINO 模型:需要由 .xml 與 .bin 組成,例如 model.xml 與 model.bin
Python 模型:附加名為 .py,例如 model.py
DALI 模型:附加名為 .dali,例如 model.dali
即便是在云存儲(chǔ)上,也只要根據(jù)上述要求創(chuàng)建目錄結(jié)構(gòu),并將各類文件放置在對(duì)應(yīng)目錄下,然后啟動(dòng) Triton 推理服務(wù)器時(shí)使用“--model-repostory=”參數(shù),指向模型倉根路徑的位置就可以,例如以下狀況:
在本機(jī)上
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 服務(wù)器啟動(dòng)時(shí),會(huì)將模型倉下的模型載入計(jì)算設(shè)備的內(nèi)存之中,并不需要與模型倉所在服務(wù)器進(jìn)行實(shí)時(shí)數(shù)據(jù)交換,因此啟動(dòng)之初會(huì)消耗比較多時(shí)間,開始執(zhí)行推理計(jì)算之后是不會(huì)受到網(wǎng)絡(luò)速度影響推理性能。
為了協(xié)助讀者跟容易理解模型倉的使用,我們以 NVIDIA Jetson AGX Orin 設(shè)備作為實(shí)驗(yàn)平臺(tái),先下載https://github.com/triton-inference-server/server開源倉,里面的docs目錄下有個(gè)examples/model_repository就是個(gè)模型倉范例,里面有 8 個(gè)簡單的模型,可以做些簡單的測(cè)試與體驗(yàn)。現(xiàn)在請(qǐng)執(zhí)行以下指令:
cd$HOME&&mkdirtriton&&cdtriton
git clone https://github.com/triton-inference-server/server
cd server/docs/examples
treemodel_repository
就會(huì)看到如下面左方的列表,共有 8 個(gè)模型文件夾:
目錄結(jié)構(gòu)與文件 |
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的標(biāo)注文件 目錄:模型inception_graphdef 文件:模型inception_graphdef的配置文件 文件:模型inception_graphdef的標(biāo)注文件 目錄:模型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的配置文件 |
我們可以看到每個(gè)文件夾里面都有 1 個(gè)獨(dú)立的 config.pbtxt 配置文件,而且內(nèi)容都不盡相同,這是針對(duì)不同模型所設(shè)置的內(nèi)容與參數(shù)。
在下載的模型倉里的 densenet_onnx 與 inception_graphdef 目錄下,并沒有提供對(duì)用的模型文件,因此需要執(zhí)行以下指令將這兩個(gè)模型文件下載,并存放在指定位置里:
./fetch_models.sh
現(xiàn)在就能看到在 densenet_onnx 與 inception_graphdef 各生成版本 <1> 目錄,并且各有一個(gè) model.onnx 與 model.graphdef 模型文件。
接下去只要安裝好 Triton 服務(wù)器軟件,就能開始使用這個(gè)模型倉來進(jìn)行測(cè)試與體驗(yàn),這是下一篇文章會(huì)帶著大家進(jìn)行安裝的部分。
推薦閱讀
NVIDIA Jetson Nano 2GB 系列文章(1):開箱介紹
NVIDIA Jetson Nano 2GB 系列文章(2):安裝系統(tǒng)
NVIDIA Jetson Nano 2GB 系列文章(3):網(wǎng)絡(luò)設(shè)置及添加 SWAPFile 虛擬內(nèi)存
NVIDIA Jetson Nano 2GB 系列文章(4):體驗(yàn)并行計(jì)算性能
NVIDIA Jetson Nano 2GB 系列文章(5):體驗(yàn)視覺功能庫
NVIDIA Jetson Nano 2GB 系列文章(6):安裝與調(diào)用攝像頭
NVIDIA Jetson Nano 2GB 系列文章(7):通過 OpenCV 調(diào)用 CSI/USB 攝像頭
NVIDIA Jetson Nano 2GB 系列文章(8):執(zhí)行常見機(jī)器視覺應(yīng)用
NVIDIA Jetson Nano 2GB 系列文章(9):調(diào)節(jié) CSI 圖像質(zhì)量
NVIDIA Jetson Nano 2GB 系列文章(10):顏色空間動(dòng)態(tài)調(diào)節(jié)技巧
NVIDIA Jetson Nano 2GB 系列文章(11):你應(yīng)該了解的 OpenCV
NVIDIA Jetson Nano 2GB 系列文章(12):人臉定位
NVIDIA Jetson Nano 2GB 系列文章(13):身份識(shí)別
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” 擴(kuò)充參數(shù)解析功能
NVIDIA Jetson Nano 2GB 系列文章(21):身份識(shí)別
NVIDIA Jetson Nano 2GB 系列文章(22):“Hello AI World” 圖像分類代碼
NVIDIA Jetson Nano 2GB 系列文章(23):“Hello AI World 的物件識(shí)別應(yīng)用
NVIDIAJetson Nano 2GB 系列文章(24): “Hello AI World” 的物件識(shí)別應(yīng)用
NVIDIAJetson Nano 2GB 系列文章(25): “Hello AI World” 圖像分類的模型訓(xùn)練
NVIDIAJetson Nano 2GB 系列文章(26): “Hello AI World” 物件檢測(cè)的模型訓(xùn)練
NVIDIAJetson Nano 2GB 系列文章(27): DeepStream 簡介與啟用
NVIDIAJetson Nano 2GB 系列文章(28): DeepStream 初體驗(yàn)
NVIDIAJetson Nano 2GB 系列文章(29): DeepStream 目標(biāo)追蹤功能
NVIDIAJetson Nano 2GB 系列文章(30): DeepStream 攝像頭“實(shí)時(shí)性能”
NVIDIAJetson Nano 2GB 系列文章(31): DeepStream 多模型組合檢測(cè)-1
NVIDIAJetson Nano 2GB 系列文章(32): 架構(gòu)說明與deepstream-test范例
NVIDIAJetsonNano 2GB 系列文章(33): DeepStream 車牌識(shí)別與私密信息遮蓋
NVIDIA Jetson Nano 2GB 系列文章(34): DeepStream 安裝Python開發(fā)環(huán)境
NVIDIAJetson Nano 2GB 系列文章(35): Python版test1實(shí)戰(zhàn)說明
NVIDIAJetson Nano 2GB 系列文章(36): 加入U(xiǎn)SB輸入與RTSP輸出
NVIDIAJetson Nano 2GB 系列文章(37): 多網(wǎng)路模型合成功能
NVIDIAJetson Nano 2GB 系列文章(38): nvdsanalytics視頻分析插件
NVIDIAJetson Nano 2GB 系列文章(39): 結(jié)合IoT信息傳輸
NVIDIAJetson Nano 2GB 系列文章(40): Jetbot系統(tǒng)介紹
NVIDIAJetson Nano 2GB 系列文章(41): 軟件環(huán)境安裝
NVIDIAJetson Nano 2GB 系列文章(42): 無線WIFI的安裝與調(diào)試
NVIDIAJetson Nano 2GB 系列文章(43): CSI攝像頭安裝與測(cè)試
NVIDIAJetson Nano 2GB 系列文章(44): Jetson的40針引腳
NVIDIAJetson Nano 2GB 系列文章(46): 機(jī)電控制設(shè)備的安裝
NVIDIAJetson Nano 2GB 系列文章(47): 組裝過程的注意細(xì)節(jié)
NVIDIAJetson Nano 2GB 系列文章(48): 用鍵盤與搖桿控制行動(dòng)
NVIDIAJetson Nano 2GB 系列文章(49): 智能避撞之現(xiàn)場演示
NVIDIAJetson Nano 2GB 系列文章(50): 智能避障之模型訓(xùn)練
NVIDIAJetson Nano 2GB 系列文章(51): 圖像分類法實(shí)現(xiàn)找路功能
NVIDIAJetson Nano 2GB 系列文章(52): 圖像分類法實(shí)現(xiàn)找路功能
NVIDIAJetson Nano 2GB 系列文章(53): 簡化模型訓(xùn)練流程的TAO工具套件
NVIDIA Jetson Nano 2GB 系列文章(54):NGC的內(nèi)容簡介與注冊(cè)密鑰
NVIDIA Jetson Nano 2GB 系列文章(55):安裝TAO模型訓(xùn)練工具
NVIDIA Jetson Nano 2GB 系列文章(56):啟動(dòng)器CLI指令集與配置文件
NVIDIA Jetson Nano 2GB 系列文章(57):視覺類腳本的環(huán)境配置與映射
NVIDIA Jetson Nano 2GB 系列文章(58):視覺類的數(shù)據(jù)格式
NVIDIA Jetson Nano 2GB 系列文章(59):視覺類的數(shù)據(jù)增強(qiáng)
NVIDIA Jetson Nano 2GB 系列文章(60):圖像分類的模型訓(xùn)練與修剪
NVIDIA Jetson Nano 2GB 系列文章(61):物件檢測(cè)的模型訓(xùn)練與優(yōu)化
NVIDIA Jetson Nano 2GB 系列文章(62):物件檢測(cè)的模型訓(xùn)練與優(yōu)化-2
NVIDIA Jetson Nano 2GB 系列文章(63):物件檢測(cè)的模型訓(xùn)練與優(yōu)化-3
NVIDIA Jetson Nano 2GB 系列文章(64):將模型部署到Jetson設(shè)備
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):為容器接入U(xiǎn)SB攝像頭
NVIDIA Jetson 系列文章(10):從頭創(chuàng)建Jetson的容器(1)
NVIDIA Jetson 系列文章(11):從頭創(chuàng)建Jetson的容器(2)
NVIDIA Jetson 系列文章(12):創(chuàng)建各種YOLO-l4t容器
NVIDIA Triton系列文章(1):應(yīng)用概論
NVIDIA Triton系列文章(2):功能與架構(gòu)簡介
NVIDIA Triton系列文章(3):開發(fā)資源說明
原文標(biāo)題:NVIDIA Triton 系列文章(4):創(chuàng)建模型倉
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3720瀏覽量
90683
原文標(biāo)題:NVIDIA Triton 系列文章(4):創(chuàng)建模型倉
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論