快捷方式

⚠️ 注意:有限维护

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

TorchServe gRPC API

注意:当前的 TorchServe gRPC 不支持工作流。

TorchServe 也支持用于推理调用和管理调用的 gRPC API

TorchServe 提供以下 gRPC API

  • 推理 API

    • Ping :获取正在运行的服务器的健康状态

    • Predictions :从已服务的模型获取预测结果

    • StreamPredictions :从已保存的模型获取服务器端流式预测结果

对于所有推理 API 请求,TorchServe 要求包含正确的推理令牌,或者必须禁用令牌授权。有关更多详细信息,请参阅令牌授权文档

  • 管理 API

    • RegisterModel :在 TorchServe 上服务一个模型/模型版本

    • UnregisterModel :通过从 TorchServe 注销特定版本的模型来释放系统资源

    • ScaleWorker :动态调整任何模型版本的工作进程数量,以更好地服务不同的推理请求负载。

    • ListModels :查询当前已注册模型的默认版本

    • DescribeModel :获取模型默认版本的详细运行时状态

    • SetDefault :将模型的任何已注册版本设置为默认版本

对于所有管理 API 请求,TorchServe 要求包含正确的管理令牌,或者必须禁用令牌授权。有关更多详细信息,请参阅令牌授权文档

默认情况下,TorchServe 在本地主机上监听端口 7070 用于 gRPC 推理 API,端口 7071 用于 gRPC 管理 API。要在不同地址和端口上配置 gRPC API,请参考配置文档

gRPC API 的 Python 客户端示例

运行以下命令,使用 gRPC python 客户端,从 TorchServe 模型库注册、运行推理和注销 densenet161 模型。

git clone --recurse-submodules https://github.com/pytorch/serve
cd serve
  • 安装 gRPC python 依赖项

pip install -U grpcio protobuf grpcio-tools googleapis-common-protos
  • 启动 TorchServe

mkdir models
torchserve --start --disable-token-auth --enable-model-api --model-store models/
  • 使用 proto 文件生成 python gRPC 客户端 stub

python -m grpc_tools.protoc -I third_party/google/rpc --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
  • 注册 densenet161 模型

注意:要在 TorchServe 启动后使用此 API,必须启用模型 API 控制。启动 TorchServe 时,在命令行添加 --enable-model-api 以启用此 API 的使用。有关更多详细信息,请参阅模型 API 控制

如果令牌授权已禁用,请使用

python ts_scripts/torchserve_grpc_client.py register densenet161

如果令牌授权已启用,请使用

python ts_scripts/torchserve_grpc_client.py register densenet161 --auth-token <management-token>
  • 使用以下命令运行推理

如果令牌授权已禁用,请使用

python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg

如果令牌授权已启用,请使用

python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg --auth-token <inference-token>
  • 注销 densenet161 模型

注意:要在 TorchServe 启动后使用此 API,必须启用模型 API 控制。启动 TorchServe 时,在命令行添加 --enable-model-api 以启用此 API 的使用。有关更多详细信息,请参阅模型 API 控制

如果令牌授权已禁用,请使用

python ts_scripts/torchserve_grpc_client.py unregister densenet161

如果令牌授权已启用,请使用

python ts_scripts/torchserve_grpc_client.py unregister densenet161 --auth-token <management-token>

GRPC 服务器端流式处理

TorchServe GRPC API 添加了推理 API “StreamPredictions” 的服务器端流式处理,以允许通过相同的 GRPC 流发送一系列推理响应。此新 API 仅推荐用于完整响应的推理延迟较高且推理中间结果发送到客户端的用例。一个例子可能是用于生成式应用程序的 LLM,生成“n”个 token 可能具有高延迟,在这种情况下,用户可以在每个生成的 token 就绪后立即接收,直到完整响应完成。此新 API 会自动强制 batchSize 为一。

service InferenceAPIsService {
    // Check health status of the TorchServe server.
    rpc Ping(google.protobuf.Empty) returns (TorchServeHealthResponse) {}

    // Predictions entry point to get inference using default model version.
    rpc Predictions(PredictionsRequest) returns (PredictionResponse) {}

    // Streaming response for an inference request.
    rpc StreamPredictions(PredictionsRequest) returns (stream PredictionResponse) {}
}

后端处理器调用 “send_intermediate_predict_response” 将一个中间结果发送到前端,并以现有方式返回最后一个结果。例如

from ts.handler_utils.utils import send_intermediate_predict_response
''' Note: TorchServe v1.0.0 will deprecate
"from ts.protocol.otf_message_handler import send_intermediate_predict_response".
Please replace it with "from ts.handler_utils.utils import send_intermediate_predict_response".
'''

def handle(data, context):
    if type(data) is list:
        for i in range (3):
            send_intermediate_predict_response(["intermediate_response"], context.request_ids, "Intermediate Prediction success", 200, context)
        return ["hello world "]

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源