Cloud Life Sciences から Batch への移行

このページでは、Cloud Life Sciences から Batch に移行する方法について説明します。

2023 年 7 月 17 日、Google Cloud は、ベータ版であった Cloud Life Sciences のサポートを終了することを発表しました。このサービスは 2025 年 7 月 8 日以降、Google Cloud では利用できなくなります。ただし、Batch は一般提供されており、Cloud Life Sciences のすべてのユースケースをサポートする包括的な後継です。

詳しくは、BatchCloud Life Sciencesプロダクトのリリース ステージをご覧ください。

Cloud Life Sciences と Batch

Cloud Life Sciences から Batch に移行するには、主に Cloud Life Sciences パイプラインを実行して、現在実行しているワークロードで Batch を使用する方法を把握します。

Batch で Cloud Life Sciences のワークロードを実行する方法については、以下のすべてのセクションをご覧ください。

概要

Cloud Life Sciences のパイプラインは、実行する一連のアクション(コンテナ)とコンテナを実行する環境を記述します。

Batch ジョブは、1 つ以上のタスクの配列と、それらのタスクを実行する環境を記述します。ジョブのワークロードは、実行される 1 つ以上の実行可能物(コンテナまたはスクリプト)の 1 つのシーケンスとして定義します。ジョブの各タスクは、その一連の実行可能物の 1 回の実行を表します。

Cloud Life Sciences パイプラインは、単一タスクの Batch ジョブとして表すことができます。

たとえば、次のサンプルでは、単純な Cloud Life Sciences パイプラインと同等の Batch ジョブについて記述しています。

Cloud Life Sciences パイプライン Batch ジョブ

  {
    "actions": [
      {
        "imageUri": "bash",
        "commands": [
          "-c",
          "echo Hello, world!"
        ]
      }
    ]
  }
  

    {
      "taskGroups" : [{
        "taskSpec" : {
          "runnables" : [{
            "container":{
              "imageUri": "bash",
              "commands": [
                "-c",
                "echo Hello, world!"
              ]
            }
          }]
        }
      }]
    }
    

マルチタスクの Batch ジョブは、コピーされた Cloud Life Sciences パイプラインに似ています。

Cloud Life Sciences とは異なり、Batch では、ワークロードの複数の実行を自動的にスケジュールできます。タスクの数を定義することで、ジョブの一連の実行可能物を実行する回数を指定します。ジョブに複数のタスクがある場合、実行可能物のタスクのインデックスを参照して、各実行の変動方法を指定します。また、ジョブのタスクの相対的なスケジュールを構成できます。たとえば、複数のタスクの並列実行を許可するか、またはタスクを順番に 1 つずつ実行することを要求するか、といったスケジュールです。Batch はジョブのタスクのスケジューリングを管理します。タスクが完了すると、ジョブは次のタスクを自動的に開始します(存在する場合)。

たとえば、次の Batch ジョブをご覧ください。この例のジョブには、10 個の Compute Engine 仮想マシン(VM)インスタンスで実行される 100 個のタスクがあるため、常に約 10 個のタスクが同時に実行されます。この例のジョブの各タスクは、1 つの実行可能物(BATCH_TASK_INDEX 事前定義の環境変数で定義されたメッセージとタスクのインデックスを出力するスクリプト)のみを実行します。

{
  "taskGroups" : [{
    "taskSpec" : {
      "runnables" : [{
        "script":{
          "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}."
        }
      }]
    },
    "taskCount": 100,
    "parallelism": 10
  }]
}

Batch の組み込みスケジューリングを活用することで、複数の類似した Cloud Life Sciences パイプラインの作成とモニタリングを伴う Workflows を簡略化できる場合があります。

基本的なオペレーション

このセクションでは、Cloud Life Sciences と Batch の基本的なオペレーションについて説明します。

以下の表は、Cloud Life Sciences と Batch の基本的なオペレーション オプションをまとめたものです。

