Apache Spark ML パイプラインを作成する

Google Cloud でゼロセットアップのランタイムを使用して Spark ML パイプラインを作成することで、分散型 ML の取り組みを加速します。

分散型機械学習とは

分散 ML を使用すると、データ サイエンティストや ML エンジニアは、単一マシンのメモリとコンピューティングの制限を超えて ML モデルのトレーニングをスケーリングできます。データ パーティションを分散し、ワーカーノードのクラスタ全体でワークロードを並列化することで、大規模なデータセットでの複雑なモデルのトレーニングを大幅に高速化できます。

Apache Spark を使用する理由

Apache Spark は、分散データ処理の業界標準です。ネイティブの ML ライブラリである MLlib は、分類、回帰、クラスタリング、協調フィルタリング用の分散アルゴリズムを提供し、データの取り込みからモデルのデプロイまでを単一の統合環境内で行えるようにします。

Spark ML パイプラインとは

Spark ML パイプラインは、複数の ML ワークフローを 1 つのまとまったパイプラインに統合できるように設計された高レベル API です。これにより、構造化された宣言型ワークフロー内で、さまざまなデータ変換(特徴抽出やスケーリングなど)と ML アルゴリズム(モデル トレーニングなど)を連結できます。


パイプラインを使用すると、データ前処理ステップの同じシーケンスが、モデルのトレーニングと予測の両方で一貫して適用されます。これは、データ漏洩を防ぎ、再現可能な結果を確保するうえで重要です。Spark ML パイプラインの主要なコンポーネントは、Transformer と Estimator です。

Spark ML の取り組みに Google Cloud を選ぶ理由

ML ワークロードをスケーリングしてハードウェア アクセラレーションを適用すると、Spark GPU の複雑な依存関係の管理という課題が生じることがよくあります。VM インスタンスのプロビジョニング、適切な NVIDIA ドライバのインストール、CUDA と cuDNN のバージョンが PyTorch または TensorFlow ライブラリと一致していることの確認により、デベロッパーの生産性が数日間低下する可能性があります。


Google Cloud は、Managed Service for Apache Spark でこの問題を解決します。このサービスは、事前にパッケージ化された ML ランタイムを提供します。安定した Ubuntu ベースのイメージ(バージョン 2.3 以降)を基盤とするこれらのランタイムには、ワークロードに必要な GPU ドライバ(CUDA、cuDNN、NCCL)と業界標準の ML フレームワーク(PyTorch、XGBoost、トークナイザー、トランスフォーマー)がプリインストールされ、事前構成されています。このゼロセットアップ環境により、チームはインフラストラクチャの構成ではなく、コードの作成に集中できます。

よくある質問

Spark MLlib では、Transformer は、ある DataFrame を別の DataFrame に変換するアルゴリズムです(たとえば、テキストを数値ベクトルに変換するなど)。Estimator は、DataFrame に適合させて Transformer を生成できるアルゴリズムです(たとえば、ロジスティック回帰アルゴリズムをトレーニング データに適合させて、トレーニング済みモデルを生成するなど)。

Spark ML パイプラインを利用することで、データ準備ロジックをモデルと厳密に結合できます。これにより、テストデータや推論データがトレーニング データと同じように処理されることが保証されます。

Managed Service for Apache Spark で Google Cloud ML ランタイムを使用すると、依存関係の管理がオフロードされます。カスタムの Ubuntu ベースのイメージは Google によって継続的に更新され、ネイティブに互換性のある正しいバージョンの NVIDIA ドライバ、CUDA ツールキット、分散 ML フレームワークが事前にパッケージ化されています。

Spark MLlib のコンポーネントと Google Cloud のデータツール

Spark MLlib と Google Cloud データツールの構成要素を理解することは、分散 ML を大規模に実行するために不可欠です。

コンポーネント

説明

主なユースケース


料金に関する考慮事項

Spark MLlib

一般的な学習アルゴリズム、特徴量化ツール、パイプライン ユーティリティを含む、Apache Spark のスケーラブルな ML ライブラリ。

単一ノードのライブラリに依存することなく、分散クラスタ全体で大規模な ML モデルのトレーニングを実行する。


費用は、Apache Spark の実行に使用される基盤となる Google Cloud サービス(主に Managed Service for Apache Spark)を通じて発生します。料金は、プロビジョニングされた Compute Engine リソース(vCPU、メモリ、GPU、ディスク)とジョブの実行時間によって異なります。


*Managed Service for Apache Spark の料金をご覧ください。

ベクトル アセンブラ

複数の列(連続値、ワンホット エンコードされたカテゴリなど)を 1 つのベクトル列に結合する、Spark MLlib のコア機能 Transformer。

未加工の表形式データを、Spark MLlib ML アルゴリズムが想定する特定の密ベクトル形式またはスパース ベクトル形式に変換して準備する。

Spark MLlib 内のコンポーネントとして、その実行は Managed Service for Apache Spark で Spark ワークロードを実行する際の全体的なコンピューティング費用に影響します。

Spark ML パイプライン

DataFrame 上に構築された高レベル API。ユーザーが複数の特徴量エンジニアリング ステップとモデルを連結するのに役立ちます。

Transformer と Estimator を統合パイプラインにグループ化して、トレーニングと推論で同一のデータ処理を保証します。

