快捷方式

⚠️ 注意:維護有限

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

常見問題解答

本文件目錄。

通用

相關文件。

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 請求。

相關問題:[581,569]

是否有可用的示例模型?

Torchserve 內建了各種模型。請檢視 Torchserve 模型庫 獲取所有可用模型列表。您還可以檢視 examples 資料夾。

除了 Python,Torchserve 是否支援其他程式語言的模型?

目前只支援基於 Python 的模型。

Torchserve 相對於 AWS Multi-Model-Server 有哪些優勢?

Torchserve 源自 Multi-Model-Server。但是,Torchserve 專為 PyTorch 模型進行了最佳化。它還包含 Snapshot 和模型版本控制等新功能。

如何在客戶端解碼推理響應中的國際語言?

預設情況下,如果推理響應是字串,Torchserve 使用 utf-8 進行編碼。因此客戶端可以使用 utf-8 進行解碼。

如果模型將國際語言字串轉換為位元組,客戶端需要使用模型指定的編解碼機制,例如 https://github.com/pytorch/serve/blob/master/examples/nmt_transformer/model_handler_generalized.py 中的機制

效能

相關文件。

如何提高 TorchServe 在 CPU 上的效能?

CPU 效能很大程度上受啟動器核心繫結的影響。我們建議在您的 config.properties 檔案中設定以下屬性

cpu_launcher_enable=true
cpu_launcher_args=--use_logical_core

有關提高 CPU 效能的更多背景資訊可在 此部落格文章 中找到。

部署與配置

相關文件。

我可以在預設的 8080 和 8081 埠以外的埠上執行 Torchserve API 嗎?

是的,Torchserve API 埠可以透過 properties 檔案或環境變數進行配置。有關更多詳情,請參考 配置

如何解決模型特定的 Python 依賴項?

您可以在使用 “–requirements-file/ -r” 標誌建立 mar 檔案時提供一個 requirements.txt 檔案。此外,您可以使用 “–extra-files” 標誌新增依賴檔案。有關更多詳情,請參考 配置

我可以將 Torchserve 部署在 Kubernetes 中嗎?

是的,您可以使用 Helm charts 將 Torchserve 部署在 Kubernetes 中。有關更多詳情,請參考 Kubernetes 部署

我可以將 Torchserve 與 AWS ELB 和 AWS ASG 一起部署嗎?

是的,您可以將 Torchserve 部署在多節點 ASG AWS EC2 叢集上。此處 提供了一個用於此類部署的 CloudFormation 模板。有關更多詳情,請參考 Elastic LoadBalancer (ELB) 後面的多節點 EC2 部署

如何備份和恢復 Torchserve 狀態?

TorchServe 會在會話之間保留伺服器執行時配置,以便遇到計劃內或計劃外服務停止的 TorchServe 例項能夠在重啟時恢復其狀態。這些儲存的執行時配置檔案可用於備份和恢復。有關更多詳情,請參考 TorchServe 模型快照

如何從原始碼構建 Torchserve 映象?

Torchserve 有一個用於建立 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 中定義模型配置列表。模型的配置可以被 管理 API 覆蓋。它不決定 TorchServe 啟動時載入哪些模型。“models” 和 “load_models”(即 TorchServe 命令列選項 –models)之間沒有直接關係。

API

相關文件

除了 curl,我還可以使用什麼工具向 Torchserve 傳送請求?

您可以使用 Postman、Insomnia 等任何工具,甚至使用 Python 指令碼來實現。在此處找到示例 Python 指令碼:here

如何向現有框架新增自定義 API?

您可以使用 Torchserve 中提供的 外掛 SDK 新增自定義 API。有關更多詳情,請參考 serving sdkplugins

如何在推理請求呼叫中向模型傳遞多張圖片?

您可以在單個推理請求中以 data 物件中的鍵值對形式向自定義處理程式提供多個數據。有關更多詳情,請參考 此問題

處理程式

相關文件

如何返回模型的影像輸出?

您需要編寫一個自定義處理程式並修改後處理以返回影像。有關更多詳情,請參考 自定義服務文件

如何增強預設處理程式?

編寫一個繼承自預設處理程式的自定義處理程式,並只覆蓋需要調整的方法。有關更多詳情,請參考 自定義服務文件

我總是需要編寫自定義處理程式,還是可以使用預設的處理程式?

是的,您可以使用內建的預設處理程式,透過零程式碼部署您的模型。有關更多詳情,請參考 預設處理程式

是否可以部署 Hugging Face 模型?

是的,您可以使用自定義處理程式部署 Hugging Face 模型。例如,請參考 HuggingFace_Transformers

模型打包器

相關文件

什麼是 mar 檔案?

mar 檔案是一個包含所有模型工件且副檔名為 “.mar” 的 zip 檔案。命令列工具 torch-model-archiver 用於建立 mar 檔案。

如何使用 Torchserve docker 容器建立 mar 檔案?

是的,您可以使用 Torchserve 容器建立您的 mar 檔案。請按照此處 給出的步驟進行操作。

我可以在一個 mar 檔案中新增多個序列化檔案嗎?

當前,torch-model-archiver 在建立 mar 檔案時只允許使用 --serialized-file 引數提供一個序列化檔案。但是,您可以使用 --extra-files 標誌提供任意數量和任意型別的檔案。mar 檔案中提供的所有檔案都位於 model_dir 位置,可以透過提供給處理程式入口點的上下文物件進行訪問。

程式碼片段示例

properties = context.system_properties
model_dir = properties.get("model_dir")

有關更多詳情,請參考 Torch 模型打包器 CLI。相關問題:[#633]

我可以使用 s3 預簽名 v4 URL 下載和註冊模型嗎?

您可以使用 s3 v2 和 v4 簽名 URL。注意:對於 v4 型別,請在 curl 命令中將模型 URL 中的 & 字元替換為其 URL 編碼字元,即 %26

相關問題:[#669]

我可以在 s3 上託管模型嗎?

mar 檔案可以在本地使用,也可以透過 http 公開訪問。以 s3:// 開頭的 S3 URI 不起作用,但同一個檔案可以設定為公開,並在 s3 控制檯或 aws cli 中獲取以 https:// 開頭的公開物件 URL。

如何在 SageMaker 上設定模型的批次大小?TorchServe 效能調優的關鍵引數。

TorchServe 效能調優示例

為什麼我的模型初始化如此緩慢?

模型初始化緩慢有幾個原因

  1. torch.load() 開銷 - 這是我們無法改進的,對於大型模型來說會更顯著

  2. CUDA 上下文啟動開銷 - 這是我們無法控制的

  3. install_py_dep_per_model=true 用於本地開發或 sagemaker 部署,在其他生產環境中,您應該預先安裝依賴項

  4. 模型打包器在壓縮和解壓縮模型時存在開銷,預設啟用壓縮是因為 Torchserve 歷史上源於 sagemaker 的需求,涉及載入和解除安裝儲存在雲端儲存桶中的大量模型。但對於部署規模較小的使用者,選擇 torch-model-archiver --no-archive 是個不錯的選擇

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

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

檢視教程

資源

查詢開發資源並獲得解答

檢視資源