基本オペレーション Cloud Life Sciences のオプション Batch オプション
ワークロードを実行します。
  • パイプラインを実行します。
  • ジョブを作成して実行します。
すべてのワークロードを表示します。
  • 長時間実行オペレーションを一覧表示します。
  • ジョブのリストを表示します。
ワークロードの詳細とステータスを表示します。
  • 長時間実行オペレーションの詳細を取得します。
  • 長時間実行オペレーションをポーリングします。
  • ジョブの詳細を表示します。
  • ジョブのタスクのリストを表示します。
  • タスクの詳細を表示します。
ワークロードを停止して削除します。
  • 長時間実行オペレーションをキャンセルします。
  • ジョブを削除(およびキャンセル)します。
  • ジョブ削除リクエストのステータスを確認します。

Cloud Life Sciences と Batch の基本的なオペレーションには、いくつかの重要な違いがあります。

まず、長時間実行オペレーション リソースは、Batch 内で Cloud Life Sciences と同じ役割を果たしません。Cloud Life Sciences の長時間実行オペレーション リソース(LRO)は、パイプラインの一覧表示と表示に使用する主要なリソースです。ただし、Batch やその他の Google Cloud APIs の長時間実行オペレーション リソースは、完了するまでに時間がかかるリクエストのステータスをモニタリングするためにのみ使用されます。具体的には、Batch で長時間実行オペレーション リソースを返す唯一のリクエストは、ジョブを削除することです。Batch の長時間実行オペレーション リソースの詳細については、projects.locations.operations REST リソースの Batch API リファレンス ドキュメントをご覧ください。Batch には、長時間実行オペレーション リソースを使用する代わりに、ワークロードに対して表示および削除するジョブリソースがあります。

次に、Batch でワークロードの詳細を表示すると、Cloud Life Sciences とは異なるオペレーションが行われます。ジョブを表示して、その詳細とステータスの両方を確認できます。ただし、ジョブの各タスクには、ジョブのタスクのリストとタスクの詳細を表示して確認できる独自の詳細とステータスもあります。

Cloud Life Sciences と Batch の基本オペレーションの詳細を理解するために、以降のセクションでは、Google Cloud CLI コマンドと、これらの基本的なオペレーションの一部に対する API リクエストパスの例を紹介します。

gcloud CLI コマンドの例

gcloud CLI の場合、Cloud Life Sciences コマンドは gcloud beta lifesciences で始まり、Batch コマンドは gcloud batch で始まります。たとえば、次の gcloud CLI コマンドをご覧ください。

  • Cloud Life Sciences の gcloud CLI コマンドの例:

    • パイプラインを実行します。

      gcloud beta lifesciences pipelines run \
        --project=PROJECT_ID \
        --regions=LOCATION \
        --pipeline-file=JSON_CONFIGURATION_FILE
      
    • 長時間実行オペレーションの詳細を取得します。

      gcloud beta lifesciences operations describe OPERATION_ID
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトのプロジェクト ID
    • LOCATION: パイプラインのロケーション。
    • JSON_CONFIGURATION_FILE: パイプラインの JSON 構成ファイル。
    • OPERATION_ID: パイプラインの実行リクエストによって返された長時間実行オペレーションの識別子。
  • Batch の gcloud CLI コマンドの例:

    • ジョブを作成して実行します。

      gcloud batch jobs submit JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
        --config=JSON_CONFIGURATION_FILE
      
    • ジョブの詳細を表示します。

      gcloud batch jobs describe JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
      
    • ジョブのタスクリストを表示します。

      ​​gcloud batch tasks list \
        --project=PROJECT_ID \
        --location=LOCATION \
        --job=JOB_NAME
      
    • タスクの詳細を表示します。

      gcloud batch tasks describe TASK_INDEX \
        --project=PROJECT_ID \
        --location=LOCATION \
        --job=JOB_NAME \
        --task_group=TASK_GROUP
      
    • ジョブを削除(およびキャンセル)します。

      gcloud batch jobs delete JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION
      

    以下を置き換えます。

    • JOB_NAME: ジョブの名前。
    • PROJECT_ID: プロジェクトのプロジェクト ID
    • LOCATION: ジョブのロケーション
    • JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
    • TASK_INDEX: 詳細を表示するタスクのインデックス。タスクグループでは、最初のタスクのタスク インデックスは 0 から始まり、タスクを追加するごとに 1 ずつ増加します。たとえば、4 つのタスクを含むタスクグループには、インデックス 0123 が設定されます。
    • TASK_GROUP_NAME: 詳細を表示するタスクグループの名前。値は group0 に設定する必要があります。

