常见问题¶
本文档的内容。
常规¶
相关文件。
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 请求。
相关问题: [581,569]
是否有可用的示例模型?¶
Torchserve 中提供了各种开箱即用的模型。查看 Torchserve Model Zoo 以获取所有可用模型的列表。您还可以查看 examples 文件夹。
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 APIs吗?¶
是的,Torchserve API 端口可以使用属性文件或环境变量进行配置。 有关更多详细信息,请参阅配置。
如何解决特定于模型的 python 依赖项?¶
您可以使用 “–requirements-file/ -r” 标志提供 while 创建 mar 文件。此外,您还可以使用 “–extra-files” 标志添加依赖项文件。
有关更多详细信息,请参阅配置。requirements.txt
我可以在 Kubernetes 中部署 Torchserve 吗?¶
是的,您可以使用 Helm 图表在 Kubernetes 中部署 Torchserve。 有关更多详细信息,请参阅 Kubernetes 部署。
我是否可以使用 AWS ELB 和 AWS ASG 部署 Torchserve?¶
是的,您可以在多节点 ASG AWS EC2 集群上部署 Torchserve。此处提供了适用于此类部署的 Cloud Formation 模板。请参阅 Elastic LoadBalancer (ELB) 后面的多节点 EC2 部署,了解更多详情。
如何备份和恢复 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 根据文档中列出的顺序查找 config.property 文件。没有超控机制。
什么是 model_store、load_models 模型?¶
model_store:TorchServe 启动期间的必需参数。它可以在 config.property 中定义,也可以被 TorchServe 命令行选项 “–model-store” 覆盖。
load_models:TorchServe 启动期间的可选参数。它可以在 config.property 中定义,也可以被 TorchServe 命令行选项 “–models” 覆盖。
models:在 config.property 中定义模型的配置列表。模型的配置可以被管理 API 覆盖。它不会决定在 TorchServe 启动期间将加载哪些模型。没有关系 b.w “models” 和 “”load_models“ (i.TorchServe 命令行选项 –models)。
¶
应用程序接口¶
相关文件
除了 curl 之外,我还能用什么来向 Torchserve 发出请求?¶
您可以使用 Postman、Insomnia 等任何工具,甚至可以使用 python 脚本来执行此操作。在此处查找示例 python 脚本。
如何将自定义 API 添加到现有框架?¶
您可以使用 Torchserve 中提供的插件 SDK 添加自定义 API。 有关更多详细信息,请参阅服务 SDK 和插件。
如何在 Inference 请求调用中将多个图像传递给我的模型?¶
您可以在单个推理请求中将多个数据作为对象中的键值对提供给自定义处理程序。
有关更多详细信息,请参阅此问题。data
处理器¶
相关文件
如何返回模型的图像输出?¶
您必须编写自定义处理程序并修改后处理以返回图像 有关更多详细信息,请参阅自定义服务文档。
如何增强默认处理程序?¶
编写一个自定义处理程序,该处理程序扩展默认处理程序,并仅覆盖要优化的方法。 有关更多详细信息,请参阅自定义服务文档。
我是否必须始终编写自定义处理程序,还是有可以使用的默认处理程序?¶
是的,您可以使用内置的默认处理程序以无代码/零代码部署模型。 有关更多详细信息,请参阅 default handlers 。
是否可以部署 Hugging Face 模型?¶
是的,您可以使用自定义处理程序部署 Hugging Face 模型。 例如,请参阅 HuggingFace_Transformers。
模型存档器¶
相关文件
什么是一 .mar 文件?¶
mar 文件是一个 zip 文件,由所有扩展名为 “.mar” 的模型伪像组成。cmd-line 实用程序用于创建 mar 文件。torch-model-archiver
如何使用 Torchserve docker 容器创建 mar 文件?¶
是的,您可以使用 Torchserve 容器创建 mar 文件。请按照此处给出的步骤操作。
我可以在单个 mar 文件中添加多个序列化文件吗?¶
目前只允许在创建 mar 时提供一个带有 parameter 的序列化文件。但是,您可以提供任意数量的 flag 文件。mar 文件中提供的所有文件都位于 Location,可以通过提供给处理程序入口点的 context 对象进行访问。torch-model-archiver
--serialized-file
--extra-files
model_dir
示例代码片段:
properties = context.system_properties
model_dir = properties.get("model_dir")
有关更多详细信息,请参阅 Torch 模型存档器 cli。 相关问题:[#633]
我可以使用 s3 预签名 v4 URL 下载和注册模型吗?¶
您可以同时使用 s3 v2 和 v4 签名 URL。
注意:对于 v4 类型,将模型 url 中的字符替换为 curl 命令中的 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