他の Spark MLlib コンポーネントと同様に、費用は Managed Service for Apache Spark の実行料金に含まれます。

BigQuery ML


BigQuery で標準 SQL クエリを使用して ML モデルを作成し実行できるサービス。

非常に複雑で反復的な分散ジョブを Spark に移行する前に、データが存在する場所で直接モデルをトレーニングします。


BigQuery ML には独自の料金モデルがあります。以下に対して料金が発生します。

  1. モデルのトレーニング(CREATE MODEL クエリ中に処理されたデータに基づく)
  2. モデルの予測(標準の BigQuery クエリ料金)
  3. モデル ストレージ(標準の BigQuery ストレージ料金で課金)

コンポーネント

説明

主なユースケース


料金に関する考慮事項

Spark MLlib

一般的な学習アルゴリズム、特徴量化ツール、パイプライン ユーティリティを含む、Apache Spark のスケーラブルな ML ライブラリ。

単一ノードのライブラリに依存することなく、分散クラスタ全体で大規模な ML モデルのトレーニングを実行する。


費用は、Apache Spark の実行に使用される基盤となる Google Cloud サービス(主に Managed Service for Apache Spark)を通じて発生します。料金は、プロビジョニングされた Compute Engine リソース(vCPU、メモリ、GPU、ディスク)とジョブの実行時間によって異なります。


*Managed Service for Apache Spark の料金をご覧ください。

ベクトル アセンブラ

複数の列(連続値、ワンホット エンコードされたカテゴリなど)を 1 つのベクトル列に結合する、Spark MLlib のコア機能 Transformer。

未加工の表形式データを、Spark MLlib ML アルゴリズムが想定する特定の密ベクトル形式またはスパース ベクトル形式に変換して準備する。

Spark MLlib 内のコンポーネントとして、その実行は Managed Service for Apache Spark で Spark ワークロードを実行する際の全体的なコンピューティング費用に影響します。

Spark ML パイプライン

DataFrame 上に構築された高レベル API。ユーザーが複数の特徴量エンジニアリング ステップとモデルを連結するのに役立ちます。

Transformer と Estimator を統合パイプラインにグループ化して、トレーニングと推論で同一のデータ処理を保証します。

他の Spark MLlib コンポーネントと同様に、費用は Managed Service for Apache Spark の実行料金に含まれます。

BigQuery ML


BigQuery で標準 SQL クエリを使用して ML モデルを作成し実行できるサービス。

非常に複雑で反復的な分散ジョブを Spark に移行する前に、データが存在する場所で直接モデルをトレーニングします。


BigQuery ML には独自の料金モデルがあります。以下に対して料金が発生します。

  1. モデルのトレーニング(CREATE MODEL クエリ中に処理されたデータに基づく)
  2. モデルの予測(標準の BigQuery クエリ料金)
  3. モデル ストレージ(標準の BigQuery ストレージ料金で課金)

仕組み

Google Cloud の Managed Service for Apache Spark は、インフラストラクチャの複雑さを抽象化し、サーバーレス環境またはカスタマイズ可能なマネージド クラスタを使用して、大規模なモデル トレーニング用の Spark ML パイプラインを実行できるようにします。


Spark GPU の複雑な依存関係を排除するため、このサービスでは、ネイティブに互換性のある NVIDIA ドライバ、CUDA ツールキット、分散フレームワークを完備した事前パッケージ化された ML ランタイムを利用しています。これにより、ゼロセットアップでハードウェア アクセラレーション ワークロードをデプロイすることができます。

Spark を使用した ML の詳細

一般的なユースケース

復元力のある特徴量エンジニアリング ワークフローを構築する

Transformer を使用してデータを抽出してスケーリングする方法と、Estimator を使用してアルゴリズムをトレーニングする方法を学習します。

入門ガイド

  • Spark ML パイプラインの構築: Google Cloud で Spark を使用するための一般的なガイダンスについては、Managed Service for Apache Spark のドキュメントをご覧ください。
  • PySpark のパイプライン Estimator: Managed Service for Apache Spark のドキュメントに記載されている Python API のサンプルをご確認ください。これらのサンプルには、Spark MLlib コンポーネントを使用するパターンが含まれています。クラスタに GPU を接続するなどのガイドで参照されている Spark ML の例もご覧ください。

参考情報

ゼロセットアップの ML ランタイムをデプロイ

基盤となるインフラストラクチャを管理することなく、GPU アクセラレーション Spark クラスタを起動できます。Google Cloud の ML ランタイムは事前構成されているため、複雑な Spark GPU の依存関係を回避できます。

入門ガイド

  • Managed Service for Apache Spark ML ランタイムの概要: Managed Service for Apache Spark のランタイム イメージ バージョンの詳細をご覧ください。TensorFlow、PyTorch、XGBoost などのプリインストールされたライブラリや、GPU 固有のライブラリについて詳しく説明しています。


参考情報

  • Google Cloud での分散型ディープ ラーニング: ML のスケーリングに関するアーキテクチャの幅広い視点については、ML の実装に関するベスト プラクティスのドキュメントをご覧ください。このドキュメントでは、Google Cloud での分散トレーニングやアクセラレータの使用など、Gemini Enterprise Agent Platform Model Registry と統合されたカスタム トレーニングされたモデルを開発するための推奨事項について説明します。

概念実証を開始する

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud