模型 API 控制¶
TorchServe 现在默认禁用模型 API(特别是注册和删除模型)的使用。可以通过命令行或 config.properties 文件启用这些 API 的使用。
TorchServe 默认禁用在 TorchServe 运行后使用 API 调用注册和删除模型的功能。这是一项安全功能,旨在解决 TorchServe 启动后意外注册和删除模型的担忧。这适用于用户可能以模型形式上传恶意代码到模型服务器,或者用户可能删除正在使用的模型的情况。默认行为阻止用户在 TorchServe 运行后注册或删除模型。可以启用模型 API 控制,以允许用户使用 TorchServe 模型加载和删除 API 注册和删除模型。
设置模型 API 控制的三种方法¶
环境变量:使用
TS_ENABLE_MODEL_API
并设置为true
以启用,设置为false
以禁用模型 API 使用。请注意,必须在 config.properties 中设置enable_envvars_config=true
才能使用环境变量配置在启动 TorchServe 时向命令行添加
--enable-model-api
以从禁用切换到启用。命令行不能用于禁用,只能用于启用将
enable_model_api=false
或enable_model_api=true
添加到 config.properties 文件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
结果:模式已启用(无法通过 cmd 禁用 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 "https://127.0.0.1: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 "https://127.0.0.1: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 https://127.0.0.1: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.