快捷方式

⚠️ 注意:有限维护

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

模型 API 控制

TorchServe 现在默认禁用模型 API 的使用(特别是模型注册和删除功能)。可以通过命令行或 config.properties 文件启用这些 API 的使用。

TorchServe 默认在启动后禁用通过 API 调用注册和删除模型的功能。这是一项安全功能,用于解决 TorchServe 启动后模型被意外注册和删除的问题。这适用于用户可能以模型形式上传恶意代码到模型服务器,或用户可能删除正在使用的模型的情况。默认行为可防止用户在 TorchServe 运行后注册或删除模型。可以启用模型 API 控制,允许用户使用 TorchServe 模型加载和删除 API 来注册和删除模型。

设置模型 API 控制的三种方法

  1. 环境变量:使用 TS_ENABLE_MODEL_API 并将其设置为 true 以启用模型 API 使用,设置为 false 以禁用。请注意,必须在 config.properties 中设置 enable_envvars_config=true 才能使用环境变量配置

  2. 在启动 TorchServe 时向命令行添加 --enable-model-api,将模式从禁用切换到启用。命令行无法用于禁用,只能用于启用

  3. 向 config.properties 文件添加 enable_model_api=falseenable_model_api=true

    • enable_model_api=false 是默认值,可防止用户在 TorchServe 运行后注册或删除模型

    • enable_model_api=true 不是默认值,允许用户使用 TorchServe 模型 API 注册和删除模型

优先级遵循以下TorchServe 标准

  • 示例 1

    • 配置文件:enable_model_api=false

      命令行:torchserve --start --ncs --model-store model_store --enable-model-api

      结果:模型 API 模式已启用

  • 示例 2

    • 配置文件:enable_model_api=true

      命令行:torchserve --start --ncs --model-store model_store

      结果:模式已启用(无法通过命令行禁用 API 模式)

模型 API 控制默认行为

在启动时,TorchServe 仅加载通过 --models 命令行选项明确指定的模型。在此模式下,用户在启动后将无法注册或删除模型。

默认示例

ubuntu@ip-172-31-11-32:~/serve$ torchserve --start --ncs --model-store model_store --models resnet-18=resnet-18.mar --ts-config config.properties
...
ubuntu@ip-172-31-11-32:~/serve$ curl -X POST  "http://localhost:8081/models?url=https://torchserve.pytorch.org/mar_files/squeezenet1_1.mar"
2024-05-30T21:46:03,625 [INFO ] epollEventLoopGroup-3-2 ACCESS_LOG - /127.0.0.1:53514 "POST /models?url=https://torchserve.pytorch.org/mar_files/squeezenet1_1.mar HTTP/1.1" 405 0
2024-05-30T21:46:03,626 [INFO ] epollEventLoopGroup-3-2 TS_METRICS - Requests4XX.Count:1.0|#Level:Host|#hostname:ip-172-31-11-32,timestamp:1717105563
{
  "code": 405,
  "type": "MethodNotAllowedException",
  "message": "Requested method is not allowed, please refer to API document."
}

模型控制 API 已启用

将模型 API 设置为 enabled 允许用户使用模型加载 API 加载和卸载模型。

使用命令行设置模式为已启用的示例

ubuntu@ip-172-31-11-32:~/serve$ torchserve --start --ncs --model-store model_store --models resnet-18=resnet-18.mar --ts-config config.properties --enable-model-api

ubuntu@ip-172-31-11-32:~/serve$ curl -X POST  "http://localhost:8081/models?url=https://torchserve.pytorch.org/mar_files/squeezenet1_1.mar"
{
  "status": "Model \"squeezenet1_1\" Version: 1.0 registered with 0 initial workers. Use scale workers API to add workers for the model."
}
ubuntu@ip-172-31-11-32:~/serve$ curl http://localhost:8081/models
2024-05-30T21:41:47,098 [INFO ] epollEventLoopGroup-3-2 ACCESS_LOG - /127.0.0.1:36270 "GET /models HTTP/1.1" 200 2
2024-05-30T21:41:47,099 [INFO ] epollEventLoopGroup-3-2 TS_METRICS - Requests2XX.Count:1.0|#Level:Host|#hostname:ip-172-31-11-32,timestamp:1717105307
{
  "models": [
    {
      "modelName": "resnet-18",
      "modelUrl": "resnet-18.mar"
    },
    {
      "modelName": "squeezenet1_1",
      "modelUrl": "https://torchserve.pytorch.org/mar_files/squeezenet1_1.mar"
    }
  ]
}
ubuntu@ip-172-31-11-32:~/serve$ torchserve --stop
TorchServe has stopped.

© Copyright 2020,PyTorch Serve 贡献者。

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

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源