我不会用 Triton 系列:Model Warmup 的使用
Model Warmup 的設(shè)置
這一篇非常簡單,就是記錄 Model Warmup 是如何使用的。本來是為了解決第一次推理太慢的問題,后來發(fā)現(xiàn)其實(shí)不適用 Model Warmup。不過都已經(jīng)手寫了 protobuf 了,官方的例子還藏在測試的 .sh 文件中,為了方便后續(xù)使用,就寫一篇來做記錄好了。
模型配置
其實(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
}
}
}
]
一點(diǎn)說明
一開始寫這個(gè) Model Warmup 的時(shí)候,是為了處理特定場景的。
人臉識(shí)別模型中,啟動(dòng)的時(shí)候,需要使用其他模型去提取人臉庫的特征,需要處理人臉庫中的所有圖片,導(dǎo)致第一次客戶端請求很耗時(shí)。為此希望可以在啟動(dòng)的時(shí)候去提取,因此引入了 Model Warmup。
但是。
Triton 無法從 Python Backend 中獲取模型依賴的信息,因而無法按照合理的順序啟動(dòng)模型實(shí)例,然后進(jìn)行推理。在這種情況下就不適用這個(gè)方案了。況且,人臉一般是海量的,最好是存放到一個(gè)數(shù)據(jù)庫當(dāng)中,而不是每次啟動(dòng)的時(shí)候去提取。
此外,我是試了一下 ensemble 進(jìn)行 warmup,然后就會(huì)發(fā)現(xiàn)竟然不給使用 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 的框架,這些框架在第一次推理的時(shí)候,會(huì)比較慢;在第一次推理的時(shí)候初始化,然后再進(jìn)行推理;之后的推理就不會(huì)慢了。美團(tuán)技術(shù)團(tuán)隊(duì)有一篇文章 就提到了這個(gè)問題:“模型切換毛刺問題”。
總結(jié)
以上是生活随笔為你收集整理的我不会用 Triton 系列:Model Warmup 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang backoff重试指数退避
- 下一篇: 通配符like用法归纳