我不會用 Triton 系列:Triton Inference Server 簡介


Triton Inference Server

定位

在接觸了一段時間的 Triton 之后,我認為它的定位在於模型服務,即它的主要職責和服務緊密相關,服務中常見的需求它需要做處理。比如 Batching,Sequence,Pipeline 等,再比如模型倉庫的管理,模型后端引擎的管理等,還有性能測試工具等。至於模型部署優化,我覺得 Triton 和它的關系是不密切的。我所謂的 “模型部署優化” 指的是將訓練好的模型放到目標設備上執行推理任務,這應該是模型后端引擎需要處理的事情,而非一個推理服務器要處理的事情。

功能總結

下面總結了 Triton 的一些功能,我希望后續的文章中一點一點展開。我是一個 Triton 的初學者,因為需要開發一個 Triton Backend,所以不僅需要熟練使用 Triton 的每一項功能,還必須要對 Triton 的內在原理有足夠的了解。

(TL;DR

  • 支持多種深度學習框架,Tensorflow,Pytorch,可以通過實現后端 API 來進行擴展。
  • 模型並行執行,多個模型在同一個或多個 GPU 上執行。可配置 Instance Groups,設置在不同的設備上運行多少個實例。
  • 支持 HTTP/gRPC 協議。提供 C API,可以將 Triton 和應用連接起來。
  • Scheduling And Batching,可以設置 dynamic batching,preferred batch sizes,排隊等待時間,是否保持請求順序返回,排隊優先級,排隊策略等。
  • Metrics,GPU 使用率,服務器吞吐量,服務器延時。
  • 模型倉庫,支持本地、雲存儲。
  • 模型配置,設置后端、最大 batch size,輸入輸出,支持自動生成模型配置。
  • Rate Limiter,控制請求調度到不同模型實例的頻率。
  • Model Warmup。避免頭幾次請求因為 lazy 初始化導致的延遲。
  • 模型熱更新,檢測模型倉庫。
  • Repository Agent,擴展模型在加載和卸載時候的操作,比如加密、解密、轉換、檢測 checksum。
  • Stateful Models,多個請求可以路由到同一個模型實例,從而模型的狀態可以正確被更新。
  • 模型 pipelines。多個模型一起完成推理任務。
  • Performance Analyzer,性能分析器。
  • Model Analyzer,使用 Performance Analyzer 分析測量一個模型的 GPU 內存和計算使用率。
  • 共享內存,甚至顯存!客戶端和 Triton 之間可以共享內存,從而提高性能。

總結

最好的學習辦法應該是項目驅動去走一遍模型部署流程,這樣就算是熟悉了 Triton。不過,這樣的缺點也比較明顯,覆蓋面不夠,廣度達不到實現一個 Backend 需要的認知;深度同樣也不夠,對 Triton 的線程內存管理缺少認識,亦無法清晰認識 Backend API 在什么時候干了什么。

因此,后續的幾篇文章會使用一些 toy model 去做部署,嘗試 Triton 的各個特性。在嘗試了這些特性之后,順帶看看源代碼是如何實現的。可是,這樣搞下來之后,沒有完善的部署流程,沒有項目驅動,我不太敢說我會用 Triton。於是,這就有了這系列文章的標題:我不會 Triton... 😂


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM