官網鏈接
Getting started — PyTorch/Serve master documentation
安裝TorchServe和torch-model-archiver
安裝依賴
注意::對于Conda,運行Torchserve需要Python >=3.8。
對于基于Debian的系統/ MacOS
- CPU
python ./ts_scripts/install_dependencies.py
- 對于使用Cuda 12.1的GPU。可選:cu92、cu101、cu102、cu111、cu113、cu116、cu117、cu118、cu121
python ./ts_scripts/install_dependencies.py --cuda=cu121
注意:PyTorch 1.9+不支持cu92和cu101。因此,在PyTorch 1.8.1之前,TorchServe只支持cu92和cu101。安裝文件參考https://github.com/pytorch/serve.git
對于Windows系統
請參閱此處的文檔。here.
- 安裝torchserve、torch-model-archiver和torch-workflow-archiver
conda 安裝
注意:Windows不支持Conda包。請參閱此處的文檔here.
conda install torchserve torch-model-archiver torch-workflow-archiver -c pytorch
Pip安裝
pip install torchserve torch-model-archiver torch-workflow-archiver
模型服務
本節展示了一個使用TorchServe為模型提供服務的簡單示例。要完成這個示例,您必須已經安裝了TorchServe和model archiver。
要運行這個例子,克隆TorchServe倉庫:
git clone https://github.com/pytorch/serve.git
然后在存儲庫根目錄的父目錄中運行以下步驟。例如,如果您將存儲庫克隆到/home/my_path/serve,則從/home/my_path運行步驟。
存儲模型
要使用TorchServe為模型提供服務,首先將模型歸檔為MAR文件。您可以使用模型歸檔程序來打包模型。您還可以創建模型存儲來存儲您的存檔模型。
- 創建一個目錄來存儲模型。
mkdir model_store
- 下載一個訓練好的模型。
wget https://download.pytorch.org/models/densenet161-8d451a50.pth
- 通過使用模型歸檔器來歸檔模型。extra-files參數使用了一個來自TorchServe倉庫的文件,因此如果有必要,請更新路徑。
torch-model-archiver --model-name densenet161 --version 1.0 --model-file ./serve/examples/image_classifier/densenet_161/model.py --serialized-file densenet161-8d451a50.pth --export-path model_store --extra-files ./serve/examples/image_classifier/index_to_name.json --handler image_classifier
有關模型歸檔器的更多信息,請參見Torch Model archiver for TorchServe
啟動TorchServe服務模型
存檔和存儲模型后,使用torchserve命令為模型提供服務。
torchserve --start --ncs --model-store model_store --models densenet161.mar
注意:如果你在運行TorchServe時指定了模型,它會自動將后端worker的數量擴展到等于可用vcpu的數量(如果你在CPU實例上運行)或可用GPU的數量(如果你在GPU實例上運行)。如果是具有大量計算資源(vcpu或gpu)的強大主機,這個啟動和自動擴展過程可能需要相當長的時間。如果你想最小化TorchServe的啟動時間,你應該避免在啟動時間注冊和擴展模型,并通過使用相應的管理API(Management API)將其移動到程序入口點,它允許更細粒度地控制分配給任何特定模型的資源)。
從模型中獲得預測結果
要測試模型服務器,請向服務器的 predictions API發送請求。TorchServe通過gRPC和HTTP/REST支持所有的推理和管理api。
通過python客戶端使用GRPC api
- 安裝grpc的python依賴:
pip install -U grpcio protobuf grpcio-tools
- 使用proto文件生成推理客戶端
python -m grpc_tools.protoc --proto_path=frontend/server/src/main/resources/proto/ --python_out=ts_scripts --grpc_python_out=ts_scripts frontend/server/src/main/resources/proto/inference.proto frontend/server/src/main/resources/proto/management.proto
- 使用示例客戶端gRPC python客戶端運行inference
python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg
使用REST api
作為一個例子,我們將下載下面這只可愛的小貓
curl -O https://raw.githubusercontent.com/pytorch/serve/master/docs/images/kitten_small.jpg
然后調用預測地址
curl http://127.0.0.1:8080/predictions/densenet161 -T kitten_small.jpg
它將返回以下JSON對象
[{"tiger_cat": 0.46933549642562866},{"tabby": 0.4633878469467163},{"Egyptian_cat": 0.06456148624420166},{"lynx": 0.0012828214094042778},{"plastic_bag": 0.00023323034110944718}
]
所有的交互都將記錄在logs/目錄中,所以一定要查看它!
在你已經看到了使用TorchServe服務于深度學習模型是多么容易!你想知道更多嗎(Would you like to know more?)
停止TorchServe
要停止當前運行的TorchServe實例,運行:
torchserve --stop
檢查日志
所有與模型注冊、管理、推理相關的輸出到stdout的日志都記錄在/logs文件夾中。
可以使用基準測試生成吞吐量或百分位精度等高級性能數據,并在報告中可視化。
調試處理程序代碼
如果你想調試處理程序代碼,可以只使用后端運行TorchServe,因此可以使用任何python調試器。你可以參考這里定義的一個例子(here)