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、N2D、N2、N1、T2D
    • コンピューティング最適化: C2、C2D、H3
    • メモリ最適化: M3、M2、M1
    • アクセラレータ最適化: A4、A3 Ultra、A3 Mega、A3 High、A2、G4、G2
  • マシンタイプは、ジョブごとに 1 つしか指定できません。 事前定義されたマシンタイプまたは カスタムマシンタイプを指定できます。
  • ジョブごとに指定できるタスクグループは 1 つだけです。すべてのジョブには group0 という名前のタスクグループが 1 つだけあります。

前提条件

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

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

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

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

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

    プロジェクトを選択または作成するために必要なロール

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

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

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

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

    1. Batch API、Compute Engine API、Cloud Logging API を有効にします。

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

      API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(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 の使用方法を学習する場合は、次のタスクのロールをリクエストすることを検討してください。