官网链接
Getting started — PyTorch/Serve master documentation
安装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。因此,在PyTorch 1.8.1之前,TorchServe只支持cu92和cu101。安装文件参考https://github.com/pytorch/serve.git
对于Windows系统
请参阅此处的文档。here.
- 安装torchserve、torch-model-archiver和torch-workflow-archiver
conda 安装
注意:Windows不支持Conda包。请参阅此处的文档here.
conda install torchserve torch-model-archiver torch-workflow-archiver -c pytorch
Pip安装
pip install torchserve torch-model-archiver torch-workflow-archiver
模型服务
本节展示了一个使用TorchServe为模型提供服务的简单示例。要完成这个示例,您必须已经安装了TorchServe和model archiver。
要运行这个例子,克隆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
有关模型归档器的更多信息,请参见Torch Model archiver for TorchServe
启动TorchServe服务模型
存档和存储模型后,使用torchserve命令为模型提供服务。
torchserve --start --ncs --model-store model_store --models densenet161.mar
注意:如果你在运行TorchServe时指定了模型,它会自动将后端worker的数量扩展到等于可用vcpu的数量(如果你在CPU实例上运行)或可用GPU的数量(如果你在GPU实例上运行)。如果是具有大量计算资源(vcpu或gpu)的强大主机,这个启动和自动扩展过程可能需要相当长的时间。如果你想最小化TorchServe的启动时间,你应该避免在启动时间注册和扩展模型,并通过使用相应的管理API(Management 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客户端运行inference
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服务于深度学习模型是多么容易!你想知道更多吗(Would you like to know more?)
停止TorchServe
要停止当前运行的TorchServe实例,运行:
torchserve --stop
检查日志
所有与模型注册、管理、推理相关的输出到stdout的日志都记录在/logs文件夹中。
可以使用基准测试生成吞吐量或百分位精度等高级性能数据,并在报告中可视化。
调试处理程序代码
如果你想调试处理程序代码,可以只使用后端运行TorchServe,因此可以使用任何python调试器。你可以参考这里定义的一个例子(here)