从 Cloud Life Sciences 迁移到批处理

本页面介绍了如何从 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 会管理作业的任务调度:当某个任务完成时,作业会自动启动下一个任务(如果有)。

例如,请参阅以下批处理作业。此示例作业有 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 和其他 Google Cloud API 中的长时间运行的操作资源仅用于监控需要很长时间才能完成的请求的状态。具体而言,在 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:长时间运行的操作的标识符,由运行流水线的请求返回。
  • 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:长时间运行的操作的标识符,由运行流水线的请求返回。
  • 批量 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 Admin (roles/lifesciences.admin)
  • 项目的 Cloud Life Sciences Editor (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 Viewer (roles/lifesciences.viewer)
  • lifesciences.operations.get
  • lifesciences.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

下表介绍了 Batch 的一些预定义角色及其权限。与 Cloud Life Sciences 不同,Batch 要求您向用户和服务账号授予作业权限。如需详细了解 IAM 要求,请参阅 Batch 的前提条件

用户的批量角色 权限
项目的 Batch Job Editor (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 Job Viewer (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
作业的服务账号的 Service Account User (roles/iam.serviceAccountUser) 角色
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
服务账号的批量角色 权限
项目的 Batch Agent Reporter (roles/batch.agentReporter) 角色
  • batch.states.report

相应功能

下表介绍了 Cloud Life Sciences 的功能、Batch 的等效功能,以及两者之间的差异详情。

每项功能都通过说明及其 JSON 语法来表示。通过 API 访问 Batch 时,或者通过 Google Cloud CLI 指定 JSON 配置文件时,您可以使用 JSON 语法。不过,请注意,您还可以通过其他方法(例如通过 Google Cloud 控制台字段、标志 gcloud CLI 和客户端库)使用 Batch 功能,这些方法在 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 Secret 的名称进行指定。

对于操作:

对于环境:

可能的环境:

Cloud Life Sciences 可让您指定以纯文本格式或加密字典格式设置的操作环境变量。 在 Batch 中,这类似于让可运行对象(runnables[] 中的 environment 字段)的环境包含格式为纯文本 (variables) 或加密字典 (encryptedVariables) 的变量。

不过,Batch 还提供了更多用于指定环境变量的选项:

  • 除了将变量指定为纯文本或加密的字典之外,您还可以使用 Secret Manager Secret 来指定变量,方法是使用 Secret 变量 (secretVariables)。
  • 除了为可运行对象指定环境变量之外,您还可以通过在 taskSpec 中使用 environment 字段来为所有可运行对象指定环境变量。
  • 除了指定一个对每个任务具有相同值的环境变量之外,您还可以使用 taskGroups[] 中的 taskEnvironments[] 字段指定一个对每个任务具有不同值的环境变量。

如需了解详情,请参阅使用环境变量

运行流水线的请求的标签(请求正文中的 labels 作业的标签(作业资源中的 labels

与 Cloud Life Sciences 不同,Batch 在创建新作业的请求中不包含标签字段。对于 Batch,最接近的选项是使用仅与作业关联的标签。

批次具有多种类型的标签(labels 字段),您可以在创建作业时使用这些标签。 如需了解详情,请参阅使用标签整理资源

流水线资源的区域 (regions[]) 和可用区 (zones[]) (resources) 作业的资源位置政策 (locationPolicy) 的允许位置 (allowedLocations)

在 Cloud Life Sciences 中,流水线在单个虚拟机上执行,您可以为该虚拟机指定所需的区域和/或可用区。

在 Batch 中,等效选项是作业的允许位置,您可以将其定义为一个或多个区域或可用区,并指定作业的虚拟机可以在何处创建。 单个 Batch 作业的所有虚拟机都属于一个代管式实例组 (MIG),该 MIG 位于特定区域中;不过,各个虚拟机可能位于该区域的不同可用区中。

值得注意的是,指定作业的“允许的地点”字段是可选的,因为它与作业的地点是分开的。与作业的位置不同,允许的位置不会影响用于创建批处理作业和存储作业元数据的位置。 如需了解详情,请参阅批次位置

对于流水线的资源 (resources):

作业的资源政策 (allocationPolicy):

在 Cloud Life Sciences 中,您可以配置流水线运行所用的(一个)虚拟机。

在 Batch 中,虚拟机的相同选项可在作业的资源分配政策 (allocationPolicy) 的字段中使用:

  • 虚拟机的服务账号、标签和网络配置在其专用字段中定义。
  • 虚拟机字段 (instances)(您可以直接定义该字段,也可以使用实例模板来定义)包含机器类型、允许的最低 CPU 平台、启动磁盘和任何其他连接的磁盘,以及任何 GPU 和 GPU 驱动程序的配置选项。

对于操作:

对于可运行对象:

Cloud Life Sciences 中的这些各种便利标志在 Batch 中是等效的,只不过它们是针对每个可运行对象(可以包含脚本或容器)而不是针对每个操作(容器)指定的。

对于操作:

容器可运行对象的选项 (options)

Batch 通过容器可运行对象的 options 字段 (options) 支持这些 Cloud Life Sciences 选项(以及其他选项)。将 options 字段设置为您希望 Batch 附加到 docker run 命令的任何标志,例如 -P --pid mynamespace -p 22:22

对于操作:

无对等项

根据作业的日志政策 (logsPolicy),批量预提取映像并以相同方式处理所有可运行对象的输出。

用于阻止外部网络 (blockExternalNetwork) 的操作选项 用于阻止容器可运行对象访问外部网络 (blockExternalNetwork) 的选项

Cloud Life Sciences 中用于阻止外部网络执行操作的选项与 Batch 中用于阻止外部网络访问容器的选项类似。

Batch 还有许多其他网络选项,例如阻止作业的所有虚拟机的外部网络。如需了解详情,请参阅批量联网概览

操作的装载 (mounts[]) 所有可运行对象的卷(volumes[],位于 taskSpec 中)和容器的卷选项(volumes[],位于 container 中)

在 Batch 中,您可以使用 taskSpec 中的 volumes[] 字段来定义作业的卷及其装载路径。Batch 会将存储卷装载到作业的虚拟机,并且作业的所有可运行对象(脚本或容器)都可以访问存储卷。此装载操作在虚拟机执行任何任务或可运行对象之前完成。

此外,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[] 字段为存储卷指定装载选项。

如需详细了解如何将 Cloud Storage 存储分区与 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 搭配使用。

Workflow 服务 主要区别 详细信息
Cromwell

如需使用 Cromwell 配置文件将 v2beta Cloud Life Sciences API 与 Batch API 搭配使用,请进行以下更改:

  1. 对于 actor-factory 字段,请将 cromwell.backend.google.pipelines.v2beta.PipelinesApiLifecycleActorFactory 替换为 cromwell.backend.google.batch.GcpBatchLifecycleActorFactory
  2. 移除 genomics.endpoint-url 字段。
  3. 生成新的配置文件。
如需详细了解如何将 Batch 与 Cromwell 搭配使用,请参阅 Cromwell 的 Batch 文档Cromwell 的 Batch 教程
dsub

如需使用 Batch 运行 Cloud Life Sciences 的 dsub 流水线,请进行以下更改:

  • 对于 provider 字段,请将 google-cls-v2 替换为 google-batch
如需详细了解如何将 Batch 与 dsub 搭配使用,请参阅 dsub 文档(针对 Batch)
Nextflow

如需改用 Nextflow 配置文件,将 Cloud Life Sciences 与 Batch 搭配使用,请进行以下更改:

  1. 对于 executor 字段,请将 google-lifesciences 替换为 google-batch
  2. 对于任何 config 前缀,请将 google.lifeScience 替换为 google.batch
如需详细了解如何将 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 搭配使用,请参阅 Snakemake 的 Batch 文档

后续步骤

  • 如需为新用户和项目配置 Batch,请参阅使用入门
  • 如需了解如何使用 Batch 执行工作负载,请参阅创建作业