• 文件 >
  • Torchserve 使用案例
快捷方式

⚠️ 注意:維護有限

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

Torchserve 使用案例

Torchserve 可用於不同的使用案例。為了方便使用者,此處已記錄了一些使用案例。這些使用案例假定您已在目標系統上安裝預訓練模型以及 torchservetorch-model-archiver。這應該有助於您將開發環境中的模型遷移到生產/服務環境。

注意事項

  • 如果您尚未安裝最新的 torchserve 和 torch-model-archiver,請按照 安裝 說明完成安裝。

  • 如果計劃使用 Docker,請確保已滿足以下先決條件:

    • 確保您的目標節點上已安裝最新的 Docker 引擎。如果尚未安裝,請使用連結進行安裝。

    • 按照使用 Docker 安裝的說明共享 model-store 目錄並啟動 torchserve。

  • 以下使用案例步驟使用 curl 執行 torchserve REST API 呼叫。但是,您也可以使用 Chrome 外掛 postman 來完成此操作。

  • 請參考預設處理程式以瞭解預設處理程式。

  • 請參考自定義處理程式以瞭解自定義處理程式。

使用案例

服務 PyTorch Eager Mode 模型

服務 PyTorch Scripted Mode 模型

服務 Torchserve 模型庫中的現成模型

安全的模型服務

在 GPU 上服務模型

服務不依賴第三方庫的自定義模型

服務依賴第三方庫的自定義模型

服務用於 A/B 測試的模型

部署 PyTorch Eager Mode 模型

部署模型(們)的步驟

  • Torch Eager 模型建立 MAR 檔案

    torch-model-archiver --model-name <your_model_name> --version 1.0 --model-file <your_model_file>.py --serialized-file <your_model_name>.pth --handler <default_handler> --extra-files ./index_to_name.json
    mkdir model_store
    mv <your_model_name>.mar model_store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案放在一個新目錄中,命名為 model-store(這可以是任意名稱)。

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 使用以下命令啟動 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 此項不適用。

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠部署任何 Scripted Mode 模型

  • 能夠使用已部署的模型執行推理

部署 PyTorch Scripted Mode 模型

先決條件

  • 假設您有一個 TorchScripted 模型,如果不是,請按照此示例中的說明將您的 Eager Mode 模型儲存為 Scripted Mode 模型。

部署模型(們)的步驟

  • Torch Scripted 模型建立 MAR 檔案

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <default_handler>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案放在一個新目錄中,命名為 model-store(這可以是任意名稱)。

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 使用以下命令啟動 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 此項不適用。

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠部署任何 Scripted Mode 模型

  • 能夠使用已部署的模型執行推理

示例

  • ../examples/image_classifier

服務 Torchserve 模型庫中的現成模型

此使用案例演示瞭如何部署基於 Torch Hubvision 模型(分類器、物件檢測器、分割器),這些模型可在Torchserve 模型庫中找到。您也可以使用這些步驟部署 公開託管 的模型。

部署模型(們)的步驟

  • 使用以下命令啟動 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 此項不適用。

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=https://<public_url>/<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠部署模型庫中的任何模型

  • 能夠使用已部署的模型執行推理

示例

安全的模型服務

此使用案例演示瞭如何部署 torchserve 以實現安全模型服務。此處採用的示例使用了 Eager Mode 模型,但您也可以部署 Scripted Mode 模型。

部署模型(們)的步驟

  • Torch Eager 模型建立 MAR 檔案

    torch-model-archiver --model-name <your_model_name> --version 1.0 --model-file <your_model_file>.py --serialized-file <your_model_name>.pth --handler <default_handler> --extra-files ./index_to_name.json
    mkdir model_store
    mv <your_model_name>.mar model_store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案放在一個新目錄中,命名為 model-store(這可以是任意名稱)。

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 建立 config.properties 檔案,其中包含啟用 SSL 中提供的選項 1 或選項 2 引數。

  • 使用上面建立的 properties 檔案啟動 torchserve,命令如下:torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - docker run --rm -p 127.0.0.1:8443:8433 -p 127.0.0.1:8444:8444 -p 127.0.0.1:8445:8445 -v <local_dir>/model-store:/home/model-server/model-store <your_docker_image> torchserve --model-store=/tmp/models --ts-config <your_path>/config.properties

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -k -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=https://<s3_path>/<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl -k https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl -k https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

    注意 curl 命令中使用了 https 和 -k 選項。如果您有所需的金鑰,可以使用其他選項(如 -key 等)替代 -k。

預期結果

  • 能夠部署 torchserve 並透過 HTTPS 訪問 API

示例/參考

  • https://github.com/pytorch/serve/blob/master/docs/configuration.md#enable-ssl

在 GPU 上服務模型

此使用案例演示瞭如何在 GPU 上部署 torchserve。此處採用的示例使用了 Scripted Mode 模型,但您也可以部署 Eager Mode 模型。

先決條件

  • 假設您有一個 TorchScripted 模型,如果不是,請按照此示例中的說明將您的 Eager Mode 模型儲存為 Scripted Mode 模型。

