FAQ’S¶
本文件的内容。
通用¶
相关文档。
是否Torchserve API遵循一些REST API标准?¶
Torchserve API符合OpenAPI规范3.0。
如何在生产环境中使用Torchserve?¶
根据您的使用案例,您将能够使用以下机制在生产环境中部署torchserve。
Standalone deployment. Refer TorchServe docker documentation or TorchServe documentation Cloud based deployment. Refer TorchServe kubernetes documentation or TorchServe cloudformation documentation
什么是Torchserve和使用Flask、Django等Web框架的Python Web应用程序之间的区别?¶
Torchserve的主要目的是通过HTTP REST API提供模型服务,Torchserve不是一个Flask应用,而是使用Netty引擎来处理HTTP请求。
是否有可用的示例模型?¶
Torchserve 提供了各种开箱即用的模型。查看 Torchserve Model Zoo,获取所有可用模型的列表。你也可以查看 示例 文件夹。
是否支持其他编程语言(除了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 中。
性能¶
相关文档。
如何提高TorchServe在CPU上的性能?¶
CPU性能受到发射器核心绑定的影响。我们建议在您的 config.properties 中设置以下属性:
cpu_launcher_enable=true
cpu_launcher_args=--use_logical_core
有关提高CPU性能的更多背景信息,请参阅这篇博客文章。
部署和配置¶
相关文档。
我可以将Torchserve API运行在8080和8081端口以外的其他端口吗?¶
是的,Torchserve API 端口可以通过属性文件或环境变量进行配置。 有关更多详细信息,请参阅 配置。
如何解决特定模型的Python依赖项?¶
您可以使用“–requirements-file/ -r”标志在创建mar文件时提供requirements.txt。此外,您还可以使用“–extra-files”标志添加依赖文件。
有关更多详细信息,请参阅配置。
我可以将Torchserve部署到Kubernetes吗?¶
是的,您可以使用Helm图表在Kubernetes中部署Torchserve。 参考Kubernetes部署以获取更多详细信息。
我可以使用AWS ELB和AWS ASG部署Torchserve吗?¶
是的,您可以在多节点ASG AWS EC2集群上部署Torchserve。此类部署有一个云形成模板可用这里。有关更多详细信息,请参阅多节点EC2部署在弹性负载均衡器(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。
什么是配置属性路径的顺序?¶
TorchServe 根据 文档 中列出的顺序查找 config.property 文件。没有覆盖机制。
模型存储、加载模型和模型是什么?¶
模型存储:在启动TorchServe时是一个必填参数。它可以在config.property中定义,也可以通过TorchServe命令行选项“–model-store”进行覆盖。
load_models: 一个在TorchServe启动期间的可选参数。它可以在config.property中定义,也可以通过TorchServe命令行选项“–models”进行覆盖。
模型: 在 config.property 中定义了一组模型的配置。模型的配置可以通过 管理 API 覆盖。它并不决定在 TorchServe 启动期间将加载哪些模型。 “models” 和 “load_models” 之间没有关系(例如,TorchServe 命令行选项 –models)。
¶
API¶
相关文档
我除了使用curl之外,还可以使用什么工具来向Torchserve发送请求?¶
您可以使用任何工具,如Postman、Insomnia,甚至可以使用Python脚本来实现。请在此处查找示例Python脚本 这里。
如何在现有框架中添加自定义API?¶
如何在推理请求调用中传递多个图像到我的模型?¶
您可以将多个数据作为键值对在data对象中提供给自定义处理器的单个推理请求。
请参阅此问题以获取更多详细信息。
处理程序¶
相关文档
如何返回模型的图像输出?¶
您需要编写自定义处理器并修改后处理以返回图像 有关更多详细信息,请参阅自定义服务文档。
如何增强默认处理器?¶
编写一个自定义处理器,该处理器扩展默认处理器并仅覆盖需要调整的方法。 有关更多详细信息,请参阅自定义服务文档。
我总是必须写一个自定义处理器吗?还是有默认的我可以使用的? ¶
是的,您可以使用内置默认处理器以无代码/零代码方式部署您的模型。 有关更多详情,请参阅 默认处理器。
是否可以部署Hugging Face模型?¶
是的,你可以使用自定义处理器部署Hugging Face模型。 请参阅HuggingFace_Transformers示例。
Model-archiver¶
相关文档
什么是mar文件?¶
一个mar文件是一个包含所有模型 artifacts 的 zip 文件,扩展名为“.mar”。命令行实用程序 torch-model-archiver 用于创建 mar 文件。
如何使用Torchserve Docker容器创建mar文件?¶
是的,您可以使用Torchserve容器创建mar文件。请按照此处给出的步骤操作。
我可以将多个序列化文件添加到单个mar文件中?¶
目前 torch-model-archiver 允许仅提供一个序列化文件,参数为 --serialized-file 而创建 mar。然而,您可以使用 --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类型,请在模型URL中将&个字符替换为其curl命令中的URL编码字符,即%26。
相关问题:[#669]
我可以将模型托管在S3¶
一个mar文件可以本地使用,也可以通过http公开。S3 URI以s3://开头的将不起作用,但同一个文件可以在S3控制台或AWS CLI中公开,并且可以通过https://获取一个公共对象URL。
如何在SageMaker上设置模型的批量大小?TorchServe性能调优的关键参数。¶
为什么我的模型初始化如此缓慢?¶
模型初始化可能会慢下来有几个原因
torch.load()额外开销 - 这是我们无法改进的部分,对于大型模型来说,这种情况将更加严重CUDA上下文启动开销 - 这是我们无法控制的事情
安装PyTorch依赖项 per_model=true 适用于本地开发或 SageMaker 部署,在其他生产环境中,您应该预先安装您的依赖项。
模型压缩器有压缩和解压缩模型的开销,压缩默认开启,因为历史上torchserve出自sagemaker的需求,需要加载和卸载大量存储在云桶中的模型。但对于小型部署选择
torch-model-archiver --no-archive是一个不错的选择