天天看點

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

作者:麗台科技

大部分要學習 Triton 推理伺服器的入門者,都會被搜尋引擎或網上文章引導至官方的 處(如下截圖),然後從 “Get Started” 直接安裝伺服器與使用者端軟體、建立基礎的模型倉、執行一些最基本的範例。

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

這條路徑雖然能在很短時間内跑起 Triton 的應用,但在未掌握整個應用架構之前便貿然執行,反倒容易讓初學者陷入迷失的狀态,是以建議初學者最好先對 Triton 項目有比較更完整的了解之後,再執行前面的 “Get Started” 就會更容易掌握項目的精髓。要獲得比較完整的 Triton 技術資料,就得到項目開源倉裡去尋找。與 NVIDIA 其他放在 或 的項目不同,Triton 項目有獨立的開源倉,位置在 ,進入開源倉後會看到如下截屏的内容:

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

下面列出四大部分的技術資源:

1. Getting Start(新手上路):

這裡提供三個連結,比較重要的是 “Quick Start(快速啟動)” 的部分,提供以下三個步驟就能輕松執行 Triton 的基礎示範:

(1) Create a Model Repository(建立模型倉)(2) Launch Triton(啟動Triton伺服器與使用者端)(3) Send an Inference Request(送出推理要求)

2. Production Documentation(生産檔案):

這裡最重要的是 “server documents on GitHub” 連結,點進去後會進入整個 Triton 項目中最完整的技術檔案中心(如下圖),除 Installation 與 Getting Started 屬于入門範疇,其餘 User Guide、API Guide、Additional Resources 與 Customization Guide 等四個部分,都是 Triton 推理伺服器非常重要的技術内容。

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

是以這個部分可以算得上是學習 Triton 伺服器的最重要資源。例如點選 “User Guide” 之後,就會看到以下所條例的執行步驟:

Creating a Model RepositoryWriting a Model ConfigurationBuillding a Model PipelineManaging Model Availablity Collecting Server Metrics Supporting Custom Ops/layers Using the Client APIAnalyzing PerformanceDeploying on edge (Jetson)

3. Examples(範例):

這裡的範例,比較重要的是指向 連結,列出針對 NVIDIA Tensor Core 計算單元的深度學習模型清單,包括計算機視覺、NLP 自然語言處理、推薦系統、語音轉文字 / 文字轉語音、圖形神經網絡、時間序列等各種神經網絡模型細節,包括網絡結構與相關參數的内容。對于未來要在 Triton 伺服器上,對于所使用的網絡後端進行性能優化或者建立新的後端,會有很大的助益,但是對于初學者來說是相對艱澀的,是以現階段先不做深入的說明與示範。

4. Feedback(回報):

這裡會連結到 問題中心,是 Triton 項目中最重要的技術問題解決資源之一,後面執行過程中所遇到的問題,都可以先到這裡來檢視是否有人已經提出?如果沒有的話,也可以在這裡送出自己所遇到的問題,項目負責人會提供合适的回複。以上第 2、4 兩項資源,對初學者來說會有最大的幫助。接着看一下項目裡 “釘住(Pinned)” 的 6 個倉(如下圖),是比較重要的基礎部分,涵蓋了 Triton 架構圖中的主要闆塊。

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

主要内容如下:

1. server 倉:

這裡內建整個項目的主要内容,包括幾部分:

(1) deploy(部署):提供在阿裡巴巴、亞馬遜等雲資源的部署方式,以及基于 NVIDIA Fleet 指令集、GKE(Google kubernets Engine)、k8s、Helm 等應用平台的各種部署方法;(2) docker(容器):修正一些建立容器腳本的錯誤;(3) docs(使用說明):就是前面 “生産檔案(Production Documentation)” 的内容,這裡不重複贅述;(4) qa(品質優化):由于 Triton 推理伺服器有非常多優化的環節,在這個目錄下提供上百個不同狀況的優化測試腳本;(5) src(源代碼):目錄下存放整個 Triton 推理伺服器的開源代碼(.cc)、頭檔案(.h)與編譯腳本(CMakeLists.txt);(6) 其他代碼與腳本

2. core 倉:

此存儲庫包含實作 Triton 核心功能的庫的源代碼和标頭。核心庫可以如下所述建構,并通過其 CAPI 直接使用。為了有用,核心庫必須與一個或多個後端配對。您可以在後端回購中了解有關後端的更多資訊。

3. backend 倉:

提供建立 Triton 伺服器後端(backend)的源代碼、腳本與工具。“後端” 是用來執行不同深度學習模型的管理子產品,以深度學習架構進行封裝,例如 PyTorch、Tensorflow、ONNX Runtime 與 TensorRT 等等,使用者也可以為了性能目的,自行定義 C / C++ 封裝方式。

4. client 倉:

提供 Triton 使用者端的 C++ / Python / Java 開發接口、能生成适用于不同程式設計語言的 GRPC 開發接口的 protoc 編譯器,以及對應的使用者端範例;

5. model_analyzer 倉:

深度學習模型(model)是 Triton 推理伺服器的最基礎組成元件,是以對分析模型的計算與記憶體需求是伺服器性能的一項關鍵功能。這個 model_analyzer 模型分析工具是一種 CLI 工具,這款新工具可以自動化地從數百種組合中為 AI 模型選擇最佳配置,以實作最優性能,同時確定應用程式所需的服務品質,能幫助開發人員更好地了解不同配置中的權衡,并選擇能夠最大化 Triton 的性能配置;

6. model_navigator 倉:

這個 model_navigator 模型導航器是一種能夠自動将模型從源移動到最佳格式和配置的工具,支援将模型從源導出為所有可能的格式,并應用 Triton 伺服器的後端優化。使用模型分析器能找到最佳的模型配置,比對提供的限制條件并優化性能。

以上是 Triton 開源項目裡比較核心的 6 個倉,另外還有 20 多個代碼倉,其中大約 15 個是項目提供的後端(backend)擴充應用,例如 tensorrt_backend、fil_backend、square_backend 等等,以及一些額外的管理工具,并且不斷增加中。本系列後面的内容都會基于這個 server 倉的 docs 目錄下的内容為主,按部就班地帶着讀者循序漸進建立與調試 Triton 推理伺服器的運作環境。

*本文轉自 NVIDIA英偉達

繼續閱讀