部署模型(們)的步驟

  • Torch Scripted 模型建立 MAR 檔案

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <default_handler>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案移動到一個新目錄中,命名為 model-store

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 以下說明中的 torchserve 啟動命令將自動檢測 GPU 並用於載入/服務模型。如果您想限制 GPU 使用,可以使用 nvidia-smi 確定 GPU 數量及對應的 ID。獲取 GPU 詳細資訊後,您可以在 config.properties 中新增 number_of_gpu 引數,並使用下一條指令中給出的第二條命令。例如:number_of_gpu=2

  • 使用所有 GPU 啟動 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>。限制 GPU 使用時 - torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - 使用所有 GPU 時 docker run --rm -it --gpus all -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 torchserve:gpu-latest。使用 GPU 1 和 2 時 docker run --rm -it --gpus '"device=1,2"' -p 8080:8080 -p 8081:8081 pytorch/torchserve:latest-gpu

    • Docker - 詳情請參考啟動 GPU 容器

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>。響應將包含指示模型已載入到 GPU 上的標誌。

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠將任何模型部署到 GPU

  • 能夠使用已部署的模型執行推理

服務不依賴第三方庫的自定義模型

此使用案例演示瞭如何部署 torchserve 來服務不依賴除 PyTorch 及相關庫之外的第三方 Python 庫的自定義模型。此處採用的示例使用了 Scripted Mode 模型,但您也可以部署 Eager Mode 模型。

先決條件

  • 假設您有一個 TorchScripted 模型,如果不是,請按照此示例中的說明將您的 Eager Mode 模型儲存為 Scripted Mode 模型。

部署模型(們)的步驟

  • 建立<您的_自定義_handler_py_檔案>

  • Torch Scripted 模型建立 MAR 檔案

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <**path/to/your_custom_handler_py_file**>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案放在一個新目錄中,命名為 model-store(這可以是任意名稱)。

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 使用以下命令啟動 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 此項不適用。

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠部署任何帶有自定義處理程式的模型

示例

服務依賴第三方庫的自定義模型

此使用案例演示瞭如何部署 torchserve 來服務依賴除 PyTorch 及相關庫之外的第三方 Python 庫的自定義模型。此處採用的示例使用了 Scripted Mode 模型,但您也可以部署 Eager Mode 模型。

先決條件

  • 假設您有一個 TorchScripted 模型,如果不是,請按照此示例中的說明將您的 Eager Mode 模型儲存為 Scripted Mode 模型。

部署模型(們)的步驟

  • 建立<您的_自定義_handler_py_檔案>,該檔案使用第三方 Python 包,例如用於預訓練 NMT 模型的 fairseq

  • 建立一個 requirements.txt 檔案,並在其中新增 fairseq Python 包名。

  • 為帶有 requirements.txt 的Torch Scripted 模型建立 MAR 檔案。

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <**path/to/your_custom_handler_py_file**> --requirements-file <your_requirements_txt>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 Docker 中構建 MAR 檔案,請參考此處瞭解詳情。

  • 將 MAR 檔案放在一個新目錄中,命名為 model-store(這可以是任意名稱)。

    • Docker - 確保在啟動 torchserve Docker 映象時,MAR 檔案被複制到共享卷/目錄中。

  • 將以下引數新增到 config.properties 檔案中 - install_py_dep_per_model=true。詳情請參考允許模型特定的自定義 Python 包

  • 使用 config.properties 檔案啟動 torchserve,命令如下:torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - docker run –rm -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 -v <local_dir>/model-store:/home/model-server/model-store <your_docker_image> torchserve –model-store=/tmp/models –ts-config <your_path>/config.properties

  • 註冊模型,即上面第 1 步建立的 MAR 檔案,命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,命令如下:curl https://:8081/models/<your_model_name>

  • 根據預期的負載型別擴充套件 worker。上面註冊請求中我們將 min-worker 設定為 1。命令如下:curl -v -X PUT "https://:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 呼叫執行推理:curl https://:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具進行 HTTP 請求和響應。

預期結果

  • 能夠部署帶有依賴第三方 Python 庫的自定義處理程式的模型

示例和參考

服務用於 A/B 測試的模型

此使用案例演示瞭如何使用版本 API 服務同一模型的兩個或多個版本。它是上述任何使用案例的擴充套件。

先決條件

  • 您已按照上述任一流程操作,並且 torchserve 已正確設定,同時安裝了 torch-model-archiver。

部署模型(們)的步驟

  • 建立一個版本為 1.0 或根據需求的模型(即 MAR 檔案)。按照上面給出的步驟建立模型檔案,例如 torch-model-archiver –model-name –version 1.0 –model-file model.py –serialized-file.pth –extra-files index_to_name.json –handler.py

  • 建立另一個版本為 2.0 或根據需求的模型(即 MAR 檔案),例如 torch-model-archiver –model-name –version 2.0 –model-file model.py –serialized-file.pth –extra-files index_to_name.json –handler.py

  • 使用初始 worker 註冊這兩個模型。如果需要,可以使用更新 API 增加 worker 數量。命令如下:curl -v -X POST "https://:8081/models?initial_workers=1&synchronous=true&url=<your-model-name-X>.mar"

  • 現在您可以使用以下命令呼叫這些模型:

    • 模型版本 1.0:curl https://:8081/models/<your-model-name-X>/1.0curl https://:8080/predictions/<your-model-name-X>/1.0 -F "data=@kitten.jpg"

    • 模型版本 2.0:curl https://:8081/models/<your-model-name-X>/2.0curl https://:8080/predictions/<your-model-name-X>/2.0 -F "data=@kitten.jpg"

預期結果

  • 能夠部署同一模型的多個版本

示例和參考

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

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

檢視資源