入门¶
安装 TorchServe 和 torch-model-archiver¶
安装依赖项
注意:对于 Conda,运行 Torchserve 需要 Python >=3.8。
适用于基于 Debian 的系统/MacOS¶
适用于 CPU
python ./ts_scripts/install_dependencies.py
适用于带 Cuda 12.1 的 GPU。选项包括
cu92
、cu101
、cu102
、cu111
、cu113
、cu116
、cu117
、cu118
、cu121
python ./ts_scripts/install_dependencies.py --cuda=cu121
注意:PyTorch 1.9+ 不支持 cu92 和 cu101。因此,TorchServe 仅在 PyTorch 1.8.1 及以下版本中支持 cu92 和 cu101。
适用于 Windows¶
请参阅此处的文档。
安装 torchserve、torch-model-archiver 和 torch-workflow-archiver
对于 Conda 注意:Conda 包不支持 Windows。请参阅此处的文档。
conda install torchserve torch-model-archiver torch-workflow-archiver -c pytorch
对于 Pip
pip install torchserve torch-model-archiver torch-workflow-archiver
现在,您可以使用 TorchServe 打包和提供模型服务。
提供模型服务¶
本节展示了使用 TorchServe 提供模型服务的简单示例。要完成此示例,您必须已安装 TorchServe 和模型归档器。
要运行此示例,请克隆 TorchServe 存储库
git clone https://github.com/pytorch/serve.git
然后从存储库根目录的父目录运行以下步骤。例如,如果您将存储库克隆到 /home/my_path/serve
,请从 /home/my_path
运行这些步骤。
存储模型¶
要使用 TorchServe 提供模型服务,首先将其归档为 MAR 文件。您可以使用模型归档器打包模型。您还可以创建模型存储库来存储已归档的模型。
创建目录以存储您的模型。
mkdir model_store
下载训练好的模型。
wget https://download.pytorch.org/models/densenet161-8d451a50.pth
使用模型归档器归档模型。
extra-files
参数使用TorchServe
存储库中的文件,因此如有必要,请更新路径。torch-model-archiver --model-name densenet161 --version 1.0 --model-file ./serve/examples/image_classifier/densenet_161/model.py --serialized-file densenet161-8d451a50.pth --export-path model_store --extra-files ./serve/examples/image_classifier/index_to_name.json --handler image_classifier
有关模型归档器的更多信息,请参阅 TorchServe 的 Torch 模型归档器
启动 TorchServe 以提供模型服务¶
归档和存储模型后,使用 torchserve
命令提供模型服务。
torchserve --start --ncs --model-store model_store --models densenet161.mar
执行上述 torchserve
命令后,TorchServe 将在您的主机上运行,侦听推理请求。
**注意**:如果在运行 TorchServe 时指定了模型,它会自动将后端工作程序扩展到等于可用 vCPU 的数量(如果在 CPU 实例上运行)或可用 GPU 的数量(如果在 GPU 实例上运行)。对于具有大量计算资源(vCPU 或 GPU)的功能强大的主机,此启动和自动扩展过程可能需要相当长的时间。如果您想缩短 TorchServe 的启动时间,应避免在启动时注册和扩展模型,并将此操作移至稍后的时间点,方法是使用相应的管理 API,它允许更细粒度地控制分配给任何特定模型的资源。
获取模型的预测结果¶
要测试模型服务器,请向服务器的 predictions
API 发送请求。TorchServe 通过 gRPC 和 HTTP/REST 支持所有 推理 和 管理 API。
通过 Python 客户端使用 GRPC API¶
安装 grpc Python 依赖项
pip install -U grpcio protobuf grpcio-tools
使用 proto 文件生成推理客户端
python -m grpc_tools.protoc --proto_path=frontend/server/src/main/resources/proto/ --python_out=ts_scripts --grpc_python_out=ts_scripts frontend/server/src/main/resources/proto/inference.proto frontend/server/src/main/resources/proto/management.proto
使用示例客户端运行推理 gRPC Python 客户端
python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg
使用 REST API¶
例如,我们将使用以下命令下载这只可爱的猫咪
curl -O https://raw.githubusercontent.com/pytorch/serve/master/docs/images/kitten_small.jpg
然后调用预测端点
curl http://127.0.0.1:8080/predictions/densenet161 -T kitten_small.jpg
这将返回以下 JSON 对象
[
{
"tiger_cat": 0.46933549642562866
},
{
"tabby": 0.4633878469467163
},
{
"Egyptian_cat": 0.06456148624420166
},
{
"lynx": 0.0012828214094042778
},
{
"plastic_bag": 0.00023323034110944718
}
]
与端点的所有交互都将记录在 logs/
目录中,请务必查看!
现在您已经了解了使用 TorchServe 提供深度学习模型服务是多么容易!您想了解更多信息吗?
停止 TorchServe¶
要停止当前正在运行的 TorchServe 实例,请运行
torchserve --stop
检查日志¶
您在标准输出中看到的与模型注册、管理和推理相关的日志都记录在 /logs
文件夹中。
可以使用基准测试生成吞吐量或百分位精度等高级性能数据,并在报告中进行可视化。
调试处理程序代码¶
如果要调试处理程序代码,可以仅使用后端运行 TorchServe,从而可以使用任何 Python 调试器。您可以参考此处定义的示例
贡献¶
如果您计划使用 TorchServe 进行开发并更改一些源代码,请遵循贡献指南。