运行 TorchServe¶
本文档内容¶
概述¶
TorchServe 可用于生产环境中的多种类型的推理。它提供了一个易于使用的命令行界面,并利用 基于 REST 的 API 处理状态预测请求。
例如,您想制作一个应用程序,让您的用户拍摄照片,它会告诉他们场景中检测到了哪些对象以及对这些对象的预测。您可以使用 TorchServe 为对象检测和识别模型提供预测端点,该模型接收图像,然后返回预测结果。您还可以使用自定义服务修改 TorchServe 的行为并运行多个模型。examples 文件夹中有自定义服务的示例。
技术细节¶
现在您已经对 TorchServe 有了大致的了解,让我们深入了解一下细节。TorchServe 采用 Pytorch 深度学习模型,并将其包装在一组 REST API 中。目前,它带有一个内置的 Web 服务器,您可以从命令行运行它。此命令行调用接收您要服务的单个或多个模型,以及控制端口、主机和日志记录的其他可选参数。TorchServe 支持运行自定义服务来处理特定的推理处理逻辑。自定义服务 文档中更详细地介绍了这些内容。
要立即试用 TorchServe 服务,您可以加载自定义 MNIST 模型,并使用此示例
在深入了解之后,您可能还会对以下内容感兴趣
日志记录:可用的日志记录选项
指标:有关指标收集的详细信息
REST API 描述:有关服务器端点的更多详细信息
自定义服务:了解有关服务不同类型的模型和推理类型的信息
模型文件¶
本主题的其余部分侧重于服务模型文件,而没有过多讨论模型文件本身、它们的来源以及它们的制作方式。长话短说:它是一个 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
启动服务器没有默认的必需参数
models:可选,<model_name>=<model_path> 对。
a) 模型路径可以是本地 mar 文件名或远程 http 链接到 mar 文件 b) 要加载模型存储中的所有模型,请将模型值设置为“all”
torchserve --model-store /models --start --models all
c) 模型文件具有 .mar 扩展名,它实际上是一个 zip 文件,带有 .mar 扩展名,用于打包经过训练的模型和模型签名文件。
d) 通过指定多个名称路径对也支持加载多个模型。
e) 有关在启动 TorchServe 时加载模型的不同方法的详细信息,请参阅 使用 TorchServe 服务多个模型
model-store:必需,存储默认模型或本地模型的位置。模型存储中可用的模型可以通过 register api 调用 或通过启动 TorchServe 时的 models 参数在 TorchServe 中注册。
workflow-store:必需,存储默认工作流程或本地工作流程的位置。工作流程存储中可用的工作流程可以通过 register api 调用 在 TorchServe 中注册。
ts-config:可选,以 config.properties 格式提供 配置 文件。
log-config:可选,此参数将覆盖服务器中存在的默认 log4j2.xml。
start:可选,一种更具描述性的启动服务器的方式。
stop:可选,如果服务器已在运行,则停止服务器。
参数优先级:¶
可以在多个位置设置参数(例如:命令行、config.properties)。以下是优先级
命令行
配置属性
默认设置
示例:在 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/
上提供一个预测端点,并在存档中运行您的自定义服务代码,存档中的清单将指向入口点。
使用 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