分散式機器學習可讓數據資料學家和機器學習工程師擴充機器學習 (ML) 模型訓練,突破單一機器的記憶體與運算能力限制。只要將資料分區,並在多個 worker 節點組成的叢集中平行處理工作負載,就能大幅加快訓練速度,在龐大資料集上訓練複雜模型。
Apache Spark 是分散式資料處理的業界標準。其原生機器學習程式庫 MLlib 提供分散式演算法,可用於分類、迴歸、分群和協同過濾,讓您能在單一整合環境中,完成從資料擷取到模型部署的所有工作。
Spark ML 管道是一種高階 API,可協助您將多個機器學習工作流程整合為一個連貫的管道。您可以在結構化的宣告式工作流程中,串連各種資料轉換 (例如特徵擷取和縮放) 以及機器學習演算法 (例如模型訓練)。
使用管道可確保模型訓練和預測期間,資料預先處理步驟均以一致的順序執行,這對於防止資料外洩和確保結果可重現至關重要。Spark 機器學習管道的主要元件是轉換器和估計器。
擴充機器學習工作負載來套用硬體加速時,往往會遇到管理複雜 Spark GPU 依附元件的難題。佈建 VM 執行個體、安裝正確的 NVIDIA 驅動程式,以及確保 CUDA 和 cuDNN 版本與 PyTorch 或 TensorFlow 程式庫相符,都可能會導致開發人員的工作效率停滯數天。
Google Cloud 透過 Managed Service for Apache Spark 解決這個問題,提供預先封裝的機器學習執行階段。這些執行階段是以穩定的 Ubuntu 映像檔 (2.3 以上版本) 為基礎建構而成,並預先安裝及設定工作負載所需的 GPU 驅動程式 (CUDA、cuDNN、NCCL) 和業界標準機器學習框架 (PyTorch、XGBoost、權杖化工具和轉換器)。這個環境不需設定,團隊可以專心編寫程式碼,不必費心設定基礎架構。
在 Spark MLlib 中,Transformer 是一種演算法,可將一個 DataFrame 轉換為另一個 DataFrame (例如將文字轉換為數值向量)。Estimator 是一種演算法,可套用至 DataFrame 來產生轉換器 (例如,將邏輯迴歸演算法套用至訓練資料,以產生經過訓練的模型)。
只要使用 Spark 機器學習管道,就能確保資料準備邏輯與模型緊密結合。如此一來,測試資料和推論資料都會依循與訓練資料相同的處理方式。
在 Managed Service for Apache Spark 使用 Google Cloud 機器學習執行階段,即可卸載依附元件管理作業。Google 會持續更新以 Ubuntu 為基礎的自訂映像檔,並預先封裝原生相容的正確版本 NVIDIA 驅動程式、CUDA 工具包和分散式機器學習框架。
瞭解 Spark MLlib 與 Google Cloud 資料工具的構成元素,是執行大規模分散式機器學習的關鍵。
元件 | 說明 | 主要應用實例 | 費用考量事項 |
Spark MLlib | Apache Spark 的可擴充機器學習程式庫,內含常見的學習演算法、特徵化工具和管道公用程式。 | 在分散式叢集中執行大規模機器學習模型訓練,不依賴單一節點程式庫。 | 所產生的費用主要來自執行 Apache Spark 所使用的基礎 Google Cloud 服務,尤其是 Managed Service for Apache Spark。定價取決於佈建的 Compute Engine 資源 (vCPU、記憶體、GPU、磁碟) 和工作執行時間。 |
向量組合器 | Spark MLlib 的核心特徵轉換器,可將多個資料欄 (連續數字、one-hot 編碼類別等) 合併為單一向量資料欄。 | 將原始表格型資料,轉換為 Spark MLlib 機器學習演算法所需的特定密集或稀疏向量格式。 | 由於它是 Spark MLlib 的元件,因此執行時會產生整體運算費用,並計入在 Managed Service for Apache Spark 執行 Spark 工作負載的費用。 |
Spark ML 管道 | 以 DataFrames 為基礎建構的高階 API,可協助使用者將多個特徵工程步驟和模型鏈結在一起。 | 將 Transformer 和 Estimator 分組為整合式管道,確保訓練和推論期間的資料處理方式相同。 | 與其他 Spark MLlib 元件類似,費用會計入 Managed Service for Apache Spark 的執行費用。 |
BigQuery ML | 這項服務可讓您運用標準 SQL 查詢,在 BigQuery 中建立及執行機器學習模型。 | 在資料儲存位置直接訓練模型,再將高度複雜、反覆執行的分散式工作移至 Spark。 | BigQuery ML 採用專屬的定價模式。所需支付的費用如下:
|
元件
說明
主要應用實例
費用考量事項
Spark MLlib
Apache Spark 的可擴充機器學習程式庫,內含常見的學習演算法、特徵化工具和管道公用程式。
在分散式叢集中執行大規模機器學習模型訓練,不依賴單一節點程式庫。
所產生的費用主要來自執行 Apache Spark 所使用的基礎 Google Cloud 服務,尤其是 Managed Service for Apache Spark。定價取決於佈建的 Compute Engine 資源 (vCPU、記憶體、GPU、磁碟) 和工作執行時間。
向量組合器
Spark MLlib 的核心特徵轉換器,可將多個資料欄 (連續數字、one-hot 編碼類別等) 合併為單一向量資料欄。
將原始表格型資料,轉換為 Spark MLlib 機器學習演算法所需的特定密集或稀疏向量格式。
由於它是 Spark MLlib 的元件,因此執行時會產生整體運算費用,並計入在 Managed Service for Apache Spark 執行 Spark 工作負載的費用。
Spark ML 管道
以 DataFrames 為基礎建構的高階 API,可協助使用者將多個特徵工程步驟和模型鏈結在一起。
將 Transformer 和 Estimator 分組為整合式管道,確保訓練和推論期間的資料處理方式相同。
與其他 Spark MLlib 元件類似,費用會計入 Managed Service for Apache Spark 的執行費用。
BigQuery ML
這項服務可讓您運用標準 SQL 查詢,在 BigQuery 中建立及執行機器學習模型。
在資料儲存位置直接訓練模型,再將高度複雜、反覆執行的分散式工作移至 Spark。
BigQuery ML 採用專屬的定價模式。所需支付的費用如下:
Google Cloud 的 Managed Service for Apache Spark 簡化複雜的基礎架構,讓您在無伺服器環境或可自訂的代管叢集中,執行 Spark 機器學習管道,進行大規模模型訓練。
為了消除複雜的 Spark GPU 依附元件,這項服務採用預先封裝的機器學習執行階段,完整配備原生相容的 NVIDIA 驅動程式、CUDA 工具包和分散式架構,讓您無需設定即可部署硬體加速工作負載。
瞭解如何使用 Transformer 擷取及擴充資料,以及使用 Estimator 訓練演算法。
啟動 GPU 加速的 Spark 叢集,不必管理基礎架構。Google Cloud 的機器學習執行階段已預先設定,可讓您略過複雜的 Spark GPU 依附元件。