什麼是批次推論?

機器學習模型訓練完成後,下一步就是使用模型對新資料進行預測。這個程序稱為推論,需要根據應用程式的延遲時間和處理量需求,制定合適的策略。批次推論又稱離線推論或非同步處理,是一種強大且高效率的方法,適用於處理大量資料並生成預測,且不需要立即的即時回覆。

批次推論的定義

批次推論是指使用經過訓練的機器學習模型,一次對大量觀測資料 (或「批次」) 生成預測結果。

線上推論會在單一資料點送達時進行預測,批次推論則會處理一段時間內收集的資料。這種做法以高處理量和運算效率為優先,而非低延遲。由於處理作業是在離線狀態下完成,並非直接回應使用者要求,因此也稱為靜態推論,也就是生成預測結果並儲存,以供日後使用。

批次推論的主要特性

  • 非同步處理:預測結果會按照預先定義的排程 (例如每小時、每天) 或依需求產生,而不是在新資料傳入時即時生成
  • 高處理量:系統經過最佳化調整,可在單次執行中處理大量資料點,因此效率極高
  • 成本效益:排定執行時間,在運算資源最充裕或最便宜時使用,大幅降低營運成本
  • 延遲容忍度:主要假設是,使用預測結果的應用程式不需要立即取得答案,可接受在資料收集和預測生成之間延遲數分鐘或數小時

批次推論與線上推論的比較

在設計機器學習系統時,選擇批次推論或線上推論是基本的架構決策。每種做法都有不同用途,並針對不同的效能特性進行最佳化。

功能

批次推論

線上推論

資料處理

在單一工作同時處理大量資料點。

在資料點抵達時,處理單一資料點或極小的資料點群組。

主要最佳化

高處理量,具成本效益。

低延遲和即時回應。

延遲時間

延遲時間長,無法立即取得預測結果 (需數分鐘至數小時)。

延遲時間極短,預測結果會在幾毫秒內傳回。

叫用

依排程 (例如 Cron 工作) 或隨選觸發。

由使用者直接要求或系統事件觸發。

運算使用率

可在短時間內使用強大的運算資源,然後縮減至零。

需要伺服器或端點持續運作,隨時準備好接受要求。

用途範例

每天為電子商務網站的所有使用者生成產品推薦內容。

在單筆信用卡交易發生時,預測是否為詐欺交易。

同義詞

離線推論、非同步處理、靜態推論。

即時推論、同步處理、動態推論。

批次推論如何運作?

批次推論管道是結構化的自動化工作流程,可將原始資料轉為可做為行動依據的預測結果。這個程序可分為以下幾個主要步驟,通常由工作流程管理員或排程系統負責調度。

步驟 1:資料收集及儲存

首先,您要隨著時間累積資料。這些輸入資料可能包含使用者活動記錄、交易記錄或感應器讀數,是從各種來源收集而來,並集中儲存。這通常是在 Google Cloud Storage 等服務建構的資料湖泊,或是 BigQuery 等資料倉儲。

步驟 2:觸發批次工作

推論管道由觸發條件啟動。這類觸發條件包括:

  • 時間導向:排程器 (例如 Cron 工作) 會以固定間隔啟動工作,例如每天凌晨 1 點。
  • 事件導向:工作會因應特定事件啟動,例如 Cloud Storage bucket 中有新的資料檔案送達

步驟 3:預先處理資料

觸發工作後,會載入整批原始輸入資料。接著,執行必要的預先處理和特徵工程步驟,將資料轉換為機器學習模型預期的精確格式。包括清理遺漏值、縮放數值特徵,以及編碼類別變數等工作。

步驟 4:生成預測結果

系統會從中央存放區 (例如 Model Registry) 擷取經過訓練的機器學習模型。接著,系統會將預先處理的批次資料提供給模型,模型會對資料集中的每項觀測結果執行推論,生成對應的預測結果。

步驟 5:儲存結果

接著,模型輸出內容 (預測結果集合) 會寫入儲存系統。目的地是根據預測結果的用途來選擇。常見的目的地包括將結果載入 BigQuery 資料表進行分析、載入 Cloud SQL 資料庫供應用程式快速查詢,或是儲存為 Cloud Storage 中的檔案。

步驟 6:使用預測結果

預測結果已儲存並準備就緒,下游系統可以開始使用。商業智慧工具可能會查詢結果,建立預測顧客行為的資訊主頁。例如,網頁應用程式的後端可能會載入預先計算的產品推薦,向使用者顯示;行銷自動化平台可能會提取預測會流失的客戶名單,鎖定這些客戶推出新廣告活動。

批次推論的優點

在許多企業用途中,批次推論比即時處理更具優勢。

具成本效益

批次處理可讓您充分運用運算資源。您可以在短時間內,於強大的硬體上執行大型工作,然後關閉資源,避免持續運作伺服器的維護成本。

高處理量和擴充性

批次系統的設計宗旨是擴充及有效處理數 TB 資料。因此,您可以將複雜模型套用至非常龐大的資料集,這類作業在線上系統中可能過慢或成本過高。

操作簡單

相較於高可用性、低延遲的線上推論系統,批次推論管道的建構和維護作業較簡單。這類工作通常較能承受暫時性失敗,且工作失敗時可輕鬆重新執行。

可執行複雜的特徵工程

由於批次推論不受低延遲需求限制,因此您可以對輸入資料執行更複雜且需要大量運算的特徵工程,通常能打造出更準確的模型。

更有效率地運用資源

您可以排定在離峰時段執行批次工作,充分利用閒置的運算資源,並可能享有較低的虛擬機器 Spot 價格。

批次推論的應用實例

許多核心業務程序都偏好採用批次推論,因為這類程序不需要即時生成預測,而是透過預測來強化產品或服務。這種做法在各行各業都非常有效,能解決大規模資料問題。

