機器學習模型訓練完成後,下一步就是使用模型對新資料進行預測。這個程序稱為推論,需要根據應用程式的延遲時間和處理量需求,制定合適的策略。批次推論又稱離線推論或非同步處理,是一種強大且高效率的方法,可在不需要立即即時回應的情況下,針對大量資料生成預測。
批次推論是指使用經過訓練的機器學習模型,一次對大量觀測資料 (或「批次」) 生成預測結果。
線上推論會在單一資料點抵達時進行預測,而批次推論則會對一段時間內收集的資料進行預測。這種做法優先考量高處理量和運算效率,而非低延遲時間。由於處理作業是在離線狀態下完成,而非直接回應使用者要求,因此也稱為靜態推論,也就是生成預測並儲存以供日後使用。
在設計機器學習系統時,選擇批次或線上推論是基本的架構決策。每種做法都有不同用途,並針對不同的效能特性進行最佳化。
功能 | 批次推論 | 線上推論 |
資料處理 | 在單一工作同時處理大量資料點。 | 在資料點抵達時,處理單一資料點或極小的資料點群組。 |
主要最佳化 | 高處理量,具成本效益。 | 低延遲和即時回應。 |
延遲時間 | 延遲時間長,無法立即取得預測結果 (需數分鐘至數小時)。 | 延遲時間極短,預測結果會在幾毫秒內傳回。 |
叫用 | 依排程 (例如 Cron 工作) 或隨選觸發。 | 由使用者直接要求或系統事件觸發。 |
運算使用率 | 可短時間使用強大的運算資源,然後縮減至零。 | 需要伺服器或端點持續運作,隨時準備好接受要求。 |
用途範例 | 為電子商務網站的所有使用者生成每日產品推薦。 | 在單筆信用卡交易發生時,預測是否為詐欺交易。 |
同義詞 | 離線推論、非同步處理、靜態推論。 | 即時推論、同步處理、動態推論。 |
功能
批次推論
線上推論
資料處理
在單一工作同時處理大量資料點。
在資料點抵達時,處理單一資料點或極小的資料點群組。
主要最佳化
高處理量,具成本效益。
低延遲和即時回應。
延遲時間
延遲時間長,無法立即取得預測結果 (需數分鐘至數小時)。
延遲時間極短,預測結果會在幾毫秒內傳回。
叫用
依排程 (例如 Cron 工作) 或隨選觸發。
由使用者直接要求或系統事件觸發。
運算使用率
可短時間使用強大的運算資源,然後縮減至零。
需要伺服器或端點持續運作,隨時準備好接受要求。
用途範例
為電子商務網站的所有使用者生成每日產品推薦。
在單筆信用卡交易發生時,預測是否為詐欺交易。
同義詞
離線推論、非同步處理、靜態推論。
即時推論、同步處理、動態推論。
批次推論管道是結構化的自動化工作流程,可將原始資料轉為可做為行動依據的預測結果。這個程序可分為以下幾個主要步驟,通常由工作流程管理工具或排程系統協調。
首先,隨著時間累積資料。這類輸入資料可包含使用者活動記錄、交易記錄或感應器讀數,並從各種來源收集,然後儲存在集中位置。這通常是在 Google Cloud Storage 等服務建構的資料湖泊,或是 BigQuery 等資料倉儲。
推論管道由觸發條件啟動。觸發條件可以是:
觸發工作後,會載入整批原始輸入資料。接著,執行必要的預先處理和特徵工程步驟,將資料轉換為機器學習模型預期的精確格式。包括清理遺漏值、縮放數值特徵,以及編碼類別變數等工作。
系統會從中央存放區 (例如 Vertex AI Model Registry) 擷取經過訓練的機器學習模型。接著,模型會接收預先處理的批次資料,對資料集中的每個觀測值執行推論,生成對應的預測結果。
接著,模型的輸出內容 (預測結果集合) 會寫入儲存系統。目的地是根據預測結果的用途而定。常見的目的地包括將結果載入 BigQuery 資料表進行分析、載入 Cloud SQL 資料庫供應用程式快速查詢,或是儲存為 Cloud Storage 中的檔案。
預測結果已儲存並準備就緒,下游系統可以開始使用。商業智慧工具可能會查詢結果,建立預測顧客行為的資訊主頁。例如,網頁應用程式的後端可能會載入預先計算的產品推薦,向使用者顯示;行銷自動化平台可能會提取預測會流失的客戶名單,以新廣告活動鎖定這些客戶。
在許多企業用途中,批次推論比即時處理更具優勢。
具成本效益
批次處理可讓您充分運用運算資源。您可以在短時間內,於強大的硬體上執行大型工作,然後關閉資源,避免持續運作伺服器的維護成本。
高處理量和擴充性
批次系統的設計宗旨是擴充及有效處理數 TB 資料。因此,您可以將複雜模型套用至非常龐大的資料集,這類作業在線上系統中可能過慢或成本過高。
作業輕鬆簡單
相較於高可用性、低延遲的線上推論系統,批次推論管道的建構和維護作業較簡單。這類工作通常較能承受暫時性故障,且工作失敗時可輕鬆重新執行。
可進行複雜的特徵工程
由於批次推論不受低延遲需求限制,因此您可以對輸入資料執行更複雜且運算量大的特徵工程,通常能打造出更準確的模型。
更有效率地運用資源
您可以排定在離峰時段執行批次工作,充分利用閒置的運算資源,並可能享有較低的虛擬機器現貨價格。
許多核心業務程序會使用批次推論,因為這類程序不需要即時生成預測,只要預測能提升產品或服務即可。這種做法在各行各業都能有效解決大規模資料問題。
產業別 | 待解決的問題 | 解決方案範例 |
電子商務和零售業 | 每天為整個使用者族群生成個人化產品推薦內容,確保使用者造訪網站時能快速檢索。 | Vertex AI 批次預測可執行推薦模型,並將結果載入 Cloud SQL 或 Bigtable 等快速查詢資料庫。 |
電信和 SaaS | 分析整個客戶資料庫的使用模式,找出下個月可能流失的高風險客戶。 | BigQuery ML (BigQuery 機器學習) 可讓您直接在資料倉儲中儲存的客戶資料上執行分類模型,並將結果寫入新資料表,供保留團隊使用。 |
金融保險 | 預測金融市場趨勢,或計算整個資產投資組合的風險分數,這類工作需要大量運算資源,且會定期執行。 | Vertex AI 批次預測功能可依排程執行複雜的時間序列模型,提供策略報告和資訊主頁所需的資料。 |
物流與供應鏈 | 根據每週銷售和物流資料,執行複雜的需求預測模擬,最佳化數百個倉庫的庫存量。 | Google Kubernetes Engine (GKE) 提供自訂的高效能環境,可滿足特定程式庫和硬體需求,用來執行專業的模擬模型。 |
醫療照護業 | 分析每日大量醫學圖像 (例如 X 光片或 CT 掃描),偵測潛在異常狀況,供放射科醫師稍後檢閱。 | GKE 搭配 GPU 加速器,非常適合在大型圖片集上執行深度學習電腦視覺模型,可提供最佳控制能力和效能。 |
法律和法規遵循 | 處理數百萬份現有文件並分類,擷取重要實體、評估情緒,讓整個語料庫可供搜尋和分析。 | Dataflow 可用於建構可擴充的自然語言處理管道,預先處理文字並執行推論,而 GKE 則可滿足自訂程度更高的模型需求。 |
產業別
待解決的問題
解決方案範例
電子商務和零售業
每天為整個使用者族群生成個人化產品推薦內容,確保使用者造訪網站時能快速檢索。
Vertex AI 批次預測可執行推薦模型,並將結果載入 Cloud SQL 或 Bigtable 等快速查詢資料庫。
電信和 SaaS
分析整個客戶資料庫的使用模式,找出下個月可能流失的高風險客戶。
BigQuery ML (BigQuery 機器學習) 可讓您直接在資料倉儲中儲存的客戶資料上執行分類模型,並將結果寫入新資料表,供保留團隊使用。
金融保險
預測金融市場趨勢,或計算整個資產投資組合的風險分數,這類工作需要大量運算資源,且會定期執行。
Vertex AI 批次預測功能可依排程執行複雜的時間序列模型,提供策略報告和資訊主頁所需的資料。
物流與供應鏈
根據每週銷售和物流資料,執行複雜的需求預測模擬,最佳化數百個倉庫的庫存量。
Google Kubernetes Engine (GKE) 提供自訂的高效能環境,可滿足特定程式庫和硬體需求,用來執行專業的模擬模型。
醫療照護業
分析每日大量醫學圖像 (例如 X 光片或 CT 掃描),偵測潛在異常狀況,供放射科醫師稍後檢閱。
GKE 搭配 GPU 加速器,非常適合在大型圖片集上執行深度學習電腦視覺模型,可提供最佳控制能力和效能。
法律和法規遵循
處理數百萬份現有文件並分類,擷取重要實體、評估情緒,讓整個語料庫可供搜尋和分析。
Dataflow 可用於建構可擴充的自然語言處理管道,預先處理文字並執行推論,而 GKE 則可滿足自訂程度更高的模型需求。
Vertex AI 是 Google Cloud 的代管機器學習平台,提供簡化的無伺服器批次推論方法。這個程序著重於設定工作,讓平台處理底層基礎架構。
開始前,請先準備好以下三項要件:
您可以使用 Google Cloud 控制台、gcloud 指令列工具或 Vertex AI SDK,以程式輔助方式啟動工作。建立工作時,請提供下列設定:
提交工作後,Vertex AI 會接手處理。系統會自動佈建您指定的運算資源,透過模型執行輸入資料、生成預測結果,並將結果儲存至您指定的輸出位置。工作完成後,Vertex AI 會自動將所有資源縮減為零,因此您只需根據實際使用的運算時間付費。您可以直接在 Google Cloud 控制台中監控工作進度並查看記錄。
工作狀態顯示為「成功」後,預測結果就準備就緒了。現在,下游應用程式、分析工具或商業智慧 (BI) 資訊主頁都能存取 Cloud Storage 中的輸出檔案,或 BigQuery 中的新資料表。
使用 Google Kubernetes Engine (GKE) 進行批次推論,可享有最高的控管權和可攜性,因此非常適合具備 Kubernetes 專業知識或有特殊需求的團隊。設定程序包括將推論邏輯容器化,並使用 Kubernetes 資源管理執行作業。
步驟 1:將推論應用程式容器化。第一步是將預測程式碼封裝至容器映像檔。
步驟 2:定義 Kubernetes 工作。您可以使用 Kubernetes Job 或 CronJob 資訊清單 (YAML 檔案) 定義批次工作,不必執行長時間的部署作業。這個檔案指定:
步驟 3:在 GKE 叢集上執行工作。您可以使用 kubectl 將資訊清單套用至 GKE 叢集。接著,GKE 的控制層會在叢集中的合適節點上排定 Pod,以執行推論容器。對於週期性工作,CronJob 資源會根據預先定義的排程自動建立新工作 (例如:0 2 * * * 代表每天凌晨 2 點)。
步驟 4:實作資料處理作業並儲存結果。與代管的 Vertex AI 做法不同,容器內的應用程式程式碼負責處理所有資料 I/O。指令碼必須包含連線至資料來源 (例如 Cloud Storage bucket) 並從中讀取資料的邏輯,以及將最終預測結果寫回所選目的地 (例如 Cloud SQL 資料庫) 的邏輯。