模型 API 控制¶
TorchServe 現在預設停用模型 API 的使用 (特別是註冊和刪除模型)。可以使用命令列或 config.properties 檔案啟用這些 API 的使用。
一旦 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
結果:模式已啟用 (無法透過命令列停用 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.