API リクエストパスの例

API の場合、Cloud Life Sciences は lifesciences.googleapis.com リクエストパスを使用し、Batch は batch.googleapis.com リクエストパスを使用します。たとえば、次の API リクエストパスをご覧ください。Cloud Life Sciences とは異なり、Batch には RPC API はなく、REST API しかありません。

  • Cloud Life Sciences の API リクエストパスの例:

    • パイプラインを実行します。

      POST https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/pipelines:run
      
    • 長時間実行オペレーションの詳細を取得します。

      GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトのプロジェクト ID
    • LOCATION: パイプラインのロケーション。
    • OPERATION_ID: パイプラインの実行リクエストによって返された長時間実行オペレーションの識別子。
  • Batch の API リクエストパスの例:

    • ジョブを作成して実行します。

      POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
      
    • ジョブの詳細を表示します。

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME
      
    • ジョブのタスクリストを表示します。

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME/taskGroups/TASK_GROUP/tasks
      
    • ジョブの削除

      DELETE https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME
      
    • ジョブ削除リクエストのステータスを確認します。

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトのプロジェクト ID
    • LOCATION: ジョブのロケーション
    • JOB_NAME: ジョブの名前。
    • TASK_GROUP_NAME: 詳細を表示するタスクグループの名前。値は group0 に設定する必要があります。
    • OPERATION_ID: ジョブの削除リクエストによって返された長時間実行オペレーションの識別子。

IAM のロールと権限

このセクションでは、Cloud Life Sciences と Batch の Identity and Access Management のロールと権限の違いについて説明します。ロールとその権限の詳細については、IAM の基本ロールと事前定義ロールのリファレンスをご覧ください。

次の表に、Cloud Life Sciences のユーザーに必要な事前定義ロールとその権限を示します。

Cloud Life Sciences のロール 権限

次のいずれか:

  • プロジェクトに対する Cloud Life Sciences 管理者roles/lifesciences.admin
  • プロジェクトに対する Cloud Life Sciences 編集者roles/lifesciences.editor
  • プロジェクトに対する Cloud Life Sciences ワークフロー実行者roles/lifesciences.workflowsRunner
  • lifesciences.workflows.run
  • lifesciences.operations.cancel
  • lifesciences.operations.get
  • lifesciences.operations.list
プロジェクトに対する Cloud Life Sciences 閲覧者roles/lifesciences.viewer
  • lifesciences.operations.get
  • lifesciences.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

次の表に、Batch 用の事前定義ロールとその権限の一部を示します。Cloud Life Sciences とは異なり、Batch では、ジョブのユーザーとサービス アカウントに権限を付与する必要があります。IAM 要件の詳細については、Batch の前提条件をご覧ください。

Batch のユーザーのロール 権限
プロジェクトに対する Batch ジョブ編集者roles/batch.jobsEditor
  • batch.jobs.create
  • batch.jobs.delete
  • batch.jobs.get
  • batch.jobs.list
  • batch.locations.get
  • batch.locations.list
  • batch.operations.get
  • batch.operations.list
  • batch.tasks.get
  • batch.tasks.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクトに対する Batch ジョブ閲覧者roles/batch.jobsViewer
  • batch.jobs.get
  • batch.jobs.list
  • batch.locations.get
  • batch.locations.list
  • batch.operations.get
  • batch.operations.list
  • batch.tasks.get
  • batch.tasks.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
