常见问题解答¶
本文档内容。
通用¶
相关文档。
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 模型动物园 以获取所有可用模型的列表。您还可以查看 examples 文件夹。
Torchserve 是否支持基于 Python 以外的编程语言的其他模型?¶
否,目前仅支持基于 Python 的模型。
Torchserve 比 AWS Multi-Model-Server 有哪些优势?¶
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 依赖项?¶
您可以在创建 mar 文件时使用“–requirements-file/ -r”标志提供 requirements.txt
。此外,您可以使用“–extra-files”标志添加依赖项文件。有关更多详细信息,请参阅 配置。
我可以在 Kubernetes 中部署 Torchserve 吗?¶
是的,您可以使用 Helm chart 在 Kubernetes 中部署 Torchserve。有关更多详细信息,请参阅 Kubernetes 部署 。
我可以使用 AWS ELB 和 AWS ASG 部署 Torchserve 吗?¶
是的,您可以在多节点 ASG AWS EC2 集群上部署 Torchserve。这里 here 提供了一个云形成模板,用于此类部署。有关更多详细信息,请参阅 弹性负载均衡器 (ELB) 后面的多节点 EC2 部署。
如何备份和恢复 Torchserve 状态?¶
TorchServe 跨会话保留服务器运行时配置,以便遇到计划内或计划外服务停止的 TorchServe 实例可以在重启时恢复其状态。这些保存的运行时配置文件可用于备份和恢复。有关更多详细信息,请参阅 TorchServe 模型快照。
如何从源代码构建 Torchserve 镜像?¶
Torchserve 提供了一个实用程序 script,用于创建 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 脚本来执行此操作。在此处 here 查找示例 Python 脚本。
如何向现有框架添加自定义 API?¶
您可以使用 Torchserve 中提供的 插件 SDK 添加自定义 API。有关更多详细信息,请参阅 serving sdk 和 plugins。
如何在推理请求调用中向我的模型传递多个图像?¶
您可以在单个推理请求中以键值对的形式在 data
对象中向您的自定义处理程序提供多个数据。有关更多详细信息,请参阅 this issue。
处理程序¶
相关文档
如何为模型返回图像输出?¶
您需要编写一个自定义处理程序并修改后处理以返回图像。有关更多详细信息,请参阅 自定义服务文档。
如何增强默认处理程序?¶
编写一个扩展默认处理程序的自定义处理程序,并仅覆盖要调整的方法。有关更多详细信息,请参阅 自定义服务文档。
我是否总是需要编写自定义处理程序,还是有我可以使用的默认处理程序?¶
是的,您可以使用内置的默认处理程序以无代码/零代码方式部署模型。有关更多详细信息,请参阅 默认处理程序。
是否可以部署 Hugging Face 模型?¶
是的,您可以使用自定义处理程序部署 Hugging Face 模型。有关示例,请参阅 HuggingFace_Transformers。
模型归档器¶
相关文档
什么是 mar 文件?¶
mar 文件是一个 zip 文件,其中包含所有模型工件,扩展名为“.mar”。命令行实用程序 torch-model-archiver
用于创建 mar 文件。
如何使用 Torchserve Docker 容器创建 mar 文件?¶
是的,您可以使用 Torchserve 容器创建 mar 文件。按照 here 给出的步骤操作。
我可以在单个 mar 文件中添加多个序列化文件吗?¶
目前,torch-model-archiver
仅允许在使用 --serialized-file
参数创建 mar 文件时提供一个序列化文件。但是,您可以使用 --extra-files
标志提供任意数量和任意类型的文件。mar 文件中提供的所有文件都位于 model_dir
位置,可以通过提供给处理程序入口点的上下文对象访问该位置。
示例代码片段
properties = context.system_properties
model_dir = properties.get("model_dir")
有关更多详细信息,请参阅 Torch model archiver cli。相关问题:[#633]
我可以使用 S3 预签名 v4 URL 下载和注册模型吗?¶
您可以使用 S3 v2 和 v4 签名 URL。注意:对于 v4 类型,请将模型 URL 中的 &
字符替换为其 URL 编码字符,即 curl 命令中的 %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
是一个不错的选择