• 文件 >
  • TorchServe 工作流程
捷徑

TorchServe 工作流程

TorchServe 可用於透過工作流程 API 提供封裝為 mar 檔案和 Python 函數的 Pytorch 模型集合。

它利用 基於 REST 的 API 來進行工作流程管理和預測。

工作流程是使用工作流程封存檔案 (.war) 在 TorchServe 上提供的,它包含以下內容

工作流程規格檔案

工作流程規格是一個 YAML 檔案,它提供了要執行的模型的詳細資訊,以及用於定義資料流的 DAG。

YAML 檔案分為幾個區段

  1. models,其中包括全域模型參數

  2. m1,m2,m3,所有相關的模型參數,這些參數將覆寫全域模型參數

  3. 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 檔名已經註冊,則會失敗。

文件

獲取 PyTorch 的全面開發者文件

查看文件

教學

獲取初學者和高級開發人員的深入教學

查看教學

資源

查找開發資源並獲得您問題的解答

查看資源