目录

TorchServe 工作流程

TorchServe 可以用于通过 Workflow API 服务包装为 mar 文件和 Python 函数的 Pytorch 模型集合。

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

在TorchServe中,一个工作流程被服务使用一个工作流程存档(.war),它包含以下内容:

工作流规范文件

一个工作流规范是一个YAML文件,它提供了要执行的模型的详细信息和定义数据流动的DAG。

YAML 文件被分割成几个部分

  1. models 包含全局模型参数

  2. m1,m2,m3 所有相关的模型参数,这些参数将覆盖全局模型参数

  3. dag 用于描述工作流程结构,哪些节点连接到其他哪些节点

E.g.

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 最大批量延迟时间 PyTorch Serve 等待每个工作流程模型接收 batch_size 个请求。 50 ms
retry-attempts 在特定工作流节点失败时重试尝试 1
timeout-ms 给定节点的超时时间以毫秒为单位 10000

这些属性可以定义为每个模型的全局值,并且可以在工作流程规范中的每个模型级别上进行覆盖。请参见上述示例以获取更多详细信息。

工作流DAG

用户可以使用工作流程规范中的dag部分定义数据流。dagmodel部分中定义的模型名称和工作流程存档的处理文件中实现的Python函数名称组成。

顺序图

Eg.

dag:
  function1 : [model1]
  model1 : [model2]
  model2 : [function2]

这对应于数据流

input -> function1 -> model1 -> model2 -> function2 -> output

并行DAG

E.g

dag:
  pre_processing: [model1, model2]
  model1: [aggregate_func]
  model2: [aggregate_func]

这对应于数据流

                          model1
                         /       \
input -> preprocessing ->         -> aggregate_func
                         \       /
                          model2

Handler文件

一个处理文件(Python)被提供在工作流程档案(.war)中,并且包含了工作流程dag中使用的所有函数。

Eg.

def preprocess(data, context):
    pass

def postprocess(data, context):
    pass

已知问题

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

  • 只有以下输出类型由工作流程模型/函数支持:字符串、整数、列表、字典(包含字符串和整数)、JSON可序列化对象、字节数组和PyTorch张量。

  • 工作流程的规模/更新不支持通过API进行。用户需要注销工作流并重新注册,以进行必要的更改。

  • 快照不支持工作流,相关的模型也不会被捕捉到工作流中。

  • 工作流版本化不被支持

  • 注册工作流时,如果模型URL是公开的,并且文件名已经注册,那么将失败。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

查找开发资源并解答您的问题

查看资源