运行 TorchServe¶
本文档内容¶
概述¶
TorchServe 可用于生产环境中的多种推理类型。它提供了一个易于使用的命令行界面,并利用 基于REST的API 处理状态预测请求。
例如,你想开发一个应用程序,让用户拍摄一张照片,并告诉他们场景中检测到了哪些物体以及对这些物体可能是什么的预测。你可以使用TorchServe为物体检测和识别模型提供一个预测端点,该模型接收图像并返回预测结果。你还可以通过自定义服务修改TorchServe的行为,并运行多个模型。在 示例 文件夹中有自定义服务的例子。
技术细节¶
现在您对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
Arguments:¶
在开始时没有加载任何模型的例子:
torchserve --model-store /models
启动服务器时没有默认的必需参数。
模型: 可选,<model_name>=<model_path> 对。
a) 模型路径可以是一个本地的 mar 文件名,也可以是一个远程的 http 链接指向一个 mar 文件。 b) 要加载模型存储中的所有模型,请将模型值设置为“all”。
torchserve --model-store /models --start --models all
c) 模型文件具有 .mar 扩展名,实际上是一个带有 .mar 扩展名的压缩文件,打包了训练好的模型和模型签名文件。
d) 支持通过指定多个名称路径对加载多个模型。
e) 有关启动TorchServe时加载模型的不同方式的详细信息,请参阅使用TorchServe提供多个模型服务
model-store: 必填项,用于存储默认或本地模型的位置。model store 中可用的模型可以通过 注册 API 调用 或在启动 TorchServe 时通过 models 参数进行注册。
workflow-store: 必须,存储默认或本地工作流的位置。workflow store 中可用的工作流可以通过 注册 API 调用在 TorchServe 中注册。
ts-config: 可选,提供一个配置文件,格式为config.properties。
日志配置: 可选,此参数将覆盖默认的 log4j2.xml 文件,该文件位于服务器中。
开始: 可选,一种更描述性的方式来启动服务器。
停止: 可选,如果服务器已经运行,则停止它。
参数优先级:¶
参数可以在多个位置设置(例如命令行,config.properties)。以下为优先级:
命令行
配置属性
默认设置
示例:在config.properties中设置model-store,并通过命令行将导致命令行位置被使用并覆盖config.properties。
高级功能¶
自定义服务¶
这个主题在自定义服务文档页面中有更详细的介绍,但让我们先谈谈如何使用自定义服务启动您的TorchServe服务器以及为什么您可能需要一个自定义服务。
假设您在/models文件夹中有一个名为super-fancy-net.mar的模型,它可以检测很多东西,但您希望有一个仅检测热狗的API端点。您会为它使用一个有意义的名字,比如“非热狗”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