快捷方式

⚠️ 注意:維護受限

此專案不再積極維護。現有版本仍然可用,但沒有計劃的更新、錯誤修復、新功能或安全補丁。使用者應注意,漏洞可能不會得到解決。

執行 TorchServe

本文件內容

概述

TorchServe 可用於生產環境中的多種推理型別。它提供易於使用的命令列介面,並利用 基於 REST 的 API 處理狀態預測請求。

例如,您希望製作一個應用程式,讓使用者拍照後,告訴他們場景中檢測到了哪些物件以及對物件可能是什麼的預測。您可以使用 TorchServe 為一個物件檢測和識別模型提供預測端點,該模型接收影像,然後返回預測結果。您還可以使用自定義服務修改 TorchServe 的行為並執行多個模型。在 examples 資料夾中提供了自定義服務的示例。

技術細節

既然您對 TorchServe 有了一個高層次的瞭解,下面我們深入探討一些細節。TorchServe 接受一個 PyTorch 深度學習模型,並將其封裝在一組 REST API 中。當前版本帶有一個內建的 Web 伺服器,您可以從命令列執行它。此命令列呼叫接受您希望提供服務的單個或多個模型,以及控制埠、主機和日誌記錄的其他可選引數。TorchServe 支援執行自定義服務來處理特定的推理處理邏輯。有關這些內容的更多詳細資訊,請參閱自定義服務文件。

要立即嘗試 TorchServe 服務,您可以使用此示例載入自定義 MNIST 模型

在深入探討之後,您可能還會對以下內容感興趣

模型檔案

本主題的其餘部分重點介紹如何提供模型檔案服務,而不過多討論模型檔案本身、它們的來源以及如何建立。簡而言之:它是一個 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

啟動伺服器沒有預設的必需引數

  1. 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 部署多個模型

  2. model-store:必需,儲存預設或本地模型的位置。模型儲存中可用的模型可以透過 註冊 API 呼叫 或在啟動 TorchServe 時透過 models 引數註冊到 TorchServe 中。

  3. workflow-store:必需,儲存預設或本地工作流的位置。工作流儲存中可用的工作流可以透過 註冊 API 呼叫 註冊到 TorchServe 中。

  4. ts-config:可選,提供一個 配置檔案,格式為 config.properties。

  5. log-config:可選,此引數將覆蓋伺服器內部存在的預設 log4j2.xml。

  6. start:可選,一種更具描述性的啟動伺服器方式。

  7. stop:可選,如果伺服器已在執行,則停止伺服器。

引數優先順序:

引數可以在多個位置設定(例如:命令列,config.properties)。優先順序如下:

  1. 命令列

  2. 配置檔案屬性

  3. 預設設定

示例:在 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

日誌記錄和指標

有關日誌記錄的詳細資訊,請參閱日誌記錄文件。有關指標的詳細資訊,請參閱指標文件

文件

查閱 PyTorch 全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源