我不會用 Triton 系列:Model Warmup 的使用


Model Warmup 的設置

這一篇非常簡單,就是記錄 Model Warmup 是如何使用的。本來是為了解決第一次推理太慢的問題,后來發現其實不適用 Model Warmup。不過都已經手寫了 protobuf 了,官方的例子還藏在測試的 .sh 文件中,為了方便后續使用,就寫一篇來做記錄好了。

模型配置

其實就是看着 protobuf 的定義文件 將模型配置寫出來。(手寫 protobuf 唉~

model_warmup  [
  {
    name: "random_input"
    batch_size: 1
    inputs: {
      key: "INPUT0"
      value: {
        data_type: TYPE_FP32
        dims: [224, 224, 3]
        random_data: true
      }
    }
  }
]

一點說明

一開始寫這個 Model Warmup 的時候,是為了處理特定場景的。

人臉識別模型中,啟動的時候,需要使用其他模型去提取人臉庫的特征,需要處理人臉庫中的所有圖片,導致第一次客戶端請求很耗時。為此希望可以在啟動的時候去提取,因此引入了 Model Warmup。

但是。

Triton 無法從 Python Backend 中獲取模型依賴的信息,因而無法按照合理的順序啟動模型實例,然后進行推理。在這種情況下就不適用這個方案了。況且,人臉一般是海量的,最好是存放到一個數據庫當中,而不是每次啟動的時候去提取。

此外,我是試了一下 ensemble 進行 warmup,然后就會發現竟然不給使用 warmup...

E1111 02:19:14.474657 5983 model_repository_manager.cc:1890] Poll failed for model directory 'resnet50_ensemble': model_warmup can not be specified for ensemble 'resnet50_ensemble'

適用場景

那 Model Warmup 適合什么樣的場景呢?適合 lazy initialization 的框架,這些框架在第一次推理的時候,會比較慢;在第一次推理的時候初始化,然后再進行推理;之后的推理就不會慢了。美團技術團隊有一篇文章 就提到了這個問題:“模型切換毛刺問題”。


免責聲明!

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



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