• 文档 >
  • TorchServe 工作流程
快捷方式

TorchServe 工作流程

TorchServe 可用于通过工作流程 API 服务打包为 mar 文件和 Python 函数的 Pytorch 模型集合。

它利用基于 REST 的 API进行工作流程管理和预测。

工作流程在 TorchServe 上使用工作流程存档 (.war) 提供服务,该存档包含以下内容

工作流程规范文件

工作流程规范是一个 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 部分定义工作流程的数据流。dagmodel 部分中定义的模型名称和在工作流程存档的处理程序文件中实现的 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

已知问题

  • 每个工作流程 dag 节点(模型/函数)将接收字节作为输入

  • 工作流程模型/函数仅支持以下输出类型:字符串、整数、列表、字符串字典、整数、Json 可序列化对象、字节数组和 Torch 张量

  • API 不支持工作流程的扩展/更新。用户将需要注销工作流程并使用所需的更改重新注册

  • 快照不支持工作流程,并且相关模型未在工作流程中捕获

  • 工作流程版本控制不受支持

  • 注册具有公共模型 URL 的工作流程,其 mar 文件名已注册将失败。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源