运行 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 文件名或指向 mar 文件的远程 http 链接 b) 要加载模型存储中的所有模型,请将模型值设置为“all”
torchserve --model-store /models --start --models all
c) 模型文件具有 .mar 扩展名,它实际上是一个带有 .mar 扩展名的 zip 文件,打包了训练好的模型和模型签名文件。
d) 也支持通过指定多个名称路径对来加载多个模型。
e) 有关在启动 TorchServe 时加载模型的不同方法的详细信息,请参阅 使用 TorchServe 提供多个模型
model-store: 必需,默认模型或本地模型存储的位置。模型存储中可用的模型可以通过 注册 API 调用 或通过在启动 TorchServe 时使用 models 参数注册在 TorchServe 中。
workflow-store: 必需,默认工作流程或本地工作流程存储的位置。工作流程存储中可用的工作流程可以通过 注册 API 调用 注册在 TorchServe 中。
ts-config: 可选,提供 配置 文件,格式为 config.properties。
log-config: 可选,此参数将覆盖服务器中存在的默认 log4j2.xml。
start: 可选,一种更具描述性的启动服务器的方式。
stop: 可选,如果服务器已在运行,则停止服务器。
参数优先级:¶
参数可以在多个位置设置(例如:命令行、config.properties)。以下列出了优先级
命令行
配置属性
默认设置
示例:在 config.properties 和命令行中设置 model-store
将导致使用命令行位置并覆盖 config.properties。
高级功能¶
自定义服务¶
本主题在 自定义服务文档页面 上有更详细的介绍,但让我们讨论一下如何使用自定义服务启动 TorchServe 服务器,以及为什么要使用自定义服务。假设您有一个名为 super-fancy-net.mar
的模型,该模型位于 /models
文件夹中,它可以检测很多东西,但您想要一个 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