常見問題¶
本文內容。
一般¶
相關文件。
Torchserve API 是否遵循某些 REST API 標準?¶
Torchserve API 符合 OpenAPI 規範 3.0。
如何在生產環境中使用 Torchserve?¶
根據您的使用案例,您可以使用以下機制在生產環境中部署 torchserve。
獨立部署。請參閱 TorchServe docker 文件 或 TorchServe 文件 基於雲端的部署。請參閱 TorchServe kubernetes 文件 或 TorchServe cloudformation 文件
Torchserve 與使用 Flask、Django 等 Web 框架的 Python Web 應用程式之間有什麼區別?¶
Torchserve 的主要目的是透過 http REST API 提供模型服務,Torchserve 不是 Flask 應用程式,它使用 netty 引擎來提供 http 請求。
是否有任何可用的模型範例?¶
Torchserve 預設提供各種模型。查看 Torchserve 模型動物園 以取得所有可用模型的清單。您也可以查看 examples 資料夾。
Torchserve 是否支援基於 Python 以外的程式語言的其他模型?¶
目前不支援,截至目前僅支援基於 Python 的模型。
Torchserve 比 AWS Multi-Model-Server 有哪些優勢?¶
Torchserve 源自 Multi-Model-Server。但是,Torchserve 專門針對 Pytorch 模型進行了調整。它還具有快照和模型版本控制等新功能。
如何在客戶端解碼推論回應中的國際語言?¶
預設情況下,如果推論回應是字串,Torchserve 使用 utf-8 進行編碼。因此,客戶端可以使用 utf-8 進行解碼。
如果模型將國際語言字串轉換為位元組,則客戶端需要使用模型指定的編碼機制,例如 https://github.com/pytorch/serve/blob/master/examples/nmt_transformer/model_handler_generalized.py
效能¶
相關文件。
如何提高 CPU 上 TorchServe 的效能?¶
CPU 效能受啟動器核心綁定影響很大。我們建議在您的 config.properties
中設定以下屬性
cpu_launcher_enable=true
cpu_launcher_args=--use_logical_core
更多關於提升 CPU 效能的背景資訊,請參考這篇部落格文章。
部署與設定¶
相關文件。
我可以在預設的 8080 & 8081 以外的埠上執行 Torchserve API 嗎?¶
可以,Torchserve API 埠可以使用屬性檔案或環境變數來設定。詳情請參考設定。
我該如何解決模型特定的 Python 依賴性問題?¶
您可以在建立 mar 檔案時,使用“–requirements-file/ -r”標記來提供一個 requirements.txt
檔案。此外,您可以使用“–extra-files”標記來新增依賴檔案。詳情請參考設定。
我可以在 Kubernetes 中部署 Torchserve 嗎?¶
可以,您可以使用 Helm charts 在 Kubernetes 中部署 Torchserve。詳情請參考 Kubernetes 部署。
我可以將 Torchserve 與 AWS ELB 和 AWS ASG 一起部署嗎?¶
可以,您可以將 Torchserve 部署在多節點 ASG AWS EC2 叢集上。有一個雲端組態範本可用於這種部署,這裡。詳情請參考 Elastic LoadBalancer (ELB) 後面的多節點 EC2 部署。
我該如何備份和還原 Torchserve 狀態?¶
TorchServe 會跨會話保留伺服器執行時組態,以便遇到計劃內或計劃外服務停止的 TorchServe 實例可以在重新啟動時還原其狀態。這些已儲存的執行時組態檔案可用於備份和還原。詳情請參考TorchServe 模型快照。
我該如何從原始碼建置 Torchserve 映像檔?¶
Torchserve 有一個 script 工具,用於建立 docker 映像檔,docker 映像檔可以是基於硬體的 CPU 或 GPU 相容的。 Torchserve docker 映像檔也可以是 CUDA 版本特定的。
所有這些 docker 映像檔都可以使用具有適當選項的 build_image.sh
來建立。
執行 ./build_image.sh --help
以取得所有可用選項。
詳情請參考 從原始碼建立 Torchserve docker 映像檔。
如何為特定分支或提交 ID 建置 Torchserve 映像檔?¶
要為特定分支建立 Docker 映像檔,請使用以下指令
./build_image.sh -b <branch_name>/<commit_id>
要為特定分支和特定標籤建立 Docker 映像檔,請使用以下指令
./build_image.sh -b <branch_name> -t <tagname:latest>
使用 Dockerfile 建立的映像檔和使用 Dockerfile.dev 建立的映像檔有什麼區別?¶
使用 Dockerfile.dev 建立的映像檔是從原始碼安裝 Torchserve,而使用 Dockerfile 建立的映像檔是從 PyPi 發行版安裝 Torchserve。
config.property 路徑的順序是什麼?¶
TorchServe 按照文件中列出的順序尋找 config.property 檔案。 沒有覆蓋機制。
model_store、load_models、models 是什麼?¶
model_store:TorchServe 啟動期間的必要參數。 它可以在 config.property 中定義,也可以被 TorchServe 命令列選項“–model-store”覆蓋。
load_models:TorchServe 啟動期間的可選參數。 它可以在 config.property 中定義,也可以被 TorchServe 命令列選項“–models”覆蓋。
models:在 config.property 中定義模型的組態列表。 模型的組態可以被 management API 覆蓋。 它不決定哪些模型將在 TorchServe 啟動期間載入。 “models”和“load_models”(即 TorchServe 命令列選項 –models)之間沒有關係。
¶
API¶
相關文件
除了 *curl* 之外,我還可以使用什麼來向 Torchserve 發出請求?¶
您可以使用任何工具,例如 Postman、Insomnia,甚至可以使用 python 腳本來執行此操作。 在這裡找到範例 python 腳本。
我如何在現有的框架中新增自定義 API?¶
您可以使用 Torchserve 中提供的 plugins SDK 新增自定義 API。 詳情請參考 serving sdk 和 plugins。
我如何在推論請求呼叫中將多個圖像傳遞到我的模型?¶
您可以將多個數據作為鍵值對在 data
物件中,在單個推論請求中提供給您的自定義處理程式。 詳情請參考 此問題。
處理程式¶
相關文件
我如何為模型傳回圖像輸出?¶
您必須編寫一個自定義處理程式並修改後處理以傳回圖像。詳情請參考自定義服務文件。
如何增強預設處理程式?¶
撰寫一個自定義處理器,該處理器擴展了預設處理器,並且僅覆蓋要調整的方法。 更多詳細資訊請參考自定義服務文檔。
我是否總是需要編寫自定義處理器,還是有預設的處理器可以使用?¶
是的,您可以使用內建的預設處理器,以無程式碼/零程式碼的方式部署您的模型。 更多詳細資訊請參考預設處理器。
是否可以部署 Hugging Face 模型?¶
是的,您可以使用自定義處理器來部署 Hugging Face 模型。 例如,請參考HuggingFace_Transformers。
Model-archiver¶
相關文件
什麼是 mar 檔案?¶
mar 檔案是一個 zip 檔案,包含所有模型artifacts,副檔名為“.mar”。 指令行工具 torch-model-archiver
用於建立 mar 檔案。
如何使用 Torchserve Docker 容器建立 mar 檔案?¶
是的,您可以使用 Torchserve 容器建立您的 mar 檔案。 請依照這裡給出的步驟。
我可以在單個 mar 檔案中新增多個序列化檔案嗎?¶
目前 torch-model-archiver
只允許在使用 --serialized-file
參數建立 mar 檔案時提供一個序列化檔案。 但是,您可以使用 --extra-files
標記提供任意數量和任意類型的檔案。 mar 檔案中提供的所有檔案都可以在 model_dir
位置中找到,該位置可以透過提供給處理器入口點的 context 物件來訪問。
範例程式碼片段
properties = context.system_properties
model_dir = properties.get("model_dir")
更多詳細資訊請參考Torch model archiver cli。 相關問題:[#633]
我可以使用 s3 預簽署 v4 URL 下載和註冊模型嗎?¶
您可以使用 s3 v2 和 v4 簽名 URL。 注意:對於 v4 類型,請將模型 URL 中的 &
字元替換為 curl 命令中的 URL 編碼字元,即 %26
。
相關問題:[#669]
我可以在 s3 上託管模型嗎?¶
mar 檔案可以在本地使用,也可以透過 http 公開使用。 以 s3:// 開頭的 S3 URI 將不起作用,但同一個檔案可以公開並在 s3 console 或 aws cli 中提供,以取得以 https:// 開頭的公共物件 URL。
如何在 SageMaker 上設定模型的批次大小? 用於 TorchServe 效能調整的關鍵參數。¶
為什麼我的模型初始化這麼慢?¶
模型初始化速度慢的原因有很多
torch.load()
的開銷 - 我們無法改進,對於較大的模型來說,這將更為顯著CUDA 環境啟動開銷 - 我們無法控制
install_py_dep_per_model=true 適用於本地開發或 sagemaker 部署,在其他生產環境中,您應該預先安裝您的依賴項
模型歸檔器在壓縮和解壓縮模型時存在開銷,預設情況下會啟用壓縮,因為從歷史上看,torchserve 是從 sagemaker 的需求中產生的,sagemaker 涉及到加載和卸載大量儲存在雲端儲存桶中的模型。 但對於部署規模較小的用戶來說,選擇
torch-model-archiver --no-archive
是一個不錯的選擇