TorchServe 工作流程¶
TorchServe 可用於透過工作流程 API 提供封裝為 mar 檔案和 Python 函數的 Pytorch 模型集合。
它利用 基於 REST 的 API 來進行工作流程管理和預測。
工作流程是使用工作流程封存檔案 (.war) 在 TorchServe 上提供的,它包含以下內容
工作流程規格檔案¶
工作流程規格是一個 YAML 檔案,它提供了要執行的模型的詳細資訊,以及用於定義資料流的 DAG。
YAML 檔案分為幾個區段
models
,其中包括全域模型參數m1,m2,m3
,所有相關的模型參數,這些參數將覆寫全域模型參數dag
,它描述了工作流程的結構,哪些節點饋送到哪些其他節點
例如
models:
#global model params
min-workers: 1
max-workers: 4
batch-size: 3
max-batch-delay : 5000
retry-attempts : 3
timeout-ms : 5000
m1:
url : model1.mar #local or public URI
min-workers: 1 #override the global params
max-workers: 2
batch-size: 4
m2:
url : model2.mar
m3:
url : model3.mar
batch-size: 3
m4:
url : model4.mar
dag:
pre_processing : [m1]
m1 : [m2]
m2 : [m3]
m3 : [m4]
m4 : [postprocessing]
工作流程模型¶
工作流程規格的 models
區段定義了工作流程中使用的模型。它使用以下語法
models:
<model_name>:
url: <local or public url for mar file>
工作流程模型屬性¶
使用者可以定義以下工作流程模型屬性
屬性 | 說明 | 預設值 |
---|---|---|
min-workers | 為每個工作流程模型啟動的最小工作者數量 | 1 |
max-workers | 為每個工作流程模型啟動的最大工作者數量 | 1 |
batch-size | 用於每個工作流程模型的批次大小 | 1 |
max-batch-delay | TorchServe 等待每個工作流程模型接收 batch_size 個請求的最大批次延遲時間。 |
50 毫秒 |
retry-attempts | 在發生失敗時,特定工作流程節點的重試次數 | 1 |
timeout-ms | 給定節點的逾時時間(毫秒) | 10000 |
這些屬性可以定義為每個模型的全域值,並且可以在工作流程規格中的每個模型層級覆寫。有關更多詳細資訊,請參閱上面的範例。
工作流程 DAG¶
使用者可以使用工作流程規格的 dag
區段來定義工作流程的資料流。 dag
包含 model
區段中定義的模型名稱,以及在工作流程封存檔案的處理器檔案中實作的 python 函數名稱。
循序 DAG¶
例如
dag:
function1 : [model1]
model1 : [model2]
model2 : [function2]
對應到此資料流
input -> function1 -> model1 -> model2 -> function2 -> output
並行 DAG¶
例如
dag:
pre_processing: [model1, model2]
model1: [aggregate_func]
model2: [aggregate_func]
對應到此資料流
model1
/ \
input -> preprocessing -> -> aggregate_func
\ /
model2
處理器檔案¶
處理器檔案 (python) 在工作流程封存檔案 (.war) 中提供,並包含工作流程 dag 中使用的所有函數。
例如
def preprocess(data, context):
pass
def postprocess(data, context):
pass
已知問題¶
每個 workflow DAG 節點(模型/函數)都將以位元組 (bytes) 形式接收輸入
Workflow 模型/函數僅支援以下輸出類型:字串 (String)、整數 (Int)、列表 (List)、字串或整數的字典 (Dict of String, int)、可序列化為 JSON 的物件、位元組陣列 (byte array) 和 Torch 張量 (Tensors)
不支援通過 API 對 Workflow 進行擴展/更新。使用者需要先取消註冊 Workflow,然後使用所需的變更重新註冊
Workflow 不支援快照 (Snapshots),並且相關模型不會被捕捉到 Workflow 中
不支援 Workflow 版本控制
註冊具有公共模型 URL 的 Workflow,如果 mar 檔名已經註冊,則會失敗。