Batch を使ってみる

このページでは、 Google Cloud用の Batch の使用を開始する方法について説明します。

概要

Batch は、 Google Cloud リソースでバッチ処理ワークロードをスケジュールし、キューに入れて実行するフルマネージド サービスです。たとえば、ハイ パフォーマンス コンピューティング(HPC)、機械学習(ML)、データ処理のワークロードに Batch を使用することを検討してください。 Batch がお客様に代わってリソースをプロビジョニングし、容量を管理することで、バッチ ワークロードを大規模に実行できます。

Batch を使用すると、サードパーティ ジョブ スケジューラを構成して管理したり、リソースをプロビジョニングしてプロビジョニングを解除したり、一度に 1 つのゾーンでリソースをリクエストしたりする必要はありません。ジョブを実行するには、ワークロードに必要なリソースのパラメータを指定すると、Batch がリソースを取得し実行のためにジョブをキューに入れます。Batch は、他の Google Cloud サービスとネイティブに統合されており、バッチジョブのスケジューリング、実行、保存、分析を支援するため、ジョブの送信と結果の使用に集中できます。

Batch は次のコンポーネントで構成されています。

  • ジョブ: ユーザーによる操作なしで一連のタスクを実行するスケジューリングされたプログラム。通常はコンピューティング ワークロードに使用されます。 ジョブは単一のシェル スクリプトの場合もあれば、複雑なマルチパート コンピューティングである場合もあります。

    具体的には、Batch ジョブは 1 つ以上のタスクの配列と、それらのタスクを実行する環境を表します。 ジョブのプログラムを 1 つ以上の実行可能物のシーケンスとして定義します。各タスクでは、実行可能物のシーケンスがジョブのリソースに対して実行されます。ジョブのタスクを並列または順番に実行するように構成できます。

  • タスク: ジョブの一連の実行可能物の 1 回の実行。ジョブに複数のタスクがある場合、ジョブの実行可能なタスクのインデックスの環境変数を参照することで、それぞれの実行の変動方法を指定します。

  • 実行可能物:ジョブの一部として定義する実行可能スクリプトまたはコンテナ。

  • リソース: ジョブの実行に必要なインフラストラクチャ少なくとも、タスクごとに必要なコンピューティング リソース(CPU コア、メモリ、必要に応じて追加のブートディスク ストレージ)は指定する必要があります。必要に応じて、ジョブに他のリソース オプションを指定することもできます。 Batch は、ジョブの実行中に仕様を満たすリソースを自動的に作成し、削除します。

    具体的には、各バッチジョブはリージョン マネージド インスタンス グループ(MIG)で実行されます。MIG は、含まれるゾーンの 1 つにそれぞれ配置されている 1 つ以上の一致する Compute Engine 仮想マシン(VM)インスタンスのグループです。各 VM には、ジョブのパフォーマンスに影響を与える CPU コアとメモリの専用ハードウェアと、ジョブと(オペレーティング システム(OS)イメージとジョブ実行の指示を保存する)ブートディスクが備わっています。指定した場合、ジョブは GPU や外部ストレージ ボリュームなどの追加のリソースを含めるか、これにアクセスすることがあります。 ジョブにプロビジョニングされる VM の数は、指定したハードウェア要件とタスク スケジューリング オプションによって異なります。

つまり、Batch でジョブを作成して実行し、それぞれのタスクの実行に必要なリソースを自動的にプロビジョニングして使用できます。

ジョブの動作とオプションの詳細については、ジョブの作成と実行の概要をご覧ください。

料金

Batch を使用することによる追加料金は発生しません。ジョブの実行に必要な基盤となるリソースの費用のみが課金されます。

Batch に関連する費用と、Cloud Billing レポートをフィルタして Batch 費用を表示する方法については、料金をご覧ください。

制限事項

Batch には次の制限があります。

  • プロジェクトの Batch の割り当てと上限を超えることはできません。
  • ジョブで使用できるマシンタイプは、次のマシンシリーズのマシンタイプのみです。
    • 汎用: C4、C4A、C4D、C3、C3D、E2、N4、N4A、N2D、N2、N1、T2D
    • コンピューティング最適化: C2、C2D、H3
    • メモリ最適化: M3、M2、M1
    • アクセラレータ最適化: A4、A3 Ultra、A3 Mega、A3 High、A2、G4、G2
  • ジョブごとに指定できるタスクグループは 1 つだけです。すべてのジョブには、group0 という名前のタスクグループが 1 つだけあります。

前提条件

Batch の使用を開始するには、次の前提条件を満たしている必要があります。

  1. プロジェクトで Batch を使用したことがない場合は、プロジェクトで Batch を有効にします。
  2. 新しいユーザーごとに Batch を設定します。

プロジェクトで Batch を有効にする

