pytorch serve开始-Getting started

2023-12-13 14:38:12

官网链接

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文件。您可以使用模型归档程序来打包模型。您还可以创建模型存储来存储您的存档模型。

  1. 创建一个目录来存储模型。
mkdir model_store
  1. 下载一个训练好的模型。
wget https://download.pytorch.org/models/densenet161-8d451a50.pth
  1. 通过使用模型归档器来归档模型。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)

文章来源:https://blog.csdn.net/poorCoder_/article/details/134905474
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。