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