• 文件 >
  • Torchserve 使用案例
捷徑

Torchserve 使用案例

Torchserve 可用於不同的使用案例。為了方便使用者,這裡記錄了其中的一些案例。 這些使用案例假設您具有預先訓練的模型,並且在您的目標系統上安裝了 torchservetorch-model-archiver。 這應該有助於您將開發環境模型轉移到生產/服務環境。

注意事項

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

  • 如果計劃使用 docker,請確保已準備好以下先決條件 -

    • 確保您的目標節點上安裝了最新的 docker 引擎。 如果沒有,請使用連結進行安裝。

    • 按照使用 docker 安裝說明來分享 model-store 目錄並啟動 torchserve

  • 以下使用案例步驟使用 curl 來執行 torchserve REST api 呼叫。 但是,您也可以使用 chrome 插件 postman

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

  • 請參考自訂處理器以瞭解自訂處理器。

使用案例

供應 pytorch eager 模式模型

供應 pytorch scripted 模式模型

在 torchserve 模型動物園中供應現成的模型

安全模型供應

在 GPU 上供應模型

供應沒有第三方依賴項的自訂模型

供應具有第三方依賴項的自訂模型

供應用於 A/B 測試的模型

部署 pytorch eager 模式模型

部署模型的步驟

  • 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

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

    • Docker - 不適用。

  • 註冊模型,即上述步驟 1 中建立的 MAR 檔案,使用以下指令 - curl -v -X POST "https://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl https://127.0.0.1:8081/models/<your_model_name>

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

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

預期結果

  • 能夠部署任何腳本模型

  • 能夠使用已部署的模型進行推論

部署 pytorch 腳本模式模型

先決條件

  • 假設您有一個 torchscripted 模型,如果沒有,請按照此範例中的說明將您的 eager 模式模型儲存為腳本模型。

部署模型的步驟

  • torch 腳本模型建立 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

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

    • Docker - 不適用。

  • 註冊模型,即上述步驟 1 中建立的 MAR 檔案,使用以下指令 - curl -v -X POST "https://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl https://127.0.0.1:8081/models/<your_model_name>

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

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

預期結果

  • 能夠部署任何腳本模型

  • 能夠使用已部署的模型進行推論

範例

  • ../examples/image_classifier

在 torchserve 模型庫上提供現成的模型

此用例演示了基於 torch hubvision 模型(分類器、物件偵測器、分割器)在 torchserve 模型庫上的部署。 使用這些步驟來部署 公開託管的 模型。

部署模型的步驟

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

    • Docker - 不適用。

  • 註冊模型,即上述步驟 1 中建立的 MAR 檔案,使用以下指令 - curl -v -X POST "https://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=https://<public_url>/<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl https://127.0.0.1:8081/models/<your_model_name>

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

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

預期結果

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

  • 能夠使用已部署的模型進行推論

範例

安全模型服務

此用例演示了用於安全模型服務的 torchserve 部署。 這裡採用的範例使用 eager 模式模型,但您也可以部署腳本模型。

部署模型的步驟

  • 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

  • 建立具有參數選項 1 或 2 的 config.properties 檔案,如 啟用 SSL 中給出的。

  • 使用上面建立的屬性檔案啟動 torchserve - torchserve --start --ncs --model-store <model_store 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://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=https://<s3_path>/<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl -k https://127.0.0.1:8081/models/<your_model_name>

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

  • 使用以下 curl API 呼叫進行推論 - curl -k https://127.0.0.1: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。 這裡採用的範例使用腳本模式模型,但您也可以部署 eager 模型。

先決條件

  • 假設您有一個 torchscripted 模型,如果沒有,請按照此範例中的說明將您的 eager 模式模型儲存為腳本模型。

部署模型的步驟

  • torch 腳本模型建立 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

  • 在以下說明中,torchserve start 命令會自動偵測 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 your_model_store_dir>。使用受限制的 GPU:torchserve --start --ncs --model-store <model_store 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://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否已成功註冊,如:curl https://127.0.0.1:8081/models/<your_model_name> 回應中會包含一個 flag,指示模型是否已載入到 GPU 上。

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

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

預期結果

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

  • 能夠使用已部署的模型進行推論

提供沒有第三方依賴的自定義模型

此用例示範了 torchserve 對於沒有 Python 依賴(除了 PyTorch 和相關函式庫之外)的自定義模型的部署。這裡使用的範例是腳本模式模型,但您也可以部署 eager 模式模型。

先決條件

  • 假設您有一個 torchscripted 模型,如果沒有,請按照此範例中的說明將您的 eager 模式模型儲存為腳本模型。

部署模型的步驟

  • 建立 <your_custom_handler_py_file>

  • torch 腳本模型建立 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

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

    • Docker - 不適用。

  • 註冊模型,即上述步驟 1 中建立的 MAR 檔案,使用以下指令 - curl -v -X POST "https://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl https://127.0.0.1:8081/models/<your_model_name>

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

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

預期結果

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

範例

提供具有第三方依賴的自定義模型

此用例示範了 torchserve 對於具有 Python 依賴(除了 PyTorch 和相關函式庫之外)的自定義模型的部署。這裡使用的範例是腳本模式模型,但您也可以部署 eager 模式模型。

先決條件

  • 假設您有一個 torchscripted 模型,如果沒有,請按照此範例中的說明將您的 eager 模式模型儲存為腳本模型。

部署模型的步驟

  • 建立 <your_custom_handler_py_file>,它使用第三方 Python 套件,例如 fairseq,用於預訓練的 NMT 模型。

  • 建立一個 requirements.txt 檔案,其中包含 fairseq Python 套件名稱的項目。

  • 為帶有 requirements.txt 的 TorchScript 模式模型建立 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 - 確保 MAR 檔案在啟動 torchserve docker 映像檔時,被複製到共享的 volume/目錄中。

  • 將以下參數新增到 config.properties 檔案中:install_py_dep_per_model=true。更多詳細資訊請參考允許模型特定的自定義 Python 套件

  • 使用以下命令和 config.properties 檔案啟動 torchserve:torchserve --start --ncs --model-store <model_store 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://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 檢查模型是否成功註冊,使用以下指令 - curl https://127.0.0.1:8081/models/<your_model_name>

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

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

預期結果

  • 能夠部署任何帶有自定義處理器,且具有第三方 Python 依賴的模型

範例和參考

提供用於 AB 測試的模型

此用例示範了使用版本 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://127.0.0.1:8081/models?initial_workers=1&synchronous=true&url=<your-model-name-X>.mar"

  • 現在您可以調用這些模型,如下所示:

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

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

預期結果

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

範例和參考

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學課程

取得針對初學者和進階開發者的深入教學課程

檢視教學課程

資源

尋找開發資源並取得問題解答

檢視資源