ジョブのサービス アカウントに対するサービス アカウント ユーザーroles/iam.serviceAccountUser
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
Batch のサービス アカウントのロール 権限
プロジェクトに対する Batch エージェント報告者roles/batch.agentReporter
  • batch.states.report

対応する機能

次の表では、Cloud Life Sciences の機能、Batch での同等の機能、それらの違いの詳細を示します。

各機能は、説明とその JSON 構文で示されます。JSON 構文は、API を使用して Batch にアクセスする場合や、Google Cloud CLI を使用して JSON 構成ファイルを指定するときに使用できます。ただし、Google Cloud コンソール フィールド、gcloud CLI のフラグ、クライアント ライブラリなどの他の方法でも Batch 機能を使用できます。詳細については、Batch ドキュメントに記載されています。

各機能とその JSON 構文の詳細については、以下をご覧ください。

Cloud Life Sciences の機能 Batch の機能 詳細
パイプライン(pipeline ジョブ(job)とそのタスク(taskGroups[]

Batch ジョブは、すべての同じ実行可能物をそれぞれが実行する 1 つ以上のタスクの配列で構成されます。Cloud Life Sciences パイプラインは、1 つのタスクがある Batch ジョブに似ています。ただし、Cloud Life Sciences には、タスク(複数のタスクがあるジョブ)に対して同等のコンセプトはありません。これは、パイプラインの繰り返しに似ています。

ジョブとタスクの詳細については、Batch の概要をご覧ください。

パイプラインのアクション(actions[] ジョブのタスクの実行可能物(runnables[]

Cloud Life Sciences のアクションはコンテナを記述しますが、Batch の実行可能物にはコンテナまたはスクリプトを含めることができます。

アクションの認証情報(credentials

コンテナの実行可能物の場合:

Cloud Life Sciences では、アクションの認証情報は、ユーザー名とパスワードの Key-Value ペアを含む Cloud Key Management Service 暗号化辞書である必要があります。

Batch では、コンテナの実行可能物のユーザー名とパスワードが別々のフィールドに格納されます。いずれのフィールドも、書式なしテキストまたは Secret Manager シークレットの名前で指定できます。

アクションの場合:

環境の場合:

可能な環境:

Cloud Life Sciences では、書式なしテキストまたは暗号化された辞書の形式のアクションの環境変数を指定できます。Batch では、これは実行可能物の環境(runnables[]environment フィールド)に、書式なしテキスト(variables)または暗号化された辞書(encryptedVariables)の形式の変数を含めることと同様です。

ただし、Batch には環境変数を指定するその他のオプションもあります。

  • 書式なしテキストまたは暗号化された辞書として指定する代わりに、Secret Manager シークレットを使用してシークレット変数(secretVariables)で変数を指定することもできます。
  • 実行可能物の環境変数を指定する代わりに、taskSpecenvironment フィールドを使用して、すべての実行可能物の環境変数を指定することもできます。
  • 各タスクに同じ値がある環境変数を指定する代わりに、taskGroups[]taskEnvironments[] フィールドを使用して、各タスクに異なる値がある環境変数を指定することもできます。

詳細については、環境変数を使用するをご覧ください。

パイプラインを実行するリクエストのラベル(リクエスト本文内の labels ジョブのラベル(ジョブリソース内の labels

Cloud Life Sciences とは異なり、Batch では新しいジョブを作成するためのリクエストにラベル フィールドを含めません。Batch に最も近いオプションは、ジョブにのみ関連するラベルを使用することです。

Batch には、ジョブの作成時に使用できる複数のタイプのラベル(labels フィールド)があります。詳細については、ラベルを使用してリソースを整理するをご覧ください。

パイプラインのリソース(resources)のリージョン(regions[])とゾーン(zones[] ジョブのリソース ロケーション ポリシー(allowedLocations)の許可されたロケーション(locationPolicy

Cloud Life Sciences では、単一の VM でパイプラインを実行します。必要なリージョンやゾーンを指定できます。

Batch で同等のオプションとしては、ジョブに許可されているロケーションを使用します。これにより、1 つ以上のリージョンまたはゾーンとして定義し、ジョブの VM を作成できる場所を指定できます。単一の Batch ジョブのすべての VM は、特定のリージョンに存在する単一のマネージド インスタンス グループ(MIG)に属しています。ただし、個々の VM がそのリージョンの異なるゾーンにある場合があります。

特に、ジョブの許可されたロケーション フィールドの指定は、ジョブのロケーションとは異なるためオプションです。ジョブのロケーションとは異なり、許可されたロケーションは、Batch ジョブの作成とジョブのメタデータの保存に使用されるロケーションには影響しません。詳細については、Batch のロケーションをご覧ください。

パイプラインのリソース(resources)の場合:

ジョブのリソース ポリシー(allocationPolicy)の場合:

Cloud Life Sciences では、パイプラインが実行される VM を(1 つ)構成できます。

Batch では、ジョブのリソース割り当てポリシー(allocationPolicy)のフィールドで VM の同じオプションを使用できます。

  • VM のサービス アカウント、ラベル、ネットワーク構成は、専用のフィールドで定義されます。
  • 直接またはインスタンス テンプレートを使用して定義できる VM フィールド(instances)には、マシンタイプ、許容最小 CPU プラットフォーム、ブートディスク、その他のアタッチされたディスク、GPU と GPU ドライバの構成オプションが含まれています。

アクションの場合:

実行可能物の場合:

Cloud Life Sciences のこれらのさまざまな役立つフラグは、Batch でも同等です。ただし、フラグが各アクション(コンテナ)にではなく、各実行可能物(スクリプトやコンテナを含む場合がある)に指定されている場合を除きます。

アクションの場合:

  • 公開されたポートを公開するオプション(publishExposedPorts
  • プロセス ID(PID)名前空間を指定するオプション(pidNamespace
  • コンテナからホストへのポート マッピングを指定するオプション(portMappings
コンテナの実行可能物用のオプション(options

これらの Cloud Life Sciences オプション(およびその他のオプション)は、コンテナの実行可能物のオプション フィールド(options)を介して Batch でサポートされています。オプション フィールドに、Batch で docker run コマンドに追加するフラグを設定します(例: -P --pid mynamespace -p 22:22)。

アクションの場合:

同等のものはなし

Batch は、ジョブのログポリシー(logsPolicy)に従って、イメージをプリフェッチし、すべての実行可能物の出力を同様に処理します。

アクションの外部ネットワーク(blockExternalNetwork)をブロックするオプション コンテナの実行可能物の外部ネットワーク(blockExternalNetwork)をブロックするオプション

アクションで外部ネットワークをブロックする Cloud Life Sciences オプションは、コンテナで外部ネットワークをブロックする Batch オプションに似ています。

Batch には、ジョブのすべての VM の外部ネットワークのブロックなどの、その他のネットワーキング オプションも多数用意されています。詳細については、Batch ネットワーキングの概要をご覧ください。

アクションのマウント(mounts[] すべての実行可能物のボリューム(taskSpecvolumes[])とコンテナのボリューム オプション(containervolumes[]

Batch では、taskSpecvolumes[] フィールドを使用して、ジョブのボリュームとそのマウントパスを定義できます。Batch は、ストレージ ボリュームをジョブの VM にマウントし、ストレージ ボリュームにジョブのすべての実行可能物(スクリプトまたはコンテナ)からアクセスできます。このマウントは、VM がタスクまたは実行可能物を実行する前に行われます。

また、Batch は containervolumes[] フィールドを使用して、コンテナの実行可能物で明示的なボリューム オプションをサポートします。これらのマウント オプションは、docker run コマンドの --volume フラグのオプションとしてコンテナに渡されます。たとえば、[ "/etc:/etc", "/foo:/bar" ] 値はコンテナの docker run --volume /etc:/etc --volume /foo:/bar コマンドに変換されます。

Batch でストレージ ボリュームを使用する方法については、ストレージ ボリュームを使用するジョブを作成して実行するをご覧ください。

アクションで Cloud Storage FUSEenableFuse)を有効にするオプション 同等のものはなし

Batch は、ジョブに指定した Cloud Storage バケットなどのストレージ ボリュームのマウントを処理します。そのため、Batch 用の Cloud Storage FUSE などのマウントツールを有効にはしません。ただし、必要に応じて mountOptions[] フィールドを使用してストレージ ボリュームのマウント オプションを指定できます。

Batch で Cloud Storage バケットを使用する方法については、ストレージ ボリュームを使用するジョブを作成して実行するをご覧ください。

パイプラインを実行するリクエスト用の Pub/Sub トピック(pubSubTopic

ジョブの通知構成(notifications[])の場合:

Batch では、Cloud Life Sciences よりもステータスの更新を柔軟にカスタマイズできます。たとえば、Batch ユーザーには、個々のタスクの状態が変化した場合、またはジョブ全体の状態が変更された場合にのみ、Pub/Sub トピックに通知が送られます。

ワークフロー サービス

Cloud Life Sciences でワークフロー サービスを使用する場合、移行プロセスには Batch と連携するワークフロー サービスの構成も含まれます。このセクションでは、Batch で使用できるワークフロー サービスの概要を説明します。Batch では、このセクションに記載されているワークフロー サービスに加えて、今後より多くのワークフロー サービスがサポートされる予定です。

Batch では、Google Cloud のワークフロー サービスである Workflows がサポートされています。Batch で Workflows を使用する場合は、Workflows を使用して Batch ジョブを実行するをご覧ください。それ以外の場合は、次の表に、Batch で使用できる Cloud Life Sciences に使用できる他のワークフロー サービスを示します。次の表では、各ワークフロー サービスで Cloud Life Sciences の代わりに Batch を使用した場合の主な相違点と、各作業の Batch の使用方法の詳細を確認できるページが記載されています。

ワークフロー サービス 主な違い 詳細
Nextflow

Batch で Cloud Life Sciences の Nextflow 構成ファイルを使用するには、次の変更を行います。

  1. executor フィールドで、google-lifesciencesgoogle-batch に置き換えます。
  2. config 接頭辞の場合は、google.lifeSciencegoogle.batch に置き換えます。
Nextflow での Batch の使用方法について詳しくは、Batch のチュートリアルまたは Nextflow のチュートリアルをご覧ください。構成オプションの詳細については、Nextflow のドキュメントをご覧ください。
Cromwell

Batch API で v2beta Cloud Life Sciences API の Cromwell 構成ファイルを使用するには、次の変更を行います。

  1. actor-factory フィールドで、cromwell.backend.google.pipelines.v2beta.PipelinesApiLifecycleActorFactorycromwell.backend.google.batch.GcpBatchLifecycleActorFactory に置き換えます。
  2. genomics.endpoint-url フィールドを削除します。
  3. 新しい構成ファイルを生成します。
Cromwell での Batch の使用方法については、Batch の Cromwell ドキュメントBatch の Cromwell チュートリアルをご覧ください。
dsub

Batch で Cloud Life Sciences API から dsub パイプラインを実行するには、次の変更を行います。

  • provider フィールドで、google-cls-v2google-batch に置き換えます。
dsub で Batch を使用する方法については、Batch の dsub ドキュメントをご覧ください。

次のステップ

  • 新しいユーザーとプロジェクトの Batch を構成するには、スタートガイドをご覧ください。
  • Batch を使用してワークロードを実行する方法については、ジョブを作成するをご覧ください。