從 Cloud Life Sciences 遷移至 Batch

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

Google Cloud 於 2023 年 7 月 17 日宣布,已在 Beta 版測試的 Cloud Life Sciences 已淘汰。這項服務將於 2025 年 7 月 8 日後在 Google Cloud 停用。不過,Batch 已正式推出,並且是全面性的後繼產品,可支援 Cloud Life Sciences 的所有用途。

進一步瞭解 BatchCloud Life Sciences產品推出階段

Cloud Life Sciences 與批次

從 Cloud Life Sciences 遷移至 Batch 時,您需要瞭解如何使用 Batch 執行目前執行的 Cloud Life Sciences 管道工作負載。

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

總覽

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

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

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

例如,下列範例說明簡單的 Cloud Life Sciences 管道及其等同的批次工作:

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 可讓您自動安排工作負載的多個執行作業。您可以透過定義工作任務的 runnable 序列次數,指出要執行的次數。如果工作包含多項工作,您可以透過在可執行項目中參照工作索引,指定每項執行作業的差異。此外,您還可以為工作任務設定相對排程,例如是否允許多個工作並行執行,或是要求工作以順序依序執行。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 中的長時間運作作業資源 (LROs) 是用來列出及查看管道的要用資源。不過,Batch 和其他 API Google Cloud 中的長時間執行作業資源,只用於監控需要長時間才能完成的作業狀態。具體來說,在批次中,只有刪除作業的請求會傳回長時間執行的作業資源。如要進一步瞭解 Batch 的長時間運作作業資源,請參閱 Batch API 參考資料:projects.locations.operations REST 資源。Batch 不使用長時間執行的作業資源,而是提供工作資源,供您查看及刪除工作負載。

其次,在 Batch 中查看工作負載詳細資料時,所涉及的作業與 Cloud Life Sciences 不同。您可以查看工作,瞭解工作詳細資料和狀態。不過,每項工作任務也有各自的詳細資料和狀態,您可以查看工作任務清單和任務詳細資料,瞭解相關資訊。

為協助您進一步瞭解 Cloud Life Sciences 與批次處理的基礎作業,以下各節將提供一些這些基本作業的 Google Cloud CLI 指令和 API 要求路徑範例。

gcloud CLI 指令範例

在 gcloud CLI 中,Cloud Life Sciences 指令的開頭為 gcloud beta lifesciences,而批次指令的開頭為 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,由執行管道的要求傳回。
  • 批次處理的 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,由執行管道的要求傳回。
  • 批次 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,由刪除作業要求傳回。

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 工作流程執行者 (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 規定,請參閱「批次作業的先決條件」。

為使用者批次指派角色 權限
專案中的批次工作編輯器 (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[])

批次工作由一或多個任務的陣列組成,每個任務都會執行所有相同的 runnable。Cloud Life Sciences 管道類似於只有一個工作項的批次作業。不過,Cloud Life Sciences 並沒有類似的概念,用於處理 (含有多個工作) 任務,這類任務有點像管道的重複作業。

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

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

Cloud Life Sciences 動作會描述容器,但 Batch 可執行項目可以包含容器或指令碼。

動作的憑證 (credentials)

容器可執行項目:

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

在 Batch 中,容器可執行項目的使用者名稱和密碼會分別位於不同的欄位。您可以使用純文字或 Secret Manager 密鑰名稱指定任一欄位。

針對動作:

環境:

可能的環境:

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

不過,Batch 也有更多選項可用來指定環境變數:

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

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

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

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

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

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

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

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

值得注意的是,指定工作允許的位置欄位並非必要,因為它與工作的位置是分開的。與工作位置不同,允許的位置不會影響用於建立批次工作和儲存工作中繼資料的位置。詳情請參閱「批次位置」。

管道資源 (resources):

針對工作資源政策 (allocationPolicy):

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

在 Batch 中,工作資源分配政策 (allocationPolicy) 的欄位會提供相同的 VM 選項:

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

針對動作:

針對可執行項目:

在 Batch 中,這些來自 Cloud Life Sciences 的各種便利標記功能相當於 Batch 中的功能,只是這些標記是針對每個可執行項目 (可包含指令碼或容器) 而非每個動作 (容器) 指定。

針對動作:

容器可執行項目的選項 (options)

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

針對動作:

沒有對應項目

批次預先擷取圖片,並根據工作記錄政策 (logsPolicy) 處理所有可執行項目的輸出內容。

為動作封鎖外部網路的選項 (blockExternalNetwork) 為容器可執行項目封鎖外部網路 (blockExternalNetwork) 的選項

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

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

動作的掛載點 (mounts[]) 所有可執行項目的磁碟區 (taskSpec 中的 volumes[]) 和容器的磁碟區選項 (container 中的 volumes[])

在 Batch 中,您可以使用 taskSpec 中的 volumes[] 欄位定義工作磁碟區及其掛接路徑。批次掛載儲存體磁碟區至工作 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 值區) 掛接作業。因此,您不需要啟用任何掛接工具 (例如 Batch 的 Cloud Storage FUSE);不過,您可以選擇使用 mountOptions[] 欄位,為儲存體磁碟區指定掛接選項。

如要進一步瞭解如何在 Batch 中使用 Cloud Storage 值區,請參閱「建立及執行使用儲存體積的作業」。

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

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

相較於 Cloud Life Sciences,批次處理功能可讓您更進一步自訂狀態更新。舉例來說,當個別工作變更狀態,或整體工作變更狀態時,Batch 使用者就能收到 Pub/Sub 主題通知。

工作流程服務

如果您使用與 Cloud Life Sciences 搭配使用的 workflow 服務,遷移程序也必須設定 workflow 服務,以便與 Batch 搭配運作。本節將概略說明可與 Batch 搭配使用的 workflow 服務。

Batch 支援工作流程,這是來自 Google Cloud的工作流程服務。如要將 Workflows 與 Batch 搭配使用,請參閱「使用 Workflows 執行 Batch 工作」。否則,下表說明您可能會用於 Cloud Life Sciences 的其他工作流程服務,這些服務也可與 Batch 搭配使用。本表列出將每項工作流程服務與 Batch 搭配使用 (而非 Cloud Life Sciences) 的主要差異,並詳細說明如何進一步瞭解如何搭配使用 Batch 和每項服務。

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

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

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

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

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

如要改為使用 Nextflow 設定檔搭配 Batch 執行 Cloud Life Sciences,請進行下列變更:

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

如要改為使用 Batch API 為 v2beta Cloud Life Sciences API 使用 Snakemake 管道,請進行下列變更:

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

    • --google-lifesciences 標記取代為 --executor googlebatch 標記。
    • 請將任何具有 --google-lifesciences- 前置字串的其他旗標,改為使用 --googlebatch- 前置字串。
如要進一步瞭解如何搭配使用 Batch 和 Snakemake,請參閱 Batch 的 Snakemake 說明文件

後續步驟

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