プロジェクトで Batch の使用を開始するには、次の手順に従います。

  1. Google Cloud コンソールのプロジェクト セレクタページで、 Google Cloud プロジェクトを選択または作成します。

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  3. プロジェクトに対して Batch が有効になっていることを確認します。

    1. Batch API、Compute Engine API、Cloud Logging API がまだ有効になっていない場合は、有効にします。

      API を有効にするために必要なロール

      API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

      API を有効にする

    2. バッチジョブを実行するためのリソースを作成してアクセスするために必要な権限を持つ 1 つ以上のサービス アカウントがプロジェクトに含まれていることを確認します。

      重要な点として、プロジェクトでバッチジョブを作成および実行できるユーザーには、これらのサービス アカウントのいずれかを使用する権限が付与されている必要があります。そのため、これらのユーザーに付与する権限よりも多くの権限を持つサービス アカウントを選択しないでください。

      各ジョブがデフォルトで使用するサービス アカウントは、Compute Engine のデフォルトのサービス アカウントですが、ジョブが使用するサービス アカウントをカスタマイズすることもできます。

      ジョブのサービス アカウントにデフォルト構成のみを使用する予定がなければ、プロジェクトが Batch ジョブに使用するサービス アカウントに次の IAM ロールを付与します。

      • プロジェクトに対するバッチ エージェント報告者(roles/batch.agentReporter)
      • ジョブが Cloud Logging でログを生成できるようにするには: プロジェクトに対するログ書き込み(roles/logging.logWriter)

      ジョブに使用するサービス アカウントには、ジョブで使用する構成オプションに基づいて追加のロールが必要になる場合もあります。追加の権限が必要かどうかについては、各タスクのドキュメントをご覧ください。サービス アカウントへのロールの付与については、サービス アカウントを制限すると、サービス アカウントへのアクセスを管理するをご覧ください。

    3. プロジェクトの Batch サービス エージェントについて、十分に理解しておいてください。

      Batch ジョブを作成すると、Batch サービス エージェントが、次の名前でプロジェクト用に自動で作成されます。

      service-PROJECT_NUMBER@gcp-sa-cloudbatch.iam.gserviceaccount.com
      

      PROJECT_NUMBER は、プロジェクトのプロジェクト番号に置き換えます。

      Batch サービス エージェントには、Google Batch サービス エージェント(roles/batch.serviceAgent)IAM ロールが自動的に付与されます。 この構成は、プロジェクトで Batch を使用するために必要です。

      ただし、共有 VPC ネットワークでジョブを実行するなど、特定のユースケースでは、プロジェクトの Batch サービス エージェントに追加の権限を付与する必要があります。

      詳細については、サービス エージェントをご覧ください。

新しいユーザー用に Batch を設定する

ユーザーとして Batch の使用を開始するには、次の手順に従います。

  1. Batch を使用するために必要な権限を取得するには、プロジェクトに必要な IAM ロールを付与するよう管理者に依頼してください。必要な権限については、各タスクのドキュメントをご覧ください。

    たとえば、基本的なジョブを作成して Batch の使用方法を学習する場合は、次のタスクのロールをリクエストすることを検討してください。

    • ジョブを作成するには:
    • ジョブを一覧表示して記述するには: プロジェクトに対するバッチジョブ編集者(roles/batch.jobsEditor)またはバッチジョブ閲覧者(roles/batch.jobsViewer)
    • ジョブのログを表示するには: プロジェクトに対するログビューア(roles/logging.viewer)
    • ジョブを削除するには: プロジェクトに対するバッチジョブ編集者(roles/batch.jobsEditor)

    ロールの付与の詳細については、アクセスの管理をご覧ください。

  2. Batch 用のコマンドラインの例を使用する場合は、次のように Google Cloud CLI を設定します。詳しくは、Google Cloud CLI の認証をご確認ください。

    1. Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. 推奨: gcloud config set project コマンドを使用して、デフォルト プロジェクトを設定します。

      gcloud config set project PROJECT_ID
      

      PROJECT_ID は、プロジェクトのプロジェクト ID に置き換えます。

  3. Batch 用の API の例またはクライアント ライブラリの例を使用する場合は、Batch を認証するをご覧ください。

サポートを受ける

Google Developer Program フォーラムの Batch タグを使用して、コミュニティで Batch について話し合うことができます。

Batch に問題がある場合は、トラブルシューティングのドキュメントをご覧ください。

Batch のサポートを受ける場合やフィードバックを送信する場合は、次のリソースを使用します。

  • Google Cloudの請求に関する問題については、請求サポートにお問い合わせください。

  • 有料サポート パッケージをご利用の場合は、Batch に関する問題について Google Cloud サポートに直接お問い合わせください。

    Google Cloud には、24 時間 365 日の対応や電話サポート、テクニカル サポート マネージャーへのお問い合わせなど、さまざまなニーズに対応する各種のサポート パッケージが用意されています。詳細については、Google Cloud サポートをご覧ください。

  • Batch のフィードバックや機能リクエストを提供するため、または有料サポート パッケージなしで Batch に関する問題を報告するには、[フィードバックを送信] ボタンをクリックします。これはそれぞれの Batch ドキュメントページの最初と最後に表示されます。 次のいずれかを選択します。

    • Batch ドキュメントに関連するフィードバックについては、[ドキュメント フィードバック] を選択します。
    • Batch に関するその他のフィードバックについては、[プロダクト フィードバック] を選択します。

次のステップ