從 Cloud Life Sciences 遷移至 Batch

本頁說明如何從 Cloud Life Sciences 遷移至 Batch。

Google Cloud 宣布 Cloud Life Sciences 已於 2023 年 7 月 17 日淘汰,並於 2025 年 7 月 8 日停用。不過,Batch 現已正式推出,是功能齊全的後繼產品,支援 Cloud Life Sciences 的所有用途。

進一步瞭解 BatchCloud Life Sciences產品發布階段

Cloud Life Sciences 與 Batch 的比較

從 Cloud Life Sciences 遷移至 Batch 的主要步驟,是瞭解如何使用 Batch 執行目前透過 Cloud Life Sciences 管道執行的工作負載。

如要瞭解如何在 Batch 上執行 Cloud Life Sciences 工作負載,請參閱下列各節:

總覽

Cloud Life Sciences 管道會說明要執行的動作 (容器) 序列,以及執行容器的環境。

Batch 工作會說明一或多個工作陣列,以及執行這些工作的環境。您可將工作的工作負載定義為一或多個要執行的可執行項目 (容器和/或指令碼) 序列。工作中的每個工作都代表可執行項目序列的一次執行作業。

Cloud Life Sciences 管道可以表示為單一工作 Batch 作業。

舉例來說,下列範例說明簡單的 Cloud Life Sciences 管道,以及對應的 Batch 工作:

Cloud Life Sciences 管道 批次工作
  {
    "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 可自動排定工作負載的多項執行作業。您可定義工作數,指出要執行工作可執行序列的次數。如果工作有多項任務,請在可執行項目中參照任務的索引,指定每次執行作業的差異。此外,您也可以設定工作任務的相對時間表,例如是否允許並行執行多項工作,或要求依序一次執行一項工作。Batch 會管理工作排程:工作完成後,系統會自動啟動下一個工作 (如有)。

例如,請參閱下列 Batch 工作。這個範例工作有 100 項工作,會在 10 個 Compute Engine 虛擬機器 (VM) 執行個體上執行,因此在任何時間點,大約會有 10 項工作平行執行。在本範例工作中,每項工作只會執行一個可執行的項目:列印訊息和工作索引的指令碼,該索引是由 BATCH_TASK_INDEX 預先定義的環境變數所定義。

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

如果工作流程涉及建立及監控多個類似的 Cloud Life Sciences 管道,有時可利用 Batch 內建的排程功能簡化流程。

基本操作

本節說明 Cloud Life Sciences 與 Batch 的基本作業。

下表摘要說明 Cloud Life Sciences 和 Batch 的基本作業選項。

基本操作 Cloud Life Sciences 選項 批次選項
執行工作負載。
  • 執行管道。
  • 建立及執行工作。
查看所有工作負載。
  • 列出長時間執行的作業。
  • 查看工作清單。
查看工作負載的詳細資料和狀態。
  • 取得長時間執行的作業詳細資料。
  • 輪詢長時間執行的作業。
  • 查看工作詳細資料。
  • 查看工作清單。
  • 查看工作詳細資料。
停止並移除工作負載。
  • 取消長時間執行的作業。
  • 刪除 (並取消) 工作。
  • 查看工作刪除要求的狀態。

Cloud Life Sciences 和 Batch 的基本作業有幾項主要差異。

首先,長時間執行的作業資源在 Batch 中的角色,與在 Cloud Life Sciences 中的角色不同。Cloud Life Sciences 中的長時間執行作業資源 (LRO) 是用於列出及查看管道的主要資源。不過,Batch 和其他 API 中的長期執行作業資源 Google Cloud ,僅用於監控需要長時間才能完成的要求狀態。具體來說,在 Batch 中,只有刪除作業的要求會傳回長時間執行的作業資源。如要進一步瞭解 Batch 的長時間執行作業資源,請參閱 Batch API 參考說明文件中的 projects.locations.operations REST 資源。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:長時間執行作業的 ID,這是要求執行管道時傳回的 ID。
  • 批次範例 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。舉例來說,如果工作群組包含四項工作,則索引為 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:長時間執行作業的 ID,這是要求執行管道時傳回的 ID。
  • 批次範例 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:長時間執行的作業 ID,這是刪除作業的要求傳回的 ID。

IAM 角色和權限

本節概述 Cloud Life Sciences 和 Batch 的身分與存取權管理角色和權限差異。如要進一步瞭解任何角色及其權限,請參閱 IAM 基本和預先定義的角色參考資料

下表說明 Cloud Life Sciences 使用者需要的預先定義角色和權限。

Cloud Life Sciences 角色 權限

下列任一項目:

  • 專案的 Cloud Life Sciences 管理員 (roles/lifesciences.admin)
  • 專案的「Cloud Life Sciences 編輯者」 (roles/lifesciences.editor)
  • 專案中的「Cloud Life Sciences Workflows Runner」 (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 的必要條件」。

批次指派使用者角色 權限
專案的「批次工作編輯者」 (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
專案的批次工作檢視者 (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
服務帳戶的批次角色 權限
專案的「批次工作代理程式回報者」 (roles/batch.agentReporter)
  • batch.states.report

對應功能

下表說明 Cloud Life Sciences 的功能、Batch 的對等功能,以及兩者之間的差異。

每個功能都以說明和 JSON 語法表示。 透過 API 存取 Batch 時,或透過 Google Cloud CLI 指定 JSON 設定檔時,您可以使用 JSON 語法。不過請注意,您也可以透過其他方法使用 Batch 功能,例如透過 Google Cloud 控制台欄位、gcloud CLI 旗標和用戶端程式庫,詳情請參閱 Batch 說明文件

如要進一步瞭解各項功能及其 JSON 語法,請參閱下列內容:

Cloud Life Sciences 功能 批次功能 詳細資料
管道 (pipeline) 工作 (job) 和工作中的任務 (taskGroups[])

Batch 工作是由一或多個任務組成的陣列,每個任務都會執行所有相同的可執行檔。Cloud Life Sciences 管道類似於只有一項工作的 Batch 工作。不過,Cloud Life Sciences 沒有 (具有多項) 工作任務的對等概念,這有點類似管道的重複作業。

如要進一步瞭解工作和工作,請參閱 Batch 總覽

管道的動作 (actions[]) 工作任務的可執行項目 (runnables[])

Cloud Life Sciences 動作會說明容器,但 Batch 可執行檔可以包含容器或指令碼。

動作的憑證 (credentials)

可執行的容器:

在 Cloud Life Sciences 中,動作的憑證必須是 Cloud Key Management Service 加密的字典,其中包含使用者名稱和密碼鍵/值組合。

在 Batch 中,容器可執行檔的使用者名稱和密碼位於不同欄位。這兩個欄位都可以指定純文字,或 Secret Manager 密鑰的名稱。

動作:

環境:

可能環境:

Cloud Life Sciences 可讓您指定動作的環境變數,格式為純文字或加密字典。在 Batch 中,這類似於讓可執行檔 (runnables[] 中的 environment 欄位) 的環境包含格式為純文字 (variables) 或加密字典 (encryptedVariables) 的變數。

不過,Batch 也提供更多指定環境變數的選項:

  • 除了以純文字或加密字典指定變數,您也可以使用密碼變數 (secretVariables) Secret Manager Secret 指定變數。
  • 除了為可執行的項目指定環境變數,您也可以使用 taskSpec 中的 environment 欄位,為所有可執行的項目指定環境變數。
  • 除了為每個工作指定具有相同值的環境變數,您也可以使用 taskGroups[] 中的 taskEnvironments[] 欄位,為每個工作指定具有不同值的環境變數。

詳情請參閱「使用環境變數」。

要求執行管道的標籤 (要求主體中的 labels) 工作的標籤 (工作資源中的 labels)

與 Cloud Life Sciences 不同,Batch 不會在建立新工作的要求中加入標籤欄位。如要使用類似 Batch 的功能,最接近的選項是使用僅與工作相關聯的標籤。

Batch 有多種標籤 (labels 欄位),可在建立工作時使用。詳情請參閱「使用標籤整理資源」。

管道資源的區域 (regions[]) 和可用區 (zones[]) (resources) 職缺資源位置政策 (locationPolicy) 的允許位置 (allowedLocations)

在 Cloud Life Sciences 中,管道會在單一 VM 上執行,您可以指定所需的區域和/或可用區。

在 Batch 中,對應的選項是工作的允許位置,您可以將其定義為一或多個區域或可用區,並指定可建立工作 VM 的位置。單一 Batch 作業的所有 VM 都屬於特定區域中的單一代管執行個體群組 (MIG),但個別 VM 可能位於該區域的不同可用區。

請注意,職缺的允許地點欄位為選填,因為這與職缺地點不同。與工作位置不同,允許的位置不會影響用於建立 Batch 工作和儲存工作中繼資料的位置。詳情請參閱「批次位置」。

管道的資源 (resources):

作業的資源政策 (allocationPolicy):

在 Cloud Life Sciences 中,您可以設定管道執行的 VM (一個)。

在 Batch 中,您可以在工作的資源分配政策 (allocationPolicy) 欄位中,使用相同的 VM 選項:

  • VM 的服務帳戶、標籤和網路設定會定義在專屬欄位中。
  • VM 欄位 (instances) 可直接定義,也可以使用執行個體範本定義,其中包含機器類型、允許的最低 CPU 平台、開機磁碟和任何其他附加磁碟,以及任何 GPU 和 GPU 驅動程式的設定選項。

動作:

可執行項目:

Cloud Life Sciences 的各種便利旗標在 Batch 中都對應相同功能,但這些旗標是為每個可執行項目 (可包含指令碼或容器) 指定,而不是為每個動作 (容器) 指定。

動作:

可執行容器的選項 (options)

Batch 支援這些 Cloud Life Sciences 選項 (和其他選項),方法是透過容器可執行檔的選項欄位 (options)。將選項欄位設為您希望 Batch 附加至 docker run 指令的任何標記,例如 -P --pid mynamespace -p 22:22

動作:

沒有對應項目

Batch 會預先擷取映像檔,並根據工作記錄政策 (logsPolicy),以相同方式處理所有可執行項目的輸出內容。

禁止對外網路 (blockExternalNetwork) 的動作 封鎖容器可執行檔的外部網路 (blockExternalNetwork) 選項

Cloud Life Sciences 的選項可封鎖動作的外部網路,與 Batch 的選項類似,可封鎖容器的外部網路。

Batch 還有許多其他網路選項,例如封鎖所有工作 VM 的外部網路。詳情請參閱批次網路總覽

掛接 (mounts[]) 動作 所有可執行檔的磁碟區 (volumes[] in taskSpec) 和容器的磁碟區選項 (volumes[] in container)

在 Batch 中,您可以使用 taskSpec 中的 volumes[] 欄位,定義工作的磁碟區及其掛接路徑。Batch 會將儲存空間磁碟區掛接至工作的 VM,且所有工作的可執行檔 (指令碼或容器) 都能存取儲存空間磁碟區。VM 執行任何工作或可執行檔之前,會先完成這項掛接作業。

此外,Batch 支援在容器可執行檔上使用 container 中的 volumes[] 欄位,明確指定磁碟區選項。這些掛接選項會以 docker run 指令 --volume 標記的選項形式傳遞至容器,例如 [ "/etc:/etc", "/foo:/bar" ] 值會轉換為容器上的 docker run --volume /etc:/etc --volume /foo:/bar 指令。

如要進一步瞭解如何搭配 Batch 使用儲存空間磁碟區,請參閱「建立及執行使用儲存空間磁碟區的作業」。

啟用動作的 Cloud Storage FUSE (enableFuse) 選項 沒有對應項目

Batch 會處理您為工作指定的任何儲存空間磁碟區 (例如 Cloud Storage bucket) 的掛接作業。因此,您不會為 Batch 啟用任何掛接工具 (例如 Cloud Storage FUSE),但可以使用 mountOptions[] 欄位,選擇性地為儲存空間磁碟區指定掛接選項。

如要進一步瞭解如何搭配使用 Cloud Storage bucket 與 Batch,請參閱「建立及執行使用儲存空間磁碟區的作業」。

用於執行管道要求的 Pub/Sub 主題 (pubSubTopic)

工作的通知設定 (notifications[]):

與 Cloud Life Sciences 相比,Batch 可讓您更進一步自訂狀態更新。舉例來說,當個別工作變更狀態時,或只有在整體工作變更狀態時,Batch 使用者都可以在 Pub/Sub 主題上收到通知。

工作流程服務

如果您使用 Cloud Life Sciences 的工作流程服務,遷移程序也包括設定工作流程服務,使其能與 Batch 搭配運作。本節將摘要說明可搭配 Batch 使用的工作流程服務。

Batch 支援 Workflows,這是 Google Cloud的工作流程服務。如要搭配使用 Workflows 和 Batch,請參閱「使用 Workflows 執行 Batch 工作」。否則,下表說明您可能用於 Cloud Life Sciences 的其他工作流程服務,這些服務也適用於 Batch。下表列出使用 Batch 而非 Cloud Life Sciences 時,各工作流程服務的主要差異,以及如何進一步瞭解如何搭配使用各項服務與 Batch。

工作流程服務 主要差異 詳細資料
Cromwell

如要改用 Batch API,並搭配 v2beta 版 Cloud Life Sciences API 使用 Cromwell 設定檔,請進行下列變更:

  1. actor-factory 欄位中,將 cromwell.backend.google.pipelines.v2beta.PipelinesApiLifecycleActorFactory 替換為 cromwell.backend.google.batch.GcpBatchLifecycleActorFactory
  2. 移除 genomics.endpoint-url 欄位。
  3. 產生新的設定檔。
如要進一步瞭解如何搭配使用 Batch 和 Cromwell,請參閱 Batch 適用的 Cromwell 說明文件Batch 適用的 Cromwell 教學課程
dsub

如要改用 Batch 執行 Cloud Life Sciences 的 dsub 管道,請進行下列變更:

  • provider 欄位中,將 google-cls-v2 替換為 google-batch
如要進一步瞭解如何搭配使用 Batch 與 dsub,請參閱 Batch 的 dsub 說明文件
Nextflow

如要改用 Batch 的 Cloud Life Sciences Nextflow 設定檔,請進行下列變更:

  1. executor 欄位中,將 google-lifesciences 替換為 google-batch
  2. 將所有 config 前置字串替換為 google.batchgoogle.lifeScience
如要進一步瞭解如何搭配使用 Batch 與 Nextflow,請參閱 Batch 教學課程Nextflow 教學課程。如要進一步瞭解設定選項,請參閱 Nextflow 說明文件
Snakemake

如要使用 Snakemake 管道搭配 Batch API,透過 v2beta 版 Cloud Life Sciences API 執行作業,請進行下列變更:

  1. 請確認您使用的是 Snakemake 8 以上版本。詳情請參閱「在 Snakemake 版本之間遷移」。
  2. snakemake 指令進行下列變更:

    • --google-lifesciences 旗標換成 --executor googlebatch 旗標。
    • 將所有含有 --google-lifesciences- 前置字串的額外旗標,改為使用 --googlebatch- 前置字串。
如要進一步瞭解如何搭配使用 Batch 和 Snakemake,請參閱 Batch 的 Snakemake 說明文件

後續步驟

  • 如要為新使用者和專案設定 Batch,請參閱「開始使用」。
  • 如要瞭解如何使用 Batch 執行工作負載,請參閱建立工作