瞭解 NVIDIA GPU 上 TorchServe 的 AI 語音產生推論

您可以使用 NVIDIA GPU 上的 TorchServe,設計要在 Oracle Cloud Infrastructure Kubernetes Engine 上執行的文字轉語音服務。此技術也可套用至其他推論工作負載,例如影像分類、物件偵測、自然語言處理和建議系統。

推論伺服器是專門的系統,可代管受過訓練的機器學習模型,並使用 API 提供其預測 (推論)。它處理調整、分批和監控的關鍵生產挑戰:將靜態模型轉換為可靠、高效能的 Web 服務。

TorchServe 是 PyTorch 的官方模型服務架構。

其工作是採用受過訓練的 .mar 檔案 (封裝的模型檔案),然後從 RESTful API 或 gRPC 端點取得該檔案。您不必編寫自訂 Web 伺服器和邏輯,而是將模型封裝並交給 TorchServe。立即為您提供:

  • 擴展性:自動管理工作者處理大量流量。
  • 低延遲效能:使用多模型批次處理等進階功能,將要求分組以有效率地處理。
  • 模型管理:可讓您在不停機的情況下註冊、啟動模型版本及倒回模型。
  • 內建監控:追蹤立即可用的推論延遲和每秒要求等指標。

基本上,TorchServe 會橋接 PyTorch 實驗與生產部署之間的差距,將您的強大模型以最少的心力轉換成強大的預測服務。這是將 PyTorch 從研究實驗室帶到現實世界的重要工具。

附註:

TorchServe 目前處於有限的維護模式。雖然部分現有客戶仍可免費使用,但對於特定使用案例或測試便利性,我們建議評估其長期適合生產部署。請檢閱 PyTorch TorchServe 官方文件 (網址為 https://docs.pytorch.org/serve/),瞭解最新狀態和考量事項。

這些是市場上部分推論伺服器:

伺服器 開發人員 主要功能 最適合 架構支援
NVIDIA Triton NVIDIA
  • 多重架構支援 (PyTorch、TensorFlow、ONNX 等)
  • 動態批次處理,模型併行執行
  • 針對 GPU 最佳化 (TensorRT)
高效能的多模型部署 PyTorch、TF、ONNX、TensorRT
TorchServe PyTorch (先前為 Meta)
  • 原生 PyTorch 整合
  • 簡單 Python API
  • 基本動態批次處理
PyTorch 導向的部署 僅 PyTorch
TensorFlow 服務 Google
  • 已針對 TensorFlow 模型最佳化
  • 支援模型版本控制
TensorFlow 生態系統 TensorFlow

架構

此架構顯示 AI 語音產生推論部署的範例。



完美的 -oke-arch-oracle.zip

經過訓練和自訂的語音模型,從基礎 Hugging Face 模型微調,部署在 TorchServe 上進行推論。TorchServe 可作為服務層,有效代管模型及管理內送使用者要求。

當使用者傳送文字輸入時,TorchServe 會處理要求、呼叫模型,並將輸出轉譯為高品質的合成語音。

對於文字轉語音區隔,每個文件可包含多個區塊,而每個區塊則是由區隔所組成。舉例而言:

Document  (chapter)
 └── Block (paragraph)
      └── Segment (sentence)

此架構支援下列元件:

  • OCI 地區

    OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。

  • OCI 虛擬雲端網路與子網路

    虛擬雲端網路 (VCN) 是您在 OCI 區域中設定的可自訂軟體定義網路。與傳統資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的無類別網域間路由 (CIDR) 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 分隔到子網路中,而子網路的作用領域可以調整到某個區域或可用性網域。每個子網路都是由連續的位址範圍所組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用網路。

  • OCI 登錄

    Oracle Cloud Infrastructure Registry 是 Oracle 管理的服務,可讓您簡化從開發到生產的工作流程。登錄可讓您輕鬆儲存、共用及管理開發使用者自建物件,例如 Docker 映像檔。

  • OCI Object Storage

    OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從應用程式或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生任何效能或服務可靠性的降低情況。

    針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。

  • OCI 檔案儲存

    Oracle Cloud Infrastructure File Storage 提供持久、可擴展、安全的企業級網路檔案系統。您可以從 VCN 中的任何裸機、虛擬機器或容器執行處理連線至 OCI 檔案儲存。您也可以使用 Oracle Cloud Infrastructure FastConnect 和 IPSec VPN,從 VCN 外部存取 OCI File Storage

  • OCI 區塊磁碟區

    您可以使用 Oracle Cloud Infrastructure Block Volumes 建立、連附、連線及移動儲存磁碟區,以及變更磁碟區效能以符合您的儲存、效能和應用程式需求。將磁碟區連附並連線至執行處理之後,就可以像使用一般硬碟一樣使用磁碟區。您也可以中斷磁碟區連線並將其連附至另一個執行處理,而不會遺失資料。

  • 負載平衡器

    Oracle Cloud Infrastructure Load Balancing 提供從單一進入點到多部伺服器的自動化流量分配功能。

  • OCI Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes EngineOKE) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,然後確定在現有租用戶的 OCI 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,而不會周遊網際網路。

  • 網際網路閘道

    網際網路閘道允許 VCN 中公用子網路與公用網際網路之間的流量。

  • OCI 記錄日誌
    Oracle Cloud Infrastructure Logging 是可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
    • 稽核日誌:與 OCI Audit 產生之事件相關的日誌。
    • 服務日誌:由個別服務 (例如 OCI API GatewayOCI EventsOCI FunctionsOCI Load BalancingOCI Object Storage 和 VCN 流量日誌) 發布的日誌。
    • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
  • OCI 監控

    Oracle Cloud Infrastructure Monitoring 主動並被動監控您的雲端資源,並使用警訊在指標符合指定的觸發器時通知您。

  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則會指定誰可以存取哪些資源,以及存取方式。會在群組和區間層級授予存取權,這表示您可以撰寫一個原則,讓群組在特定區間或租用戶內擁有特定類型的存取權。

  • OCI 保存庫

    Oracle Cloud Infrastructure Vault 可讓您建立並集中管理加密金鑰,這些加密金鑰可保護您的資料,以及用來保護雲端資源存取的安全機密證明資料。預設金鑰管理是 Oracle 管理的金鑰。您也可以使用使用使用 OCI Vault 的客戶管理金鑰。OCI Vault 提供一組豐富的 REST API 來管理保存庫和金鑰。

  • Hugging Face

    Hugging Face 是一個適用於機器學習的協作平台和中心,為 AI 應用程式提供預先訓練的 AI 模型、開發工具和託管基礎架構,讓全球開發人員能夠使用先進的機器學習。

關於解決方案設計工作流程

此語音產生解決方案實作下列設計工作流程。

  1. 使用者起始專案轉換。
  2. 應用程式會為專案中的每個轉換任務新增訊息至 RabbitMQ 佇列。
  3. 每個職工都會從佇列擷取訊息。
  4. 工作程式會處理訊息並傳送要求至 TorchServe。
  5. TorchServe 會執行推論並將結果傳回給工作者。
  6. 工作程式會處理結果,並將訊息放回佇列。
  7. 應用程式會從佇列擷取結果訊息,並將其儲存在資料庫中。
  8. 使用者會收到 UI 中結果的通知。

附註:

對於輕量型模型,工作者會將推論要求傳送至 CPU 節點。