快捷方式

⚠️ 注意:维护受限

此项目不再积极维护。现有版本仍然可用,但没有计划的更新、错误修复、新功能或安全补丁。用户应注意,漏洞可能不会得到解决。

运行 TorchServe

本文档内容

概述

TorchServe 可用于生产环境中的多种推理类型。它提供易于使用的命令行接口,并利用 基于 REST 的 API 处理状态预测请求。

例如,您希望制作一个应用程序,让用户拍照后,告诉他们场景中检测到了哪些对象以及对对象可能是什么的预测。您可以使用 TorchServe 为一个对象检测和识别模型提供预测端点,该模型接收图像,然后返回预测结果。您还可以使用自定义服务修改 TorchServe 的行为并运行多个模型。在 examples 文件夹中提供了自定义服务的示例。

技术细节

既然您对 TorchServe 有了一个高层次的了解,下面我们深入探讨一些细节。TorchServe 接受一个 PyTorch 深度学习模型,并将其封装在一组 REST API 中。当前版本带有一个内置的 Web 服务器,您可以从命令行运行它。此命令行调用接受您希望提供服务的单个或多个模型,以及控制端口、主机和日志记录的其他可选参数。TorchServe 支持运行自定义服务来处理特定的推理处理逻辑。有关这些内容的更多详细信息,请参阅自定义服务文档。

要立即尝试 TorchServe 服务,您可以使用此示例加载自定义 MNIST 模型

在深入探讨之后,您可能还会对以下内容感兴趣

模型文件

本主题的其余部分重点介绍如何提供模型文件服务,而不过多讨论模型文件本身、它们的来源以及如何创建。简而言之:它是一个 zip 归档文件,包含已训练模型的参数、权重和元数据。如果您想了解更多关于模型文件的信息,请参阅 model-archiver 文档

命令行接口

$ torchserve --help
usage: torchserve [-h] [-v | --version]
                          [--start]
                          [--stop]
                          [--ts-config TS_CONFIG]
                          [--model-store MODEL_STORE]
                          [--workflow-store WORKFLOW_STORE]
                          [--models MODEL_PATH1 MODEL_NAME=MODEL_PATH2... [MODEL_PATH1 MODEL_NAME=MODEL_PATH2... ...]]
                          [--log-config LOG_CONFIG]

torchserve

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Return TorchServe Version
  --start               Start the model-server
  --stop                Stop the model-server
  --ts-config TS_CONFIG
                        Configuration file for TorchServe
  --model-store         MODEL_STORE
                        Model store location where models can be loaded.
                        It is required if "model_store" is not defined in config.properties.
  --models MODEL_PATH1 MODEL_NAME=MODEL_PATH2... [MODEL_PATH1 MODEL_NAME=MODEL_PATH2... ...]
                        Models to be loaded using [model_name=]model_location
                        format. Location can be a HTTP URL, a model archive
                        file or directory contains model archive files in
                        MODEL_STORE.
  --log-config LOG_CONFIG
                        Log4j configuration file for TorchServe
  --ncs, --no-config-snapshots
                        Disable snapshot feature
  --workflow-store WORKFLOW_STORE
                        Workflow store location where workflow can be loaded. Defaults to model-store

参数:

启动时未加载模型的示例

torchserve --model-store /models

启动服务器没有默认的必需参数

  1. models:可选,<model_name>=<model_path> 对。

    a) 模型路径可以是本地 mar 文件名,也可以是 mar 文件的远程 http 链接 b) 要加载模型存储中的所有模型,请将模型值设置为“all”

    torchserve --model-store /models --start --models all
    

    c) 模型文件具有 .mar 扩展名,它实际上是一个带有 .mar 扩展名的 zip 文件,打包了训练好的模型和模型签名文件。

    d) 通过指定多个名称-路径对,也支持加载多个模型。

    e) 关于在启动 TorchServe 时加载模型的不同方式的详细信息,请参阅使用 TorchServe 部署多个模型

  2. model-store:必需,存储默认或本地模型的位置。模型存储中可用的模型可以通过 注册 API 调用 或在启动 TorchServe 时通过 models 参数注册到 TorchServe 中。

  3. workflow-store:必需,存储默认或本地工作流的位置。工作流存储中可用的工作流可以通过 注册 API 调用 注册到 TorchServe 中。

  4. ts-config:可选,提供一个 配置文件,格式为 config.properties。

  5. log-config:可选,此参数将覆盖服务器内部存在的默认 log4j2.xml。

  6. start:可选,一种更具描述性的启动服务器方式。

  7. stop:可选,如果服务器已在运行,则停止服务器。

参数优先级:

参数可以在多个位置设置(例如:命令行,config.properties)。优先级如下:

  1. 命令行

  2. 配置文件属性

  3. 默认设置

示例:在 config.properties 文件和命令行中都设置 model-store,将使用命令行的位置,并覆盖 config.properties 中的设置。

高级功能

自定义服务

这个主题在自定义服务文档页面中有更详细的介绍,但我们先来谈谈如何使用自定义服务启动 TorchServe 服务器以及为什么要使用自定义服务。假设您的 /models 文件夹中有一个名为 super-fancy-net.mar 的模型,它可以检测很多东西,但您只想创建一个只检测热狗的 API 端点。您会为此使用一个有意义的名称,例如“not-hot-dog” API。在这种情况下,我们可能会像这样调用 TorchServe

torchserve --start --model-store /models --models not-hot-dog=super-fancy-net.mar

这将提供一个位于 predictions/not-hot-dog/ 的预测端点,并运行归档文件中的自定义服务代码,归档文件中的 manifest 文件将指向入口点。

使用 TorchServe 部署多个模型

启动 TorchServe 时加载 model_store 中所有可用模型的示例

torchserve --start --model-store /models --models all

多个模型使用示例

torchserve --start --model-store /models --models name=model_location name2=model_location2

以下是使用本地模型文件运行 resnet-18 和 vgg16 模型的示例。

torchserve --start --model-store /models --models resnet-18=resnet-18.mar squeezenet=squeezenet_v1.1.mar

日志记录和指标

有关日志记录的详细信息,请参阅日志记录文档。有关指标的详细信息,请参阅指标文档

文档

查阅 PyTorch 全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源