⚠️ 注意:維護受限
此專案不再積極維護。現有版本仍然可用,但沒有計劃的更新、錯誤修復、新功能或安全補丁。使用者應注意,漏洞可能不會得到解決。
執行 TorchServe¶
本文件內容¶
概述¶
TorchServe 可用於生產環境中的多種推理型別。它提供易於使用的命令列介面,並利用 基於 REST 的 API 處理狀態預測請求。
例如,您希望製作一個應用程式,讓使用者拍照後,告訴他們場景中檢測到了哪些物件以及對物件可能是什麼的預測。您可以使用 TorchServe 為一個物件檢測和識別模型提供預測端點,該模型接收影像,然後返回預測結果。您還可以使用自定義服務修改 TorchServe 的行為並執行多個模型。在 examples 資料夾中提供了自定義服務的示例。
技術細節¶
既然您對 TorchServe 有了一個高層次的瞭解,下面我們深入探討一些細節。TorchServe 接受一個 PyTorch 深度學習模型,並將其封裝在一組 REST API 中。當前版本帶有一個內建的 Web 伺服器,您可以從命令列執行它。此命令列呼叫接受您希望提供服務的單個或多個模型,以及控制埠、主機和日誌記錄的其他可選引數。TorchServe 支援執行自定義服務來處理特定的推理處理邏輯。有關這些內容的更多詳細資訊,請參閱自定義服務文件。
要立即嘗試 TorchServe 服務,您可以使用此示例載入自定義 MNIST 模型
在深入探討之後,您可能還會對以下內容感興趣
日誌記錄:可用的日誌記錄選項
指標:關於指標收集的詳細資訊
REST API 說明:關於伺服器端點的更多詳細資訊
自定義服務:瞭解如何提供不同型別的模型和推理
模型檔案¶
本主題的其餘部分重點介紹如何提供模型檔案服務,而不過多討論模型檔案本身、它們的來源以及如何建立。簡而言之:它是一個 zip 歸檔檔案,包含已訓練模型的引數、權重和元資料。如果您想了解更多關於模型檔案的資訊,請參閱 model-archiver 文件。
命令列介面¶
$ torchserve --help
usage: torchserve [-h] [-v | --version]
[--start]
[--stop]
[--ts-config TS_CONFIG]
[--model-store MODEL_STORE]
[--workflow-store WORKFLOW_STORE]
[--models MODEL_PATH1 MODEL_NAME=MODEL_PATH2... [MODEL_PATH1 MODEL_NAME=MODEL_PATH2... ...]]
[--log-config LOG_CONFIG]
torchserve
optional arguments:
-h, --help show this help message and exit
-v, --version Return TorchServe Version
--start Start the model-server
--stop Stop the model-server
--ts-config TS_CONFIG
Configuration file for TorchServe
--model-store MODEL_STORE
Model store location where models can be loaded.
It is required if "model_store" is not defined in config.properties.
--models MODEL_PATH1 MODEL_NAME=MODEL_PATH2... [MODEL_PATH1 MODEL_NAME=MODEL_PATH2... ...]
Models to be loaded using [model_name=]model_location
format. Location can be a HTTP URL, a model archive
file or directory contains model archive files in
MODEL_STORE.
--log-config LOG_CONFIG
Log4j configuration file for TorchServe
--ncs, --no-config-snapshots
Disable snapshot feature
--workflow-store WORKFLOW_STORE
Workflow store location where workflow can be loaded. Defaults to model-store
引數:¶
啟動時未載入模型的示例
torchserve --model-store /models
啟動伺服器沒有預設的必需引數
models:可選,<model_name>=<model_path> 對。
a) 模型路徑可以是本地 mar 檔名,也可以是 mar 檔案的遠端 http 連結 b) 要載入模型儲存中的所有模型,請將模型值設定為“all”
torchserve --model-store /models --start --models all
c) 模型檔案具有 .mar 副檔名,它實際上是一個帶有 .mar 副檔名的 zip 檔案,打包了訓練好的模型和模型簽名檔案。
d) 透過指定多個名稱-路徑對,也支援載入多個模型。
e) 關於在啟動 TorchServe 時載入模型的不同方式的詳細資訊,請參閱使用 TorchServe 部署多個模型
model-store:必需,儲存預設或本地模型的位置。模型儲存中可用的模型可以透過 註冊 API 呼叫 或在啟動 TorchServe 時透過 models 引數註冊到 TorchServe 中。
workflow-store:必需,儲存預設或本地工作流的位置。工作流儲存中可用的工作流可以透過 註冊 API 呼叫 註冊到 TorchServe 中。
ts-config:可選,提供一個 配置檔案,格式為 config.properties。
log-config:可選,此引數將覆蓋伺服器內部存在的預設 log4j2.xml。
start:可選,一種更具描述性的啟動伺服器方式。
stop:可選,如果伺服器已在執行,則停止伺服器。
引數優先順序:¶
引數可以在多個位置設定(例如:命令列,config.properties)。優先順序如下:
命令列
配置檔案屬性
預設設定
示例:在 config.properties 檔案和命令列中都設定 model-store,將使用命令列的位置,並覆蓋 config.properties 中的設定。
高階功能¶
自定義服務¶
這個主題在自定義服務文件頁面中有更詳細的介紹,但我們先來談談如何使用自定義服務啟動 TorchServe 伺服器以及為什麼要使用自定義服務。假設您的 /models 資料夾中有一個名為 super-fancy-net.mar 的模型,它可以檢測很多東西,但您只想建立一個只檢測熱狗的 API 端點。您會為此使用一個有意義的名稱,例如“not-hot-dog” API。在這種情況下,我們可能會像這樣呼叫 TorchServe
torchserve --start --model-store /models --models not-hot-dog=super-fancy-net.mar
這將提供一個位於 predictions/not-hot-dog/ 的預測端點,並執行歸檔檔案中的自定義服務程式碼,歸檔檔案中的 manifest 檔案將指向入口點。
使用 TorchServe 部署多個模型¶
啟動 TorchServe 時載入 model_store 中所有可用模型的示例
torchserve --start --model-store /models --models all
多個模型使用示例
torchserve --start --model-store /models --models name=model_location name2=model_location2
以下是使用本地模型檔案執行 resnet-18 和 vgg16 模型的示例。
torchserve --start --model-store /models --models resnet-18=resnet-18.mar squeezenet=squeezenet_v1.1.mar