快捷方式

⚠️ 注意:维护受限

本项目不再积极维护。虽然现有版本仍然可用,但没有计划的更新、错误修复、新功能或安全补丁。用户应注意,漏洞可能不会得到解决。

入门

安装 TorchServe 和 torch-model-archiver

  1. 安装依赖项

    注意:对于 Conda,运行 Torchserve 需要 Python >=3.8。

适用于基于 Debian 的系统/MacOS

  • 适用于 CPU

    python ./ts_scripts/install_dependencies.py
    
  • 适用于带有 Cuda 12.1 的 GPU。选项包括 cu92cu101cu102cu111cu113cu116cu117cu118cu121

    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 注意:Windows 不支持 Conda 包。请参阅此处的文档。

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

    1. 创建一个目录来存储您的模型。

      mkdir model_store
      
    2. 下载训练好的模型。

      wget https://download.pytorch.org/models/densenet161-8d451a50.pth
      
    3. 使用模型归档器归档模型。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 将其移至稍后进行,该 API 允许对为特定模型分配的资源进行更精细的控制)。

    从模型获取预测结果

    要测试模型服务器,请向服务器的 predictions API 发送请求。TorchServe 通过 gRPCHTTP/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
    
    python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg
    

    使用 REST API

    例如,我们将下载以下可爱的猫咪图片,使用

    kitten

    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 文件夹中。

    可以使用 Benchmark 生成吞吐量或百分位精度等高级性能数据,并在报告中进行可视化。

    调试处理程序代码

    如果您想调试处理程序代码,可以只运行 TorchServe 的后端,从而使用任何 Python 调试器。您可以参考此处定义的一个示例。

    贡献

    如果您计划使用 TorchServe 进行开发并更改一些源代码,请遵循贡献指南


    © 版权所有 2020, PyTorch Serve 贡献者。

    使用 Sphinx 构建,主题由 Read the Docs 提供。

    文档

    访问 PyTorch 的全面开发者文档

    查看文档

    教程

    获取面向初学者和高级开发者的深入教程

    查看教程

    资源

    查找开发资源并获得问题解答

    查看资源