前面兩篇文章,已經(jīng)將 Triton 的“無狀態(tài)模型”、“有狀態(tài)模型”與標準調(diào)度器的動態(tài)批量處理器與序列批量處理器的使用方式,做了較完整的說明。
大部分的實際應用都不是單純的推理模型就能完成服務的需求,需要形成前后關系的工作流水線。例如一個二維碼掃描的應用,除了需要第一關的二維碼識別模型之外,后面可能還得將識別出來的字符傳遞給語句識別的推理模型、關鍵字搜索引擎等功能,最后找到用戶所需要的信息,反饋給提出需求的用戶端。
本文的內(nèi)容要說明 Triton 服務器形成工作流水線的“集成推理”功能,里面包括“集成模型(ensemble model)”與“集成調(diào)度器(ensemble scheduler)”兩個部分。下面是個簡單的推理流水線示意圖,目的是對請求的輸入圖像最終反饋“圖像分類”與“語義分割”兩個推理結果:
當接收到集成模型的推斷請求時,集成調(diào)度器將:
- 確認請求中的“IMAGE”張量映射到預處理模型中的輸入“RAW_IMAGE”。
- 檢查集合中的模型,并向預處理模型發(fā)送內(nèi)部請求,因為所需的所有輸入張量都已就緒。
- 識別內(nèi)部請求的完成,收集輸出張量并將內(nèi)容映射到“預處理圖像”,這是集成中已知的唯一名稱。
- 將新收集的張量映射到集合中模型的輸入。在這種情況下,“classification_model”和“segmentation_model”的輸入將被映射并標記為就緒。
- 檢查需要新收集的張量的模型,并向輸入就緒的模型發(fā)送內(nèi)部請求,在本例中是分類模型和分割模型。請注意,響應將根據(jù)各個模型的負載和計算時間以任意順序排列。
- 重復步驟 3-5,直到不再發(fā)送內(nèi)部請求,然后用集成輸出名稱的張量去響應推理請求。
- 使用 image_prepoecess_model 模型,將原始圖像處理成preprocessed_image 數(shù)據(jù);
- 將 preprocessed_image 數(shù)據(jù)傳遞給 classification_model 模型,執(zhí)行圖像分類推理,最終返回“CLASSIFICATION”結果;
- 將 preprocessed_image 數(shù)據(jù)傳遞給 segmentation_model 模型,執(zhí)行語義分割推理計算,最終返回“SEGMENTATION”結果;
- 支持一個或多個模型的流水線以及這些模型之間輸入和輸出張量的連接;
- 處理多個模型的模型拼接或數(shù)據(jù)流,例如“數(shù)據(jù)處理->推理->數(shù)據(jù)后處理”等;
- 收集每個步驟中的輸出張量,并根據(jù)規(guī)范將其作為其他步驟的輸入張量;
- 所集成的模型能繼承所涉及模型的特征,在請求方的元數(shù)據(jù)必須符合集成中的模型;
- 在模型倉里為流水線創(chuàng)建一個新的“組合模型”文件夾,例如為“ensemble_model”;
- 在目路下創(chuàng)建新的 config.pbtxt,并且使用“platform: "ensemble"”來定義這個模型要執(zhí)行集成功能;
- 定義集成模型:
name:"ensemble_model"
platform: "ensemble"
max_batch_size: 1
input [
{
name: "IMAGE"
data_type: TYPE_STRING
dims: [ 1 ]
}
]
output [
{
name: "CLASSIFICATION"
data_type: TYPE_FP32
dims: [ 1000 ]
},
{
name: "SEGMENTATION"
data_type: TYPE_FP32
dims: [ 3, 224, 224 ]
}
]
從這個內(nèi)容中可以看出,Triton 服務器將這個集成模型視為一個獨立模型。
4. 定義模型的集成調(diào)度器:這部分使用“ensemble_scheduling”來調(diào)動集成調(diào)度器,將使用到模型與數(shù)據(jù)形成完整的交互關系。
在上面示例圖中,灰色區(qū)塊所形成的工作流水線中,使用到 image_prepoecess_model、classification_model、segmentation_model 三個模型,以及 preprocessed_image 數(shù)據(jù)在模型中進行傳遞。
下面提供這部分的范例配置內(nèi)容,一開始使用“ensemble_scheduling”來調(diào)用集成調(diào)度器,里面再用“step”來定義模組之間的執(zhí)行關系,透過模型的“input_map”與“output_map”的“key:value”對的方式,串聯(lián)起模型之間的交互動作:
ensemble_scheduling{
step [
{
model_name: "image_preprocess_model"
model_version: -1
input_map {
key: "RAW_IMAGE"
value: "IMAGE"
}
output_map {
key: "PREPROCESSED_OUTPUT"
value: "preprocessed_image"
}
},
{
model_name: "classification_model"
model_version: -1
input_map {
key: "FORMATTED_IMAGE"
value: "preprocessed_image"
}
output_map {
key: "CLASSIFICATION_OUTPUT"
value: "CLASSIFICATION"
}
},
{
model_name: "segmentation_model"
model_version: -1
input_map {
key: "FORMATTED_IMAGE"
value: "preprocessed_image"
}
output_map {
key: "SEGMENTATION_OUTPUT"
value: "SEGMENTATION"
}
}
]
}
這里簡單說明一下工作流程:
(1) 模型 image_preprocess_model 接收外部輸入的 IMAGE 數(shù)據(jù),進行圖像預處理任務,輸出 preprocessed_image 數(shù)據(jù);(2) 模型 classification_model 的輸入為 preprocessed_image,表示這個模型的工作是在 image_preprocess_model 之后的任務,執(zhí)行的推理輸出為 CLASSIFICATION;(3) 模型 segmentation_model 的輸入為 preprocessed_image,表示這個模型的工作是在 image_preprocess_model 之后的任務,執(zhí)行的退輸出為 SEGMENTATION;(4) 上面兩步驟可以看出 classification_model 與 segmentation_model 屬于分支的同級模型,與上面工作流圖中的要求一致。
完成以上的步驟,就能用集成模型與集成調(diào)度器的搭配,來創(chuàng)建一個完整的推理工作流任務,相當簡單。
不過這類集成模型中,還有以下幾個需要注意的重點:
- 這是 Triton 服務器用來執(zhí)行用戶定義模型流水線的抽象形式,由于沒有與集成模型關聯(lián)的物理實例,因此不能為其指定 instance_group 字段;
- 不過集成模型內(nèi)容所組成的個別模型(例如image_preprocess_model),可以在其配置文件中指定 instance_group,并在集成接收到多個請求時單獨支持并行執(zhí)行。
- 由于集成模型將繼承所涉及模型的特性,因此在請求起點的元數(shù)據(jù)(本例為“IMAGE”)必須符合集成中的模型,如果其中一個模型是有狀態(tài)模型,那么集成模型的推理請求應該包含有狀態(tài)模型中提到的信息,這些信息將由調(diào)度器提供給有狀態(tài)模型。
原文標題:NVIDIA Triton 系列文章(13):模型與調(diào)度器-3
文章出處:【微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
英偉達
+關注
關注
22文章
3771瀏覽量
91000
原文標題:NVIDIA Triton 系列文章(13):模型與調(diào)度器-3
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
NVIDIA推出全新生成式AI模型Fugatto
NVIDIA 開發(fā)了一個全新的生成式 AI 模型。利用輸入的文本和音頻,該模型可以創(chuàng)作出包含任意的音樂、人聲和聲音組合的作品。
NVIDIA助力提供多樣、靈活的模型選擇
在本案例中,Dify 以模型中立以及開源生態(tài)的優(yōu)勢,為廣大 AI 創(chuàng)新者提供豐富的模型選擇。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服務
NVIDIA Nemotron-4 340B模型幫助開發(fā)者生成合成訓練數(shù)據(jù)
Nemotron-4 340B 是針對 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優(yōu)化的模型系列,該系列包含最先進
英偉達推出全新NVIDIA AI Foundry服務和NVIDIA NIM推理微服務
NVIDIA 宣布推出全新 NVIDIA AI Foundry 服務和 NVIDIA NIM 推理微服務,與同樣剛推出的 Llama 3.1 系列開源
NVIDIA AI Foundry 為全球企業(yè)打造自定義 Llama 3.1 生成式 AI 模型
借助 NVIDIA AI Foundry,企業(yè)和各國現(xiàn)在能夠使用自有數(shù)據(jù)與 Llama 3.1 405B 和 NVIDIA Nemotron 模型配對,來構建“超級模型”
發(fā)表于 07-24 09:39
?706次閱讀
NVIDIA Omniverse 將為全新 OpenPBR 材質(zhì)模型提供原生支持
、組合、模擬和協(xié)作的可擴展框架和生態(tài)系統(tǒng),OpenUSD 使開發(fā)者能夠構建可互操作的 3D 工作流,開啟了工業(yè)數(shù)字化的新時代。 此外,NVIDIA Omniverse 還將為全新 OpenPBR 材質(zhì)模型
NVIDIA與Google DeepMind合作推動大語言模型創(chuàng)新
支持 NVIDIA NIM 推理微服務的谷歌最新開源模型 PaliGemma 首次亮相。
NVIDIA加速微軟最新的Phi-3 Mini開源語言模型
NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語言模型。TensorRT-LLM 是一個開源庫,用于優(yōu)化從 PC 到云端的
NVIDIA全面加快Meta Llama 3的推理速度
Meta 最新開源大語言模型采用 NVIDIA 技術構建,其經(jīng)過優(yōu)化后可在云、數(shù)據(jù)中心、邊緣和 PC 的 NVIDIA GPU 上運行。
Anthropic發(fā)布Claude3系列模型
近日,人工智能領域的創(chuàng)新者 Anthropic 宣布推出其備受矚目的 Claude 3 系列大型語言模型(LLM)。這一系列模型在各種認知任
使用NVIDIA Triton推理服務器來加速AI預測
這家云計算巨頭的計算機視覺和數(shù)據(jù)科學服務使用 NVIDIA Triton 推理服務器來加速 AI 預測。
在AMD GPU上如何安裝和配置triton?
最近在整理python-based的benchmark代碼,反過來在NV的GPU上又把Triton裝了一遍,發(fā)現(xiàn)Triton的github repo已經(jīng)給出了對應的llvm的commit id以及對應的編譯細節(jié),然后跟著走了一遍,也順利的安裝成功,只需要按照如下方式即可完
【BBuf的CUDA筆記】OpenAI Triton入門筆記一
這里來看官方的介紹:https://openai.com/research/triton ,從官方的介紹中我們可以看到OpenAI Triton的產(chǎn)生動機以及它的目標是什么,還可以看到一些經(jīng)典算法的實現(xiàn)例子展示。
利用NVIDIA產(chǎn)品技術組合提升用戶體驗
本案例通過利用NVIDIA TensorRT-LLM加速指令識別深度學習模型,并借助NVIDIA Triton推理服務器在
評論