取得推論新手指南

這份新手指南將介紹如何使用 Vertex AI 的自訂模型取得推論結果。

學習目標

Vertex AI 經驗程度:初學者

預計閱讀時間:15 分鐘

學習內容

  • 使用代管推論服務的好處。
  • 瞭解 Vertex AI 中的批次推論運作方式。
  • Vertex AI 線上推論的運作方式。

為什麼要使用代管推論服務?

假設您負責建立模型,該模型會以植物圖片做為輸入內容,並預測植物品種。您可能會先在筆記本中訓練模型,嘗試不同的超參數和架構。訓練好模型後,您可以在自選的 ML 框架中呼叫 predict 方法,測試模型品質。

這個工作流程很適合用於實驗,但如果您想使用模型來推論大量資料,或即時取得低延遲推論結果,就必須使用筆記本以外的工具。舉例來說,假設您想測量特定生態系統的生物多樣性,但不想讓人類在野外手動辨識和計算植物物種,而是想使用這個 ML 模型分類大量圖片。如果使用筆記型電腦,可能會遇到記憶體限制。此外,為所有資料取得推論結果可能需要長時間執行作業,因此筆記本可能會逾時。

或者,如果想在應用程式中使用這個模型,讓使用者上傳植物圖片並立即辨識,您需要將模型代管在筆記本以外的位置,供應用程式呼叫以進行推論。此外,您不太可能持續有流量傳送至模型,因此需要可在必要時自動調整規模的服務。

在上述所有情況下,代管推論服務都能減少託管及使用機器學習模型的阻礙。本指南簡介如何使用 Vertex AI 上的機器學習模型進行推論。請注意,還有其他自訂項目、功能和服務介面,本文未一一列出。本指南旨在提供概略說明。 詳情請參閱 Vertex AI 推論說明文件

代管推論服務總覽

Vertex AI 支援批次和線上推論。

批次推論為非同步要求。如果您不需要立即取得回覆,並想透過單一要求處理累積的資料,就適合使用這類工作。在簡介中討論的範例中,這會是生物多樣性特徵化用途。

如要從傳遞至模型的資料即時取得低延遲推論結果,可以使用線上推論。在簡介中討論的範例中,這就是您想在應用程式中嵌入模型的使用案例,協助使用者立即辨識植物品種。

將模型上傳至 Vertex AI Model Registry

如要使用推論服務,第一步是將訓練好的機器學習模型上傳至 Vertex AI Model Registry。您可以在這個登錄檔中管理模型的生命週期。

建立模型資源

使用 Vertex AI 自訂訓練服務訓練模型時,訓練工作完成後,模型會自動匯入登錄檔。如果您略過該步驟,或在 Vertex AI 以外的地方訓練模型,可以透過 Google Cloud 控制台或 Python 適用的 Vertex AI SDK 手動上傳模型,方法是指定儲存模型構件的 Cloud Storage 位置。這些模型構件的格式可能是 savedmodel.pbmodel.joblib 等,取決於您使用的機器學習架構。

將構件上傳至 Vertex AI Model Registry 會建立 Model 資源,該資源會顯示在 Google Cloud 控制台中:

模型資源

選取容器

將模型匯入 Vertex AI Model Registry 時,您需要將模型與容器建立關聯,Vertex AI 才能提供推論要求。

預先建構的容器

Vertex AI 提供預建容器,可用於推論。預先建構的容器會依機器學習架構和架構版本分類,並提供 HTTP 推論伺服器,方便您以最少的設定提供推論服務。這些模型只會執行機器學習架構的推論作業,因此如要預先處理資料,必須在提出推論要求前完成。同樣地,任何後續處理作業都必須在您執行推論要求後進行。如需使用預建容器的範例,請參閱 在 Vertex AI 上使用預建容器提供 PyTorch 圖片模型的筆記本。

自訂容器

如果您的用途需要預先建構容器未納入的程式庫,或是您有想在推論要求中執行的自訂資料轉換,可以使用您建構並推送至 Artifact Registry 的自訂容器。自訂容器可提供更完善的自訂功能,但容器必須執行 HTTP 伺服器。具體來說,容器必須監聽並回應即時檢查、健康狀態檢查和推論要求。在大部分情況下,建議使用預先建構的容器,因為這樣比較簡單。如需使用自訂容器的範例,請參閱筆記本「PyTorch Image Classification Single GPU using Vertex Training with Custom Container」。

自訂推論處理常式

如果您的用例確實需要自訂前置和後置處理轉換,且您不想負擔建構及維護自訂容器的成本,可以使用自訂推論常式。透過自訂推論常式,您可以將資料轉換作業以 Python 程式碼的形式提供,而 Vertex AI SDK for Python 會在幕後建構自訂容器,供您在本機測試及部署至 Vertex AI。如需使用自訂推論常式的範例,請參閱筆記本「Custom inference routines with Sklearn」(使用 Sklearn 的自訂推論常式)。

取得批次推論結果

模型匯入 Vertex AI Model Registry 後,即可透過 Google Cloud 控制台或 Vertex AI SDK for Python 提交批次推論工作。您將指定來源資料的位置,以及要將結果儲存到 Cloud Storage 或 BigQuery 的位置。您也可以指定要執行這項工作的機器類型,以及任何選用的加速器。由於推論服務是全代管服務,Vertex AI 會自動佈建運算資源、執行推論工作,並在推論工作完成後刪除運算資源。您可以在 Google Cloud 控制台中追蹤批次推論工作的狀態。

批次推論狀態

取得線上推論結果

如要取得線上推論結果,您必須採取額外步驟,將模型部署Vertex AI 端點。這項操作會將模型構件與實體資源建立關聯,以提供低延遲服務,並建立 DeployedModel 資源。

線上推論

模型部署至端點後,就會像其他 REST 端點一樣接受要求,也就是說,您可以從 Cloud Run 函式、聊天機器人、網頁應用程式等呼叫模型。請注意,您可以將多個模型部署至單一端點,並在這些模型之間分配流量。舉例來說,如果您想推出新版模型,但不想立即將所有流量導向新模型,這項功能就非常實用。您也可以將同一個模型部署至多個端點。

在 Vertex AI 中從自訂模型取得推論的資源

如要進一步瞭解如何在 Vertex AI 上代管及提供模型服務,請參閱下列資源或 Vertex AI Samples GitHub 存放區