常见问题解答¶
本文档的内容。
一般¶
相关文档。
Torchserve API 是否遵循某些 REST API 标准?¶
Torchserve API 符合 OpenAPI 规范 3.0。
如何在生产环境中使用 Torchserve?¶
根据您的使用场景,您可以使用以下机制在生产环境中部署 torchserve。
独立部署。请参阅 TorchServe Docker 文档 或 TorchServe 文档 基于云的部署。请参阅 TorchServe Kubernetes 文档 或 TorchServe CloudFormation 文档
Torchserve 与使用 Flask、Django 等 Web 框架的 Python Web 应用程序之间有什么区别?¶
Torchserve 的主要目的是通过 http REST API 提供服务,Torchserve 不是 Flask 应用程序,它使用 netty 引擎来提供 http 请求。
是否有可用的示例模型?¶
Torchserve 提供了各种开箱即用的模型。查看 Torchserve 模型库 以获取所有可用模型的列表。您还可以查看 示例 文件夹。
Torchserve 是否支持除 Python 之外的其他编程语言的模型?¶
不,目前仅支持基于 Python 的模型。
与 AWS Multi-Model-Server 相比,Torchserve 有什么优势?¶
Torchserve 源于 Multi-Model-Server。但是,Torchserve 专门针对 Pytorch 模型进行了调整。它还具有快照和模型版本控制等新功能。
如何在客户端侧解码推理响应中的国际语言?¶
默认情况下,如果推理响应是字符串,Torchserve 使用 utf-8 进行编码。因此,客户端可以使用 utf-8 进行解码。
如果模型将国际语言字符串转换为字节,则客户端需要使用模型指定的编解码器机制,例如 https://github.com/pytorch/serve/blob/master/examples/nmt_transformer/model_handler_generalized.py 中所示。
性能¶
相关文档。
如何在 CPU 上提高 TorchServe 性能?¶
CPU 性能受启动器核心绑定影响很大。建议在您的 config.properties
中设置以下属性
cpu_launcher_enable=true
cpu_launcher_args=--use_logical_core
有关提高 CPU 性能的更多背景信息,请参阅此 博文。
部署和配置¶
相关文档。
我可以在除默认 8080 和 8081 之外的其他端口上运行 Torchserve API 吗?¶
是的,可以使用属性文件或环境变量配置 Torchserve API 端口。请参阅 配置 以获取更多详细信息。
如何解决模型特定的 Python 依赖项?¶
您可以在使用“–requirements-file/-r”标志创建 mar 文件时提供一个 requirements.txt
。此外,您可以使用“–extra-files”标志添加依赖项文件。请参阅 配置 以获取更多详细信息。
我可以在 Kubernetes 中部署 Torchserve 吗?¶
是的,您可以使用 Helm 图表在 Kubernetes 中部署 Torchserve。请参阅 Kubernetes 部署 以获取更多详细信息。
我可以在 AWS ELB 和 AWS ASG 中部署 Torchserve 吗?¶
是的,您可以在多节点 ASG AWS EC2 集群中部署 Torchserve。此类型的部署提供了 CloudFormation 模板 此处。请参阅 多节点 EC2 部署在 Elastic LoadBalancer (ELB) 后面 获取更多详细信息。
如何备份和还原 Torchserve 状态?¶
TorchServe 会在各个会话之间保留服务器运行时配置,以便在计划或意外服务停止时,TorchServe 实例能够在重启后恢复其状态。这些保存的运行时配置文件可用于备份和还原。请参阅 TorchServe 模型快照 以获取更多详细信息。
如何从源代码构建 Torchserve 镜像?¶
Torchserve 有一个实用程序 脚本 用于创建 Docker 镜像,Docker 镜像可以是基于硬件的 CPU 或 GPU 兼容的。Torchserve Docker 镜像也可以是 CUDA 版本特定的。
所有这些 Docker 镜像都可以使用 build_image.sh
和相应的选项进行创建。
运行 ./build_image.sh --help
以获取所有可用选项。
请参阅 从源代码创建 Torchserve Docker 镜像 以获取更多详细信息。
如何为特定分支或提交 ID 构建 Torchserve 镜像?¶
要为特定分支创建 Docker 镜像,请使用以下命令
./build_image.sh -b <branch_name>/<commit_id>
要为特定分支和特定标签创建 Docker 镜像,请使用以下命令
./build_image.sh -b <branch_name> -t <tagname:latest>
使用 Dockerfile 创建的镜像和使用 Dockerfile.dev 创建的镜像有什么区别?¶
使用 Dockerfile.dev 创建的镜像从源代码安装了 Torchserve,而使用 Dockerfile 创建的镜像从 PyPi 分发版安装了 Torchserve。
config.property 文件路径的顺序是什么?¶
TorchServe 会根据 doc 中列出的顺序查找 config.property 文件。没有覆盖机制。
model_store、load_models 和 models 是什么?¶
model_store:TorchServe 启动时的必需参数。它可以在 config.property 中定义,也可以通过 TorchServe 命令行选项“–model-store”覆盖。
load_models:TorchServe 启动时的可选参数。它可以在 config.property 中定义,也可以通过 TorchServe 命令行选项“–models”覆盖。
models:在 config.property 中定义模型配置列表。模型的配置可以通过 管理 API 覆盖。它不决定 TorchServe 启动时加载哪些模型。 “models” 与 “load_models” 之间没有关系(即 TorchServe 命令行选项 –models)。
¶
API¶
相关文档
除了 curl,我还能用什么来向 Torchserve 发出请求?¶
您可以使用任何工具,如 Postman、Insomnia,甚至可以使用 Python 脚本来做到这一点。在这里找到 Python 脚本示例 here。
如何将自定义 API 添加到现有框架?¶
您可以使用 Torchserve 中提供的 **插件 SDK** 添加自定义 API。有关更多详细信息,请参阅 serving sdk 和 plugins。
如何在推断请求调用中将多个图像传递给我的模型?¶
您可以在单个推断请求中将多个数据作为 data
对象中的键值对提供给您的自定义处理程序。有关更多详细信息,请参阅 this issue。
Handler¶
相关文档
如何为模型返回图像输出?¶
您需要编写一个自定义处理程序,并修改后处理以返回图像。有关更多详细信息,请参阅 自定义服务文档。
如何增强默认处理程序?¶
编写一个扩展默认处理程序的自定义处理程序,只需覆盖要调整的方法即可。有关更多详细信息,请参阅 自定义服务文档。
我是否总是必须编写自定义处理程序,或者是否有我可以使用的默认处理程序?¶
是的,您可以使用内置的默认处理程序,以无代码/零代码的方式部署您的模型。有关更多详细信息,请参阅 默认处理程序。
是否可以部署 Hugging Face 模型?¶
是的,您可以使用自定义处理程序部署 Hugging Face 模型。有关示例,请参阅 HuggingFace_Transformers。
Model-archiver¶
相关文档
什么是 mar 文件?¶
mar 文件是一个包含所有模型工件的 zip 文件,扩展名为“.mar”。命令行工具 torch-model-archiver
用于创建 mar 文件。
如何使用 Torchserve Docker 容器创建 mar 文件?¶
是的,您可以使用 Torchserve 容器创建 mar 文件。请按照 here 中给出的步骤进行操作。
我可以在单个 mar 文件中添加多个序列化文件吗?¶
目前 torch-model-archiver
在创建 mar 时只允许使用 --serialized-file
参数提供一个序列化文件。但是,您可以使用 --extra-files
标志提供任意数量和任意类型的文件。mar 文件中提供的所有文件都可以在 model_dir
位置获得,可以通过提供给处理程序入口点的上下文对象访问。
代码示例
properties = context.system_properties
model_dir = properties.get("model_dir")
有关更多详细信息,请参阅 Torch 模型归档器 CLI。相关问题:[#633]
我可以用 S3 预签名 v4 URL 下载和注册模型吗?¶
您可以使用 S3 v2 和 v4 签名 URL。注意:对于 v4 类型,在 curl 命令中将模型 URL 中的 &
字符替换为其 URL 编码字符,即 %26
。
相关问题:[#669]
我可以在 S3 上托管模型吗?¶
mar 文件可以在本地使用,也可以通过 http 公开访问。以 s3:// 开头的 S3 URI 将不起作用,但同一个文件可以在 S3 控制台或 AWS CLI 中公开,从而获得以 https:// 开头的公共对象 URL。
如何在 SageMaker 上设置模型的批次大小?TorchServe 性能调优的关键参数。¶
为什么我的模型初始化速度很慢?¶
模型初始化速度慢的原因有很多
torch.load()
负载 - 我们无法改进,这对大型模型来说会更加明显CUDA 上下文启动开销 - 我们无法控制
install_py_dep_per_model=true 用于本地开发或 SageMaker 部署,在其他生产环境中,您应该预先安装您的依赖项
模型归档器在压缩和解压缩模型方面存在开销,压缩默认情况下是开启的,因为历史上 Torchserve 来自 Sagemaker 的需求,这些需求涉及加载和卸载存储在云存储桶中的大量模型。但是对于具有较小部署的用户来说,选择
torch-model-archiver --no-archive
是一个不错的选择