本文件屬於Google Cloud Well-Architected Framework:AI 和機器學習觀點,提供原則和建議,協助您在 Google Cloud上最佳化 AI 和機器學習工作負載的效能。本文中的建議符合 Well-Architected Framework 的效能最佳化支柱。
AI 和機器學習系統可為貴組織提供進階自動化和決策功能。這些系統的效能會直接影響重要的業務驅動因素,例如收益、成本和顧客滿意度。如要充分發揮 AI 和機器學習系統的潛力,您必須根據業務目標和技術相關規定,將系統效能調整至最佳狀態。效能最佳化程序通常涉及權衡取捨。舉例來說,提供所需效能的設計選擇可能會導致成本增加。本文中的建議優先考量效能,而非其他因素。
如要最佳化 AI 和機器學習效能,您必須針對模型架構、參數和訓練策略等因素做出決策。做出這些決策時,請考量 AI 和機器學習系統的整個生命週期,以及其部署環境。舉例來說,超大型 LLM 在大型訓練基礎架構上可能表現出色,但在行動裝置等容量受限的環境中,可能表現不佳。
本文中的建議對應至下列核心原則:
確立成效目標和評估方法
業務策略和目標是運用 AI 和機器學習技術的基礎。將業務目標轉化為可評估的主要成效指標 (KPI)。KPI 的例子包括總收益、成本、轉換率、留存率或流失率、顧客滿意度和員工滿意度。
定義實際可行的目標
根據網站可靠性工程 (SRE) 最佳做法,服務目標必須反映出符合一般客戶需求的效能水準。也就是說,服務目標必須在規模和功能效能方面切合實際。
不切實際的目標可能會導致資源浪費,成效卻微乎其微。效能最高的模型不一定能帶來最佳業務成果。這類模型可能需要更多時間和成本來訓練及執行。
定義目標時,請區分並優先考量品質和成效目標:
- 品質是指決定實體價值的固有特徵。這項指標可協助您評估實體是否符合期望和標準。
- 效能是指實體運作或執行預期用途的效率和成效。
機器學習工程師可以在訓練過程中,提升模型的成效指標。Gemini Enterprise Agent Platform 提供評估服務,機器學習工程師可使用這項服務,以標準化且可重複的方式追蹤品質指標。模型的「預測效率」是指模型在正式環境或推論時的成效。如要監控效能,請使用 Cloud Monitoring 和 Gemini Enterprise Agent Platform 的模型監控功能。如要選取適當的模型並決定訓練方式,您必須將業務目標轉化為技術相關規定,以決定品質和成效指標。
如要瞭解如何設定實際目標並找出適當的成效指標,請參考下列 AI 輔助詐欺偵測系統範例:
- 業務目標:以詐欺偵測系統來說,不切實際的業務目標是在每秒 1, 000 億筆交易的流量高峰期,於 1 奈秒內準確偵測 100% 的詐欺交易。較實際的目標是在美國工作時間內,以每秒 100 萬筆交易的高峰量,在 100 毫秒內以 95% 的準確率偵測詐欺交易,並完成 90% 的線上預測。
- 成效指標:偵測詐欺行為屬於分類問題。您可以使用召回率、F1 分數和準確率等指標,評估詐欺偵測系統的品質。如要追蹤系統效能或速度,可以測量推論延遲時間。偵測潛在詐欺交易可能比準確率更有價值。因此,實際目標可能是高召回率,且 p90 延遲時間低於 100 毫秒。
監控模型生命週期各階段的成效
在實驗、訓練和模型部署後,請監控 KPI,並觀察是否偏離業務目標。全方位的監控策略有助於您做出有關模型品質和資源使用率的重要決策,例如:
- 決定何時停止訓練工作。
- 判斷模型在實際工作環境中的效能是否降低。
- 降低新模型的成本並加快上市速度。
在實驗和訓練期間監控
實驗階段的目標是找出特定工作的最佳整體方法、模型架構和超參數。實驗可協助您反覆判斷能提供最佳效能的設定,以及如何訓練模型。監控功能可協助您有效找出潛在改善空間。
為監控模型的品質和訓練效率,機器學習工程師必須執行下列操作:
- 以圖表呈現各項試驗的模型品質和成效指標。
- 以視覺化方式呈現模型圖表和指標,例如權重和偏差的直方圖。
- 以圖像呈現訓練資料。
- 在不同硬體上剖析訓練演算法。
如要監控實驗和訓練,建議您採取下列做法:
模型品質:如要以圖表呈現及追蹤實驗指標 (例如準確度),以及以圖表呈現模型架構或訓練資料,請使用 TensorBoard。TensorBoard 是一套開放原始碼工具,與下列機器學習架構相容:
- XGBoost
- JAX
- Flax
- PyTorch
- Cloud TPU 訓練:Cloud TPU 上的 XLA 架構
- TensorFlow
實驗追蹤:Gemini Enterprise Agent Platform 的 Experiments 整合了代管的企業級 Agent Platform TensorBoard 執行個體,可支援實驗追蹤。這項整合功能可讓您可靠地儲存及共用記錄和指標。如要讓多個團隊和個人追蹤實驗,建議您採用最小權限原則。
訓練和實驗效率:Agent Platform 會將指標匯出至 Monitoring,並使用觀測能力代理程式收集遙測資料和記錄。您可以在 Google Cloud 控制台中以圖表呈現指標。或者,您也可以使用 Monitoring,根據這些指標建立資訊主頁或快訊。詳情請參閱「Agent Platform 的監控指標」。
NVIDIA GPU:Ops Agent 可為 Compute Engine 和 Ops Agent 支援的其他產品啟用 GPU 監控功能。您也可以使用 NVIDIA Data Center GPU Manager (DCGM),這是一套用於管理及監控資料中心環境中 NVIDIA GPU 的工具。監控 NVIDIA GPU 對於訓練和提供深度學習模型特別有用。
深度偵錯:如要對訓練程式碼或 Gemini Enterprise Agent Platform 代管訓練工作的設定問題進行偵錯,您可以使用互動式殼層工作階段檢查訓練容器。
提供期間監控:串流預測
訓練模型並匯出至 Gemini Enterprise Agent Platform 的 Model Registry 後,即可建立 Agent Platform 端點。這個端點會為模型提供 HTTP 端點。
Agent Platform 的模型監控功能可協助您找出輸入或輸出特徵分布的重大變化。您也可以監控正式環境中的特徵歸因,並與基準分布情形比較。基準分布可以是訓練集,也可以根據過去的實際工作環境流量分布。與訓練相比,提供分布的變化可能意味著預測效能降低。
- 選擇監控目標:視用途對模型資料變化的敏感度而定,您可以監控不同類型的目標:輸入特徵偏移、輸出偏移和特徵歸因。Agent Platform v2 的模型監控功能可讓您監控部署在 Agent Platform 等代管服務平台上的模型,以及 Google Kubernetes Engine (GKE) 等自行託管服務上的模型。此外,如要精細追蹤成效,您可以在模型層級 (而非端點) 監控參數。
- 監控生成式 AI 模型提供服務:為確保穩定性並盡可能縮短延遲時間 (尤其是 LLM 端點),請設定強大的監控堆疊。Gemini 模型提供內建指標,例如第一個詞元生成時間 (TTFT),您可以在 Metrics Explorer 中直接存取。如要監控所有Google Cloud 模型的處理量、延遲時間和錯誤率,請使用模型觀測能力資訊主頁。
提供期間監控:批次預測
如要監控批次預測,您可以在 Agent Platform 評估服務中執行標準評估工作。Agent Platform 的模型監控功能支援監控批次推論。如果您使用 Batch 執行服務工作負載,可以透過 Metrics Explorer 中的指標監控資源消耗情形。
自動評估,確保可重現性和標準化
如要將模型從原型轉換為可靠的正式環境系統,您需要標準化的評估程序。這個程序可協助您追蹤各個疊代的進度、比較不同模型、偵測及減少偏誤,並確保符合法規要求。為確保可重現性和擴充性,您必須自動化評估程序。
如要將機器學習效能評估程序標準化及自動化,請完成下列步驟:
- 定義量化和質化指標。
- 選擇適當的資料來源和技術。
- 標準化評估管道。
以下各節將說明這些步驟。
1. 定義量化和質化指標
以運算為基礎的指標是使用數值公式計算得出。請注意,訓練損失指標可能與業務目標相關的評估指標不同。舉例來說,用於監督式詐欺偵測的模型可能會使用交叉熵損失進行訓練。不過,如要評估推論成效,更相關的指標可能是喚回度,代表詐欺交易的涵蓋率。Agent Platform 提供評估服務,可評估召回率、精確度和精確度與召回率曲線下面積 (AuPRC) 等指標。詳情請參閱「Agent Platform 中的模型評估」。
定性指標 (例如生成內容的流暢度或娛樂價值) 無法客觀計算。如要評估這些指標,您可以使用 LLM-as-a-judge 策略,或 Labelbox 等人工標籤服務。
2. 選擇適當的資料來源和技術
評估作業必須在一定數量的不同樣本上執行,才具備統計顯著性。請採用下列方法,選擇用於評估的資料集和技術:
- 黃金資料集:使用可靠、一致且準確的資料樣本,反映模型在正式環境中的機率分布。
- LLM-as-a-judge:使用 LLM 評估生成模型的輸出內容。這種方法僅適用於 LLM 可評估模型的工作。
- 使用者意見回饋:在正式環境流量中收集使用者直接提供的意見回饋,做為日後改進的依據。
視評估技術、評估資料的大小和類型,以及評估頻率而定,您可以使用 BigQuery 或 Cloud Storage 做為資料來源,包括 Agent Platform 評估服務。
- BigQuery 可讓您使用 SQL 指令執行推論工作,例如自然語言處理和機器翻譯。詳情請參閱「特定工作解決方案總覽」。
- Cloud Storage 為大型資料集提供符合成本效益的儲存空間解決方案。
3. 標準化評估管道
如要自動執行評估程序,請考慮使用下列服務和工具:
- Agent Platform 評估服務:提供立即可用的基本元素,可在 Agent Platform 的機器學習生命週期中追蹤模型效能。
- Gen AI Evaluation Service:可評估任何生成式模型或應用程式,並依據您的評估標準,判斷評估結果的品質。這項服務也能協助您執行專門工作,例如提示工程、檢索增強生成 (RAG) 和 AI 代理最佳化。
- Agent Platform 自動並排比較 (AutoSxS) 工具:支援成對模型評估。
- Kubeflow:提供執行模型評估的特殊元件。
經常執行及追蹤實驗
如要有效提升機器學習成效,您需要一個專屬、強大且互動式的實驗平台。平台必須具備下列功能:
- 促進反覆開發,讓團隊能快速、可靠且大規模地從構想轉化為經過驗證的結果。
- 讓團隊有效率地找出最佳設定,並用來觸發訓練工作。
- 提供相關資料、功能和工具的控管存取權,以便執行及追蹤實驗。
- 支援重現性和資料歷程追蹤。
將資料視為服務
請使用下列技術,將實驗性工作負載與正式環境系統隔離,並為資料資產設定適當的安全控管措施:
| 做法 | 說明 | 優點 |
|---|---|---|
| 資源隔離 | 在不同的 Google Cloud 專案中隔離不同環境的資源。舉例來說,請在 ml-dev、ml-staging 和 ml-prod 等獨立專案中,為開發、測試和正式環境佈建資源。 |
資源隔離有助於防止實驗性工作負載耗用正式環境系統所需的資源。舉例來說,如果您將單一專案用於實驗和正式環境,實驗可能會耗用 Agent Platform 代管訓練的所有可用 NVIDIA A100 GPU。這可能會導致重要正式環境模型的重新訓練作業中斷。 |
| 身分與存取控管 | 請套用零信任和最小權限原則,並使用工作負載專屬的服務帳戶。使用預先定義的 Identity and Access Management (IAM) 角色 (例如 Agent Platform 使用者 (roles/aiplatform.user)) 授予存取權。 |
這種做法有助於防止意外或惡意行為破壞實驗。 |
| 網路安全 | 使用虛擬私有雲 (VPC) 網路隔離網路流量,並使用 VPC Service Controls 強制執行安全 perimeter。 | 這種做法有助於保護機密資料,並防止實驗流量影響正式環境服務。 |
| 資料隔離 | 將實驗資料儲存在不同的 Cloud Storage bucket 和 BigQuery 資料集中。 | 資料隔離可防止意外修改正式環境資料。舉例來說,如果沒有資料隔離機制,實驗可能會不小心變更共用 BigQuery 資料表中的特徵值,導致正式環境中的模型準確度大幅降低。 |
為團隊提供適當工具
如要建立一組精選工具,加速整個實驗生命週期 (從資料探索到模型訓練和分析),請使用下列技術:
- 互動式原型設計:如要快速探索資料、測試假設及建立程式碼原型,請使用 Colab Enterprise,或 Gemini Enterprise Agent Platform Workbench 上的代管 JupyterLab 執行個體。詳情請參閱「選擇筆記本解決方案」。
- 可擴充的模型訓練:在支援分散式訓練和可擴充運算資源 (例如 GPU 和 Cloud TPU) 的代管服務上執行訓練工作。這種做法有助於將訓練時間從數天縮短至數小時,並能同時進行更多實驗。詳情請參閱「使用專門元件進行訓練」。
- 資料庫內機器學習:使用 SQL 直接在 BigQuery ML 中訓練模型。這項技術有助於消除資料移動,並加快分析師和以 SQL 為中心的使用者的實驗速度。
- 追蹤實驗:記錄每次實驗執行的參數、指標和構件,建立可搜尋及比較的實驗資料記錄。詳情請參閱「建構資料和模型歷程系統」。
- 最佳化生成式 AI:如要最佳化生成式 AI 應用程式的效能,您必須實驗提示、模型選取和微調。如要快速進行提示工程,請使用 Gemini Enterprise Agent Platform 的 Agent Studio。如要試用基礎模型 (例如 Gemini),並找出適合您用途和業務目標的模型,請使用 Model Garden。
標準化作業,確保可重現性和效率
為確保實驗能有效率地使用資源,並產生一致且可靠的結果,請採用下列方法,將實驗標準化及自動化:
- 使用容器確保環境一致:將訓練程式碼和依附元件封裝為 Docker 容器。使用 Artifact Registry 管理及提供容器。這種做法可讓您在相同環境中重複實驗,在不同機器上重現問題。Agent Platform 提供預先建構的容器,可用於無伺服器訓練。
- 將機器學習工作流程自動化為管道:使用 Gemini Enterprise Agent Platform Pipelines,將端對端機器學習工作流程自動調度管理為程式碼管道。這種做法有助於強制執行一致性、確保可重現性,並自動追蹤 Agent Platform ML Metadata 中的所有構件和中繼資料。
- 使用基礎架構即程式碼 (IaC) 自動佈建:使用 Terraform 等 IaC 工具,定義及部署標準化實驗環境。為確保每項專案都遵循一組標準化的安全性、網路和管理設定,請使用 Terraform 模組。
建構及自動化訓練和提供服務的基礎架構
如要訓練及提供 AI 模型,請設定穩健的平台,支援高效可靠的開發、部署和提供作業。這個平台可讓團隊長期有效提升訓練和服務的品質與效能。
使用專用元件進行訓練
可靠的訓練平台有助於加快效能,並提供標準化方法,自動執行機器學習生命週期中可重複的工作,從資料準備到模型驗證。
收集及準備資料
如要有效訓練模型,您需要收集並準備訓練、測試和驗證所需的資料。資料可能來自不同來源,且資料類型也不同。此外,您還需要在訓練執行作業中重複使用相關資料,並與團隊共用特徵。如要提高資料收集和準備階段的可重複性,請參考下列建議:
- 使用 Knowledge Catalog 提升資料曝光度。
- 在 Agent Platform 特徵儲存庫中集中管理特徵工程。
- 使用 Dataflow 預先處理資料。
訓練執行
訓練模型時,您會使用資料建立模型物件。為此,您需要設定必要的基礎架構和訓練程式碼的依附元件。您也需要決定如何保存訓練模型、追蹤訓練進度、評估模型,以及呈現結果。如要提高訓練重複性,請考慮下列建議:
- 請按照「自動評估可重現性和標準化」一節的指南操作。
- 如要在一或多個 worker 節點提交訓練工作,而不必管理基礎架構佈建或依附元件,請使用 Agent Platform Managed Training 的
CustomJob資源。您也可以將CustomJob資源用於超參數調整工作。 - 使用 Dynamic Workload Scheduler 或預留項目,最佳化排程 goodput,以便進行 Agent Platform Managed Training。
- 將模型註冊至 Model Registry。
訓練自動化調度管理
使用 Agent Platform Pipelines,將訓練工作負載部署為管道階段。這項服務提供代管 Kubeflow 和 TFX 服務。將管道的每個步驟定義為在容器中執行的元件。每個元件都像函式一樣運作,具有輸入參數和輸出構件,這些構件會成為管道中後續元件的輸入內容。如要提高管道效率,請參考下列建議:
- 導入核心自動化功能:
- 使用 Kubeflow Pipelines 元件。
- 如要設計進階管道 (例如條件閘),請使用控制流程。
- 將管道編譯整合至 CI/CD 流程。
- 使用 Cloud Scheduler 執行管道。
- 提高速度和成本效益:
- 如要加快疊代速度並降低成本,請使用 Agent Platform Pipelines 的執行快取。
- 根據每個步驟的資源需求,指定各元件的機器設定。
- 提高穩定性:
- 導入管理和追蹤機制:
- 如要測試不同的模型設定或訓練設定,請將管道執行作業新增至實驗。
- 監控 Agent Platform Pipelines 的記錄和指標。
- 請按照「監控模型生命週期各階段的效能」中的建議操作。
使用專門的基礎架構進行預測
為減少管理基礎架構和模型部署作業的負擔,請自動執行可重複的工作流程。服務導向的做法可讓您專注於速度,並更快創造價值 (TTV)。請參考下列建議。
導入自動部署
- 模型訓練完畢後,請使用自動化功能部署模型。Agent Platform Pipelines 提供專用元件,可將模型部署至 Agent Platform 端點。您可以使用 Kubeflow 控制流程管理自動部署作業。
- 如要根據驗證集的評估結果決定是否部署模型,請使用管道的評估元件。您可以使用 Agent Platform 中的特殊批次預測元件,自動部署批次推論。
善用代管資源調度功能
- Agent Platform 提供批次和線上推論功能,可讓您設定擴充行為。
- Cloud Run 支援自動調度 GPU 資源。
最佳化 Agent Platform 端點的延遲時間和處理量
- 選擇合適的機器類型。
- 為模型選擇合適的端點類型。專屬私人端點可能有助於縮短延遲時間。
- 如果您使用特徵儲存庫,請使用 Bigtable 線上提供,以高處理量和低延遲提供特徵值,並使用 向量搜尋 提供嵌入。
充分運用資源
- 如要充分運用資源,可以在模型部署作業之間共用資源。您可以將多個模型部署至單一 VM,而非為每個模型使用個別 VM (預設行為)。
- 如要確保或最佳化資源可用性,請使用預留項目、Dynamic Workload Scheduler 或 Spot VM。
最佳化模型部署
- 為避免破壞性變更,您可以逐步遷移,並將多個模型自動部署至同一個端點,藉此實施 A/B 測試。Agent Platform 將端點層與模型分離,因此您可以在不同模型版本之間分配流量。
- 如要替換已部署的模型,請使用滾動式部署策略。
監控成效
如要提升正式環境的服務效能,請查看 Agent Platform 端點的記錄和推論指標。如要瞭解模型在實際工作環境中的行為,您需要監控品質和效能的工具。Agent Platform v2 的 Model Monitoring 可讓您監控多個版本的模型,並快速疊代。
根據效能需求選擇設計
在選擇設計來提升效能時,請評估這些選擇是否能滿足業務需求,還是會造成浪費並產生反效果。如要選擇合適的基礎架構、模型和設定,請找出效能瓶頸,並評估這些瓶頸與成效指標的關聯。舉例來說,即使使用效能強大的 GPU 加速器,訓練工作仍可能遇到效能瓶頸。這些瓶頸可能是由儲存層中的資料 I/O 問題或模型效能限制所造成。
著重於機器學習流程的整體成效
隨著模型和叢集規模擴大,訓練需求也會增加,可能導致失敗率和基礎架構成本上升。因此,失敗成本可能會呈二次方增加。您不能只依賴傳統的資源效率指標,例如模型 FLOPS 使用率 (MFU)。如要瞭解 MFU 為何可能無法充分反映整體訓練效能,請查看一般訓練工作的生命週期。生命週期包含下列循環流程:
- 建立叢集:佈建 worker 節點。
- 初始化:在 worker 節點上初始化訓練。
- 訓練執行:資源用於正向或反向傳播。
- 中斷:訓練程序在模型檢查點設定期間,或因 worker 節點搶占而中斷。
每次中斷後,系統會重複先前的流程。
訓練執行步驟只是機器學習工作生命週期的一小部分。因此,訓練執行步驟的 worker 節點使用率,並不代表工作的整體效率。舉例來說,即使訓練執行步驟的效率達到 100%,但如果經常中斷,或中斷後需要很長時間才能恢復訓練,整體效率仍可能偏低。
採用並追蹤有效處理量指標
為確保能全面評估及最佳化成效,請將重點從 MFU 等傳統資源效率指標轉移至有效處理量。有效處理量會考量叢集和運算資源的可用性和使用率,並協助評估多個層級的資源效率。
Goodput 指標著重於工作的整體進度,而非工作是否忙碌。Goodput 指標可協助您最佳化訓練工作,大幅提升整體工作效率和效能。
有效處理量可讓您透過下列指標,精細瞭解潛在的效率損失:
- 排程有效處理量是指訓練或提供服務所需的所有資源,可供使用的時間比例。
- 執行階段有效處理量是指在特定時間內完成的實用訓練步驟比例。
- 程式有效處理量是指訓練工作可從加速器獲得的硬體最高效能或 MFU。這取決於訓練期間是否有效運用基礎運算資源。
最佳化排程有效處理量
如要提高工作負載的排程 Goodput,您必須找出工作負載的特定基礎架構需求。舉例來說,批次推論、串流推論和訓練有不同的需求:
- 批次推論工作負載可能會容許資源可用性中斷和延遲。
- 串流推論工作負載需要無狀態基礎架構。
- 訓練工作負載需要長期使用基礎架構。
選擇適當的取得模式
在雲端運算中,「可取得性」是指在需要時佈建資源的能力。 Google Cloud 提供下列可取得性模式:
- 隨選 VM:視需要佈建 Compute Engine VM,並在 VM 上執行工作負載。佈建要求取決於資源 (例如 GPU) 的可用性。如果要求的資源類型數量不足,要求就會失敗。
- Spot VM: 使用未使用的運算容量建立 VM。Spot VM 的計費價格低於隨選 VM,但Google Cloud 可能會隨時先占 Spot VM。建議您將 Spot VM 用於無狀態工作負載,這樣一來,當主機 VM 遭到先占時,工作負載就能正常失敗。
- 預留項目:預留容量做為 VM 集區。預留項目非常適合需要容量保證的工作負載。使用預留項目,確保在需要時能取得資源,充分提升排程有效處理量。
Dynamic Workload Scheduler:這項佈建機制會將 GPU 驅動 VM 的要求排入專屬集區。Dynamic Workload Scheduler 可協助您避免其他取得模式的限制:
- 隨選模式下的缺貨情況。
- Spot VM 的無狀態限制和先占風險。
- 預留項目對費用和可用性的影響。
下表摘要說明 Google Cloud服務的取得模式,並提供相關說明文件的連結:
| 產品 | 隨選 VM | Spot VM | 預留項目 | Dynamic Workload Scheduler |
|---|---|---|---|---|
| Compute Engine | 建立及啟動 Compute Engine 執行個體 | 關於 Spot VM | 預留項目簡介 | 建立含有 GPU VM 的 MIG |
| GKE | 新增及管理節點集區 | 關於 GKE 中的 Spot VM | 使用預留的可用區資源 | 透過彈性啟動佈建功能,使用 GPU、Cloud TPU 和 H4D |
| 批次 | 建立及執行工作 | 使用 Spot VM 的批次工作 | 使用 VM 預留項目確保資源可用性 | 使用 GPU 和彈性啟動型 VM |
| Agent Platform 代管訓練 | 建立無伺服器訓練工作 | 使用 Spot VM 執行訓練工作 | 使用預留項目執行訓練工作 | 根據資源可用性安排訓練工作 |
| Agent Platform | 從自訂訓練模型取得批次推論和線上推論。 | 使用 Spot VM 進行推論 | 使用預留項目進行線上推論 | 使用彈性啟動型 VM 進行推論 |
規劃維護事件
您可以預測及規劃基礎架構維護和升級作業,提高排程 goodput。
GKE 可讓您控管叢集自動維護作業的執行時間。詳情請參閱「維護期間和排除時段」。
Compute Engine 提供下列功能:
- 如要在主機事件 (例如基礎硬體的排定維護作業) 期間保持執行個體運作,Compute Engine 會將執行個體即時遷移至相同可用區中的其他主機。詳情請參閱「維護事件期間的即時遷移程序」。
- 如要控制基礎主機需要維護或發生錯誤時,執行個體的回應方式,您可以為執行個體設定主機維護政策。
如要瞭解如何規劃與 AI Hypercomputer 中大型訓練叢集相關的主機事件,請參閱「管理所有運算執行個體的主機事件」。
最佳化執行階段有效處理量
模型訓練程序經常會因模型檢查點和資源先占等事件而中斷。如要盡可能提高執行階段有效處理量,請務必確保系統在所需基礎架構就緒後,以及發生任何中斷情形後,都能有效率地恢復訓練和推論。
在模型訓練期間,AI 研究人員會使用檢查點追蹤進度,並盡可能減少因資源先占而遺失的學習內容。模型越大,檢查點中斷時間越長,進一步影響整體效率。中斷後,必須在叢集中的每個節點上重新啟動訓練應用程式。由於必須重新載入必要的構件,因此重新啟動可能需要一些時間。
如要最佳化執行階段有效處理量,請使用下列技術:
| 做法 | 說明 |
|---|---|
| 實作自動查核點。 | 頻繁建立查核點可讓您精細追蹤訓練進度。不過,訓練程序會在每個查核點中斷,因此會降低執行階段的有效處理量。為盡可能減少中斷情形,您可以設定自動檢查點,讓主機的 SIGTERM 信號觸發檢查點建立作業。這種做法可將檢查點中斷情形限制在主機需要維護時。請注意,部分硬體故障可能不會觸發 SIGTERM 信號,因此您必須在自動檢查點和 SIGTERM 事件之間找到適當的平衡點。 您可以使用下列技術設定自動檢查點: |
| 使用適當的容器載入策略。 | 在 GKE 叢集中,節點可能需要一些時間才能完成載入必要構件 (例如資料或模型檢查點),然後才能繼續執行訓練工作。如要縮短重新載入資料和繼續訓練所需的時間,請使用下列技術: |
| 使用編譯快取。 | 如果訓練需要以編譯為基礎的堆疊,請檢查是否可以使用編譯快取。使用編譯快取時,每次訓練中斷後,系統不會重新編譯運算圖。使用 Cloud TPU 時,縮短時間和降低成本的效果特別顯著。JAX 可讓您將編譯快取儲存在 Cloud Storage bucket,並在發生中斷時使用快取資料。 |
最佳化程式有效處理量
程式有效處理量代表訓練期間的資源使用率高峰,這是衡量訓練和服務效率的傳統方式。如要提高程式 Goodput,您需要最佳化的發布策略、高效率的運算與通訊重疊、最佳化的記憶體存取,以及高效率的管道。
如要提高程式的 Goodput,請採用下列策略:
| 策略 | 說明 |
|---|---|
| 使用架構層級的自訂選項。 | Accelerated Linear Algebra (XLA) 等架構或編譯器,可提供程式有效處理量的許多重要元件。如要進一步最佳化效能,您可以自訂運算圖的基本元件。例如,Pallas 支援 Cloud TPU 和 GPU 的自訂核心。 |
| 將記憶體卸載至主機 DRAM。 | 如要進行大規模訓練,加速器需要大量記憶體,因此您可以將部分記憶體用量卸載至主機 DRAM。舉例來說,JAX 和 XLA 可讓您將模型活化從正向傳遞卸載至主機記憶體,而非使用加速器的記憶體。採用這項策略時,您可以增加模型容量或批次大小,藉此提升訓練效能。 |
| 在訓練期間運用量化。 | 在訓練期間運用模型量化,可提升訓練效率和程式有效處理量。這項策略會在訓練的特定步驟中降低梯度或權重的精確度,進而提升程式有效處理量。不過,這項策略可能需要在模型開發期間投入額外的工程作業。 詳情請參閱下列資源: |
| 實作平行處理。 | 如要提高可用運算資源的使用率,您可以在訓練期間和載入資料時,在模型層級使用平行處理策略。 如要瞭解模型平行處理,請參閱下列資源: 如要實現資料平行處理,可以使用下列工具:
|
著重於工作負載特定需求
為確保效能最佳化工作有效且全面,您必須根據訓練和推論工作負載的特定需求,做出最佳化決策。選擇合適的 AI 模型,並採用相關的提示最佳化策略。根據工作負載需求,選取合適的架構和工具。
找出特定工作負載的需求
評估工作負載在下列領域的需求和限制:
| 區 | 說明 |
|---|---|
| 工作和品質規定 | 定義工作負載的核心任務和效能基準。 回答下列問題:
|
| 放送情境 | 分析您打算部署模型的作業環境。供應情境通常會對設計決策產生重大影響。請考量下列因素:
|
| 團隊技能和經濟效益 | 評估購買解決方案的業務價值,以及建構和維護解決方案的成本和複雜度。判斷團隊是否具備開發自訂模型所需的專業技能,或代管服務是否能更快創造價值。 |
選擇合適的模型
如果 API 或開放原始碼模型能提供所需效能和品質,請使用該 API 或模型。
如要執行光學字元辨識 (OCR)、標籤和內容審核等特定模態工作,請選擇下列機器學習 API:
如要開發生成式 AI 應用程式,建議使用 Google 模型,例如 Gemini、Imagen 和 Veo。
探索 Model Garden,從精選的 Google 基礎模型和特定工作模型中選擇。Model Garden 也提供 Gemma 等開放模型和第三方模型,您可以在 Agent Platform 執行這些模型,或部署至 GKE 等執行階段。
如果工作可透過機器學習 API 或生成式 AI 模型完成,請考量工作的複雜度。處理複雜工作時,Gemini 等大型模型的效能可能優於小型模型。
透過更優質的提示提升品質
如要大規模提升提示品質,請使用 Agent Platform 提示最佳化工具。您不必手動重寫系統指令和提示。提示詞最佳化工具支援下列方法:
- 零樣本最佳化:一種低延遲方法,可即時改善單一提示或系統指令。
- 以數據為準的最佳化:一種進階方法,根據特定評估指標,評估模型對範例提示的回覆,藉此改善提示。
如需更多提示詞最佳化指南,請參閱「提示詞策略總覽」。
提升機器學習和生成式 AI 端點的效能
如要改善機器學習和生成式 AI 端點的延遲時間或處理量 (每秒權杖數),建議採取下列做法:
- 使用 Memorystore 快取結果。
- 如果是生成式 AI API,請使用下列技術:
- 如果是自行託管的模型,請考慮使用下列最佳化推論架構:
架構 筆記本和指南 Model Garden 中最佳化的 vLLM 容器 使用預先建構的容器部署開放原始碼模型 在 GKE 執行 GPU 推論 Cloud TPU 推論
使用低程式碼解決方案和調整功能
如果預先訓練模型不符合需求,您可以使用下列解決方案,提升模型在特定領域的效能:
- AutoML 是一種低程式碼解決方案,只需少量技術工作,就能改善各種工作的推論結果。AutoML 可讓您建立在多個維度上最佳化的模型:架構、效能和訓練階段 (透過檢查點)。
- 調整可協助您以較短的提示詞和少量資料,生成更高品質、更穩定的內容,並降低延遲。建議您先使用超參數的預設值,再開始調整。詳情請參閱「關於 Gemini 的監督式微調」。
最佳化自行管理的訓練
在某些情況下,您可能會決定重新訓練模型,或完全自行管理微調工作。這種方法需要進階技能和額外時間,具體取決於您使用的模型、架構和資源。
善用效能最佳化的架構選項,例如:
在 Google Cloud使用 Ray 執行模型訓練:
- Ray on Gemini Enterprise Agent Platform 可讓您將 Ray 的分散式訓練架構導入 Compute Engine 或 GKE,並簡化管理架構的負擔。
- 您可以在現有叢集部署 Ray operator,透過 KubeRay 自行管理 GKE 上的 Ray。
使用開放原始碼 Cluster Toolkit 佈建運算叢集,並在叢集上部署訓練工作負載。如要有效率地佈建效能最佳化的叢集,請使用以 YAML 為基礎的藍圖。使用 Slurm 和 GKE 等排程器管理叢集。
使用 GPU 最佳化配方訓練標準模型架構。
使用下列技術,建構可最佳化效能的訓練架構和策略:
- 在 Agent Platform 或上述架構中實作分散式訓練。分散式訓練可實現模型平行處理和資料平行處理,有助於增加訓練資料集大小和模型大小,並縮短訓練時間。
- 如要有效率地訓練模型,並探索不同的效能設定,請以適當的間隔執行檢查點。詳情請參閱「最佳化執行階段 Goodput」。
最佳化自行管理的服務
如要自行管理推論服務,您需要有效率的推論作業和高處理量 (每單位時間的推論次數)。
如要最佳化模型推論,請考慮下列做法:
量化:以較低精確度的格式表示參數,縮減模型大小。這種做法有助於減少記憶體消耗和延遲時間。不過,在訓練「後」進行量化可能會影響模型品質。舉例來說,訓練後量化可能會降低準確度。
- 訓練後量化 (PTQ) 是可重複執行的工作。PyTorch 和 TensorFlow 等主要機器學習架構都支援 PTQ。
- 您可以在 Agent Platform Pipelines 使用管道,自動調度 PTQ。
- 如要穩定模型效能,並縮減模型大小,可以使用 Qwix。
張量平行處理:將運算負載分配至多個 GPU,提高推論處理量。
記憶體最佳化:提高處理量,並最佳化注意力快取、批次大小和輸入大小。
使用推論最佳化架構,例如:
- 如果是生成式模型,請使用 MaxText、MaxDiffusion 或 vLLM 等開放式架構。
- 在 Agent Platform 執行預先建構的容器映像檔,取得預測和說明。如果選擇 TensorFlow,請使用最佳化的 TensorFlow 執行階段。相較於使用開放原始碼 TensorFlow 的預先建構容器,這個執行階段的推論效率更高,成本也更低。
- 使用 Pathways 執行多主機推論。
- 在 Agent Platform 中使用 NVIDIA Triton 推論伺服器。
- 使用 LLM 最佳化設定,簡化 GKE 推論工作負載的部署作業。詳情請參閱「使用 GKE 推論快速入門導覽課程分析提供模型效能和費用」。
根據成效目標,盡可能減少資源用量
資源最佳化有助於加速訓練、有效率地疊代、提升模型品質,以及提高服務容量。
選擇合適的處理器類型
選擇的運算平台會對模型的訓練效率產生重大影響。
- 深度學習模型在 GPU 和 Cloud TPU 上表現良好,因為這類模型需要大量記憶體和平行矩陣運算。如要進一步瞭解適合 CPU、GPU 和 Cloud TPU 的工作負載,請參閱「何時應使用 Cloud TPU」。
- 運算最佳化 VM 適合用於 HPC 工作負載。
最佳化 GPU 訓練和提供作業
如要最佳化部署於 GPU 的訓練和推論工作負載效能,請考慮下列建議:
| 建議 | 說明 |
|---|---|
| 選取適當的記憶體規格。 | 選擇 GPU 機型時,請根據下列因素選取記憶體規格:
|
| 評估核心和記憶體頻寬需求。 | 除了記憶體大小外,也請考量其他需求,例如 Tensor 核心數量和記憶體頻寬。這些因素會影響晶片上的資料存取和運算速度。 |
| 選擇合適的 GPU 機型。 | 訓練和提供服務可能需要不同的 GPU 機型。
建議您使用大型機型進行訓練,並使用較小、符合成本效益的機型進行推論。如要偵測資源使用率問題,請使用 NVIDIA DCGM 代理程式等監控工具,並適當調整資源。 |
| 在 GKE 上運用 GPU 共用功能。 | 在某些情況下,將整個 GPU 專用於單一容器可能效率不彰。為協助您克服這項效率不彰的問題,GKE 支援下列 GPU 共用策略:
為充分利用資源,建議您適當結合這些策略。舉例來說,如果您使用 GPU 分時和多實體 GPU 策略,將大型 H100 GPU 虛擬化,服務平台就能根據流量調度資源。GPU 資源會根據模型容器的負載即時重新分配。 |
| 最佳化轉送和負載平衡。 | 在叢集上部署多個模型時,您可以使用 GKE Inference Gateway 進行最佳化轉送和負載平衡。Inference Gateway 運用下列功能,擴充 Kubernetes Gateway API 的轉送機制:
|
| 分享 Agent Platform 端點資源。 | 您可以設定多個 Agent Platform 端點,共用資源集區。如要進一步瞭解這項功能及其限制,請參閱「跨部署作業共用資源」。 |
在 Cloud TPU 最佳化訓練和提供作業
Cloud TPU 提供 Google 晶片,可協助解決機器學習演算法的大規模挑戰。這些晶片可為 AI 訓練和推論工作負載提供最佳效能。與 GPU 相比,Cloud TPU 在深度學習訓練和提供服務方面效率更高。如要瞭解適合 Cloud TPU 的用途,請參閱「何時使用 Cloud TPU」。Cloud TPU 與 TensorFlow、PyTorch 和 JAX 等機器學習架構相容。
如要最佳化 Cloud TPU 效能,請使用下列技術,詳情請參閱 Cloud TPU 效能指南:
- 盡可能提高每個 Cloud TPU 記憶體單元的批次大小。
- 確認 Cloud TPU 資源並非閒置狀態。例如,實作平行資料讀取。
- 最佳化 XLA 編譯器。視需要調整張量維度,並避免填補。XLA 會使用融合和廣播等工具,自動最佳化圖形執行效能。
在 Cloud TPU 最佳化訓練,並在 GPU 提供模型
Cloud TPU 支援高效率訓練。GPU 具備多功能性,且更廣泛適用於推論工作負載。如要結合 Cloud TPU 和 GPU 的優勢,您可以在 Cloud TPU 上訓練模型,並在 GPU 上提供模型。這種做法有助於降低整體成本並加快開發速度,尤其是大型模型。如要瞭解哪些位置提供 Cloud TPU 和 GPU 機型,請參閱「Cloud TPU 區域和可用區」和「GPU 位置」。
最佳化儲存層
訓練和服務基礎架構的儲存層對效能至關重要。訓練工作和推論工作負載涉及下列儲存空間相關活動:
- 載入及處理資料。
- 在訓練期間建立模型檢查點。
- 節點遭到先占後,重新載入二進位檔以繼續訓練。
- 有效率地載入模型,大規模處理推論作業。
下列因素會決定您對儲存空間容量、頻寬和延遲時間的需求:
- 模型大小
- 訓練資料集的大小
- 檢查點頻率
- 資源調度模式
如果訓練資料位於 Cloud Storage,您可以使用 Cloud Storage FUSE 的檔案快取功能,縮短資料載入延遲時間。Cloud Storage FUSE 可讓您將 Cloud Storage bucket 掛接至具有本機 SSD 磁碟的運算節點。如要瞭解如何提升 Cloud Storage FUSE 的效能,請參閱「效能調整最佳做法」。
Cloud Storage 的 PyTorch 連接器可提供高效能的資料讀寫功能。這個連接器特別適合用於訓練大型資料集,以及為大型模型建立檢查點。
Compute Engine 支援多種永久磁碟類型。透過 Google Cloud Hyperdisk ML,您可以根據訓練需求,佈建所需的處理量和 IOPS。如要最佳化磁碟效能,請先調整磁碟大小,再考慮變更機型。詳情請參閱「最佳化永久磁碟效能」。如要對儲存層的讀寫效能和延遲時間進行負載測試,可以使用 Flexible I/O tester (FIO) 等工具。
如要進一步瞭解如何為 AI 和機器學習工作負載選擇及最佳化儲存空間服務,請參閱「AI Hypercomputer 中 AI 和機器學習工作負載的儲存空間服務總覽」。
最佳化網路層
如要最佳化 AI 和機器學習工作負載的效能,請設定虛擬私有雲網路,提供足夠的頻寬和最大處理量,並盡可能縮短延遲時間。請參考下列建議:
| 建議 | 建議採用的導入技術 |
|---|---|
| 最佳化虛擬私有雲網路。 |
|
| 將 VM 放在更靠近彼此的位置。 |
|
| 設定 VM 以支援更高的網路速度。 |
|
將成效指標與設計和設定選項連結
如要創新、排解及調查效能問題,您必須在設計選擇和效能結果之間建立明確的連結。您需要可靠的記錄,追蹤機器學習資產、部署作業、模型輸出內容,以及產生輸出內容的對應設定和輸入內容。
建構資料和模型歷程系統
如要確實提升成效,您必須能夠追溯每個模型版本,找出用於產生模型的確切資料、程式碼和設定。隨著模型規模擴大,追蹤難度也會提高。您需要一個譜系系統,自動執行追蹤程序,並為每項實驗建立清楚且可查詢的記錄。這個系統可讓團隊有效率地找出並重現能產生最佳成效模型的選擇。
如要查看及分析 Agent Platform 中工作負載的管道構件歷程,可以使用 Agent Platform ML Metadata 或 Knowledge Catalog。這兩種選項都能讓您註冊事件或構件,以符合管理需求,並在需要時查詢中繼資料及擷取資訊。本節將概略介紹這兩種選項。如要進一步瞭解 Agent Platform 機器學習中繼資料和 Knowledge Catalog 之間的差異,請參閱「追蹤管道構件的歷程」。
預設實作:Agent Platform ML Metadata
在 Agent Platform 中首次執行管道或實驗時,系統會建立預設的 Agent Platform ML Metadata 服務。管道耗用及產生的參數和構件中繼資料,會自動註冊至 Agent Platform 機器學習中繼資料儲存庫。用於整理及連結儲存中繼資料的資料模型包含下列元素:
- Context:一組構件和執行作業,代表 實驗執行作業。
- 執行:工作流程中的步驟,例如資料驗證或模型訓練。
- 構件:工作流程產生及使用的輸入或輸出實體、物件或資料。
- 事件:構件與執行作業之間的關係。
根據預設,Agent Platform ML Metadata 會擷取並追蹤管道執行的所有輸入和輸出構件。並將這些構件與 Agent Platform 實驗、Model Registry 和 Agent Platform 代管資料集整合。
自動記錄是 Agent Platform 代管訓練的內建功能,可自動將資料記錄到 Agent Platform 的實驗。如要有效追蹤實驗,以便最佳化效能,請使用 Agent Platform 實驗與相關聯 Agent Platform ML Metadata 服務之間的內建整合功能。
Agent Platform ML Metadata 提供篩選語法和運算子,可用於查詢構件、執行作業和情境。如有需要,團隊可以有效率地擷取模型登錄檔連結、資料集,或特定實驗執行的評估資訊。這項中繼資料有助於加快找出最佳化成效的選項。例如,您可以比較管道執行作業、比較模型,以及比較實驗執行作業。如需更多資訊 (包括查詢範例),請參閱「分析中繼資料」。
替代實作方式:Knowledge Catalog
Knowledge Catalog 會從Google Cloud 資源探索中繼資料,包括 Agent Platform 構件。您也可以整合自訂資料來源。
Knowledge Catalog 可讀取多個區域和整個組織儲存庫的中繼資料,而 Agent Platform ML Metadata 則是專案專屬資源。與 Agent Platform ML Metadata 相比,Knowledge Catalog 需要更多設定。不過,如果您需要與 Google Cloud 中更廣泛的資料組合,以及全組織的儲存庫整合,Knowledge Catalog 可能會是合適的選擇。
Knowledge Catalog 會探索並收集已啟用 Data Lineage API 的專案中繼資料。目錄中的中繼資料是使用資料模型整理,該模型由專案、項目群組、項目和切面組成。Knowledge Catalog 提供特定語法,可用於探索構件。如有需要,您可以將中繼資料構件對應至 Knowledge Catalog。
使用可解釋性工具
AI 模型的行為取決於訓練模型時使用的資料。這種行為在數學函式中會編碼為參數。要確切瞭解模型為何會以特定方式運作,可能並不容易。不過,這項知識對於效能最佳化至關重要。
舉例來說,假設某個圖片分類模型的訓練資料只包含紅色汽車的圖片,模型可能會根據物件的顏色 (而非物件的空間和形狀屬性) 來識別「汽車」標籤。如果使用顯示不同顏色汽車的圖片測試模型,模型效能可能會降低。以下各節將說明可用來找出及診斷這類問題的工具。
偵測資料偏誤
在機器學習專案的探索性資料分析 (EDA) 階段,您會找出資料問題,例如不平衡資料集和偏誤。
在實際工作環境系統中,您通常會重新訓練模型,並使用不同的資料集執行實驗。為標準化資料並比較不同實驗,建議採用系統化的 EDA 方法,包括下列特性:
- 自動化:隨著訓練集規模擴大,EDA 程序必須在背景自動執行。
- 涵蓋範圍廣:新增功能時,EDA 必須提供新功能的深入分析。
許多 EDA 工作都與資料類型和業務情境有關。如要自動執行 EDA 程序,請使用 BigQuery 或 Dataflow 等代管資料處理服務。詳情請參閱「不平衡資料的分類」和「Agent Platform 的資料偏誤指標」。
瞭解模型特性和行為
除了瞭解訓練和驗證集中的資料分布情形及其偏誤,您還需要瞭解模型在預測時的特性和行為。如要瞭解模型行為,請使用下列工具:
| 工具 | 說明 | 目的 |
|---|---|---|
| 示例式說明 | 您可以使用以範例為基礎的說明或最鄰近搜尋,從訓練資料中找出最相似的範例,藉此瞭解預測結果。這種做法的原理是,相似的輸入內容會產生相似的輸出內容。 |
|
| 特徵式說明 | 如果是根據表格型資料或圖片進行預測,特徵式解釋會顯示與基準相比,各項特徵對預測結果的影響程度。 可解釋性技術和表格解釋會根據模型類型和工作,提供特徵歸因方法。這些方法通常會依賴取樣和敏感度分析,評估輸出內容因輸入特徵變化而產生的變化程度。 |
|
| What-If Tool | What-If Tool 是由 Google 的人與 AI 研究 (PAIR) 計畫開發,可協助您瞭解及視覺化呈現圖片和表格模型的行為。如需使用這項工具的範例,請參閱 What-If Tool 網頁示範。 |
|
貢獻者
作者:
- Benjamin Sadik | AI 和機器學習專家客戶工程師
- Filipe Gracio 博士 | AI/機器學習專家客戶工程師
其他貢獻者:
- Daniel Lees | 雲端安全架構師
- Kumar Dhanagopal | 跨產品解決方案開發人員