產業別

待解決的問題

解決方案範例

電子商務和零售業


每天為整個使用者族群生成個人化產品推薦內容,確保使用者造訪網站時能快速檢索。

Agent Platform 批次預測可執行推薦模型,並將結果載入 Cloud SQL 或 Bigtable 等快速查詢資料庫。

電信和 SaaS

透過分析整個客戶資料庫的使用模式,找出下個月流失風險較高的客戶。

BigQuery ML (BigQuery 機器學習) 可讓您直接在資料倉儲中儲存的客戶資料上執行分類模型,並將結果寫入新資料表,供保留團隊使用。

金融保險

預測金融市場趨勢,或計算整個資產投資組合的風險分數,這類工作需要大量運算資源,且會定期執行。

Agent Platform 批次預測可依排程執行複雜的時間序列模型,提供策略報表和資訊主頁所需的資料。

物流與供應鏈

根據每週銷售和物流資料,執行複雜的需求預測模擬,進而調整數百個倉庫的庫存量。

Google Kubernetes Engine (GKE) 提供自訂的高效能環境,可滿足特定程式庫和硬體需求,用來執行專業的模擬模型。

醫療照護業

分析每日大量醫學圖像 (例如 X 光片或 CT 掃描),偵測潛在異常狀況,供放射科醫師稍後檢閱。

GKE 搭配 GPU 加速器,非常適合在大型圖片集上執行深度學習電腦視覺模型,可提供最大程度的控制和效能。

法律和法規遵循

處理數百萬份現有文件並分類,擷取重要實體、評估情緒,讓整個語料庫可供搜尋和分析。

Dataflow 可用於建構可擴充的自然語言處理管道,預先處理文字並執行推論,而 GKE 則可滿足自訂程度更高的模型需求。

如何在 Gemini Enterprise Agent Platform 設定批次推論

Gemini Enterprise Agent Platform 是 Google Cloud 的代管機器學習平台,提供簡化的無伺服器批次推論方法。這個程序著重於設定工作,並讓平台處理基礎架構。

準備資產。

開始前,請先準備好以下三個必要項目:

  • 訓練好的模型,應上傳至 Model Registry
  • 輸入資料,格式必須符合模型要求。這類資料應位於 Google Cloud Storage (例如 JSON 或 CSV 檔案) 或 BigQuery 資料表
  • 輸出內容的目的地位置,同樣是 Cloud Storage bucket 或 BigQuery 資料表

建立批次預測工作。

您可以透過 Google Cloud 控制台、gcloud 指令列工具或使用 Agent Platform SDK 以程式輔助方式啟動工作。建立工作時,請提供下列設定:

  • 您想使用的 Model Registry 特定模型
  • 輸入資料的路徑和輸出結果的位置
  • 您要用於工作的機型和加速器 (例如 GPU),可讓您在成本和效能之間取得平衡

執行並監控工作。

提交工作後,Agent Platform 會接手處理。系統會自動佈建您指定的運算資源,透過模型執行輸入資料、生成預測結果,並將結果儲存至您指定的輸出位置。工作完成後,Agent Platform 會自動將所有資源縮減為零,因此您只需根據實際使用的運算時間付費。您可以直接在 Google Cloud 控制台監控工作進度及查看記錄。

存取及使用預測結果。

工作狀態顯示為「成功」後,預測結果就準備就緒了。現在,下游應用程式、分析工具或商業智慧 (BI) 資訊主頁都能存取 Cloud Storage 中的輸出檔案,或 BigQuery 中的新資料表。

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。

如何在 GKE 設定批次推論

使用 Google Kubernetes Engine (GKE) 進行批次推論,可享有最高的控管權和可攜性,因此非常適合具備 Kubernetes 專業知識或有特殊需求的團隊。設定程序包括將推論邏輯容器化,並使用 Kubernetes 資源管理執行作業。

步驟 1:將推論應用程式容器化。首先,請將預測程式碼封裝成容器映像檔。

  • 編寫指令碼 (例如使用 Python),載入已訓練的模型、從來源讀取資料、執行推論,並將結果寫入目的地
  • 建立 Dockerfile,這個檔案會定義建構容器的步驟,包括指定基本映像檔、安裝依附元件 (例如 tensorflow 或 pandas),以及將模型檔案和推論指令碼複製到映像檔中
  • 建構映像檔並推送至容器註冊資料庫,例如 Artifact Registry

步驟 2:定義 Kubernetes 工作。您可以使用 Kubernetes Job 或 CronJob 資訊清單 (YAML 檔案) 定義批次工作,而不是長時間執行的 Deployment。這個檔案指定:

  • 要使用的 Artifact Registry 容器映像檔
  • 所需的運算資源 (CPU、記憶體、GPU)
  • 任何必要的設定,例如檔案路徑的環境變數或資料庫憑證的 Secret

步驟 3:在 GKE 叢集上執行工作。您可以使用 kubectl 將資訊清單套用至 GKE 叢集。接著,GKE 控制層會排定 Pod 在叢集中的合適節點上執行推論容器。對於週期性工作,CronJob 資源會根據預先定義的排程自動建立新工作 (例如:0 2 * * * 代表每天凌晨 2 點)。

步驟 4:實作資料處理作業並儲存結果。與代管的 Agent Platform 做法不同,容器內的應用程式程式碼負責處理所有資料 I/O。指令碼必須包含連線至資料來源 (例如 Cloud Storage bucket) 並從中讀取資料的邏輯,以及將最終預測結果寫回所選目的地 (例如 Cloud SQL 資料庫) 的邏輯。

其他資源

後續行動

運用價值 $300 美元的免費抵免額和 20 多項一律免費的產品,開始在 Google Cloud 建構產品與服務。