• 文件 >
  • TorchServe 工作流
快捷方式

⚠️ 注意:有限維護

本專案不再積極維護。現有版本仍可使用,但沒有計劃的更新、錯誤修復、新功能或安全補丁。使用者應注意,可能無法解決漏洞問題。

TorchServe 工作流

TorchServe 可用於透過工作流 API 服務打包為 mar 檔案和 Python 函式的 PyTorch 模型集合。

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

工作流透過 workflow-archive (.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>

工作流模型屬性

使用者可以定義以下工作流模型屬性

屬性 描述 預設值
最小工作程序數 為每個工作流模型啟動的最小工作程序數 1
最大工作程序數 為每個工作流模型啟動的最大工作程序數 1
批次大小 每個工作流模型使用的批次大小 1
最大批次延遲 TorchServe 等待每個工作流模型接收 batch_size 數量請求的最大批次延遲時間。 50 毫秒
重試次數 特定工作流節點在失敗時的重試次數 1
超時(毫秒) 給定節點的超時時間(毫秒) 10000

這些屬性可以作為每個模型的全域性值進行定義,也可以在工作流規範的每個模型級別上被覆蓋。有關更多詳細資訊,請參閱上面的示例。

工作流 DAG

使用者可以使用工作流規範的 dag 部分定義工作流的資料流。dag 包含在 model 部分定義的模型名稱以及在 workflow-archive 的處理程式檔案中實現的 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

處理程式檔案

工作流存檔 (.war) 中提供一個處理程式檔案 (python),其中包含工作流 DAG 中使用的所有函式。

例如

def preprocess(data, context):
    pass

def postprocess(data, context):
    pass

已知問題

  • 每個工作流 DAG 節點(模型/函式)將接收位元組作為輸入

  • 工作流模型/函式僅支援以下輸出型別:String, Int, List, Dict (String, int), Json 可序列化物件, 位元組陣列 和 Torch Tensor

  • 透過 API 不支援工作流的擴充套件/更新。使用者需要先登出工作流,然後重新註冊幷包含所需的更改

  • 工作流不支援快照,相關模型也不會包含在工作流中

  • 不支援工作流版本控制

  • 註冊的工作流如果使用已註冊 mar 檔名的公共模型 URL 將會失敗。

文件

訪問 PyTorch 全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源