从 Cloud Life Sciences 迁移到 Batch

本页介绍如何从命令行迁移到 Batch。 Cloud Life Sciences。

2023 年 7 月 17 日,Google Cloud 宣布,Cloud Life Sciences 已弃用我们将不再提供这项服务 在 Google Cloud 上迁移。不过,Batch 是 已全面推出,是一个支持所有用例的全面后续版本 适用于 Cloud Life Sciences 的团队。

详细了解 BatchCloud Life Sciences产品发布 阶段

Cloud Life Sciences 与 Batch

从 Cloud Life Sciences 迁移到 Batch 主要介绍如何使用 Batch 来为当前运行的工作负载 Cloud Life Sciences 流水线。

了解如何执行 Cloud Life Sciences 工作负载,请参阅以下所有部分:

概览

Cloud Life Sciences 流水线 描述了要执行的一系列操作(容器)和环境 来运行容器

批量作业描述的是包含一个或多个任务的数组, 环境来执行这些任务。您可以将作业的工作负载定义为 要执行的一个或多个 runnable(容器和/或脚本)的序列。 作业的每个任务都代表其可运行项序列的一次执行。

Cloud Life Sciences 流水线可以表示为单任务批处理作业。

例如,以下示例介绍了一个简单的 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!"
              ]
            }
          }]
        }
      }]
    }
    

多任务批处理作业类似于复制的 Cloud Life Sciences 流水线。

与 Cloud Life Sciences 不同,Batch 可让您 自动安排工作负载的多次执行。 您需要指明要执行序列 通过定义任务数量来为作业运行可运行对象。当作业的 多个任务时,您可以指定希望每项执行不同的 在可运行对象中引用任务的索引。此外,您还可以 为作业的任务配置相对时间表,例如 是允许多个任务并行运行,还是需要多个任务 按顺序运行,一次一个。 Batch 管理作业任务的调度: 当一项任务完成后,该作业会自动启动下一个任务(如果有)。

例如,请参阅以下批量作业。本示例 作业包含 100 个任务,这些任务在 10 个 Compute Engine 虚拟机上 因此有大约 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 中的基本操作与 批处理。

下表总结了 Cloud Life Sciences 和 Batch。

基本操作 Cloud Life Sciences 选项 批处理选项
执行工作负载。
  • 运行流水线。
  • 创建和运行作业。
查看您的所有工作负载。
  • 列出长时间运行的操作。
  • 查看作业列表。
查看工作负载的详细信息和状态。
  • 获取长时间运行的操作的详细信息。
  • 轮询长时间运行的操作。
  • 查看任务详情。
  • 查看作业的任务列表。
  • 查看任务的详细信息。
停止和移除工作负载。
  • 取消长时间运行的操作。
  • 删除(和取消)作业。
  • 检查作业删除请求的状态。

Cloud Life Sciences 和 Batch 的基本操作 有一些关键区别

首先,长时间运行的操作资源 其在 Cloud Life Sciences 中执行的批处理操作。 Cloud Life Sciences 中的长时间运行的操作资源 (LRO) 是用于列出和查看流水线的主要资源。但是, Batch 和其他 Google Cloud API 中长时间运行的操作资源 仅用于监控需要很长时间 。具体而言,在 Batch 中 返回长时间运行的操作资源,即删除作业。 如需详细了解 Cloud Storage 的长时间运行的操作资源, 批处理,请参阅 projects.locations.operations REST 资源的批处理 API 参考文档。 Batch 不使用长时间运行的操作资源, 可以查看和删除的工作负载资源。

其次,查看 Batch 中的工作负载详情涉及 您可以查看任务 查看详细信息和状态但是,每个作业的任务 还有其详细信息和状态 查看作业的任务列表以及查看任务详情。

为了帮助您进一步了解 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: 由运行 流水线。
  • 批处理示例 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.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 角色和权限

本部分总结了 Identity and Access Management 的区别 使用 Cloud Life Sciences 的 批处理。如需详细了解任何角色 其权限,请参阅 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

下表介绍了部分预定义角色及其权限 。与 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,等效功能 并详细了解它们之间的差异。

每个特征由说明及其 JSON 语法表示。 在访问 通过 API 或在指定 JSON 配置时进行批处理 安装 Google Cloud CLI 但请注意,您也可以通过 其他方法,例如通过 Google Cloud 控制台字段、 gcloud CLI 和客户端库,具体说明请参阅 批处理文档

如需详细了解每个功能及其 JSON 语法,请参阅以下内容:

Cloud Life Sciences 特性 批量特征 详细信息
流水线 (pipeline) 作业 (job) 及其任务 (taskGroups[])

一个批量作业由包含一个或多个任务的数组组成 每个容器执行所有相同的可运行对象 Cloud Life Sciences 流水线与此类似 一个任务的批量作业。 不过,Cloud Life Sciences (具有多个任务的作业)没有等效概念, 有点像流水线的重复过程。

如需详细了解作业和任务,请参阅 Batch 概览

流水线的操作 (actions[]) 作业的任务的可运行对象 (runnables[])

Cloud Life Sciences 操作描述的是一个容器 批量可运行状态可包含容器或脚本。

操作的凭据 (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 不同 批次的请求中不包含标签字段 创建新作业。与批处理功能最相近的选项 使用仅与作业关联的标签。

批次包含多种类型的标签 (labels 字段)。 如需更多信息 请参阅使用标签整理资源

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

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

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

值得注意的是,您可以自行选择是否为某个职位指定允许的位置字段 因为它与作业的位置是分开的与任务的位置不同, 允许的位置不会影响用于创建 批量作业和存储作业元数据。 如需了解详情,请参阅批量位置

流水线资源 (resources):

用于作业的资源政策 (allocationPolicy):

在 Cloud Life Sciences 中,您可以配置 流水线。

在 Batch 中, 虚拟机的不同选项 作业的资源分配政策 (allocationPolicy):

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

触发以下操作:

Cloud Life Sciences 中的各种便捷标志 在 Batch 中是等效的 只不过是为每个可运行 (可以包含脚本或容器)来代替每个操作 (容器)。

触发以下操作:

选项 (options)

下列 Cloud Life Sciences 选项(及其他选项)受以下国家/地区支持: 通过选项字段 (options) 进行批处理 表示容器可运行将选项字段设置为 希望将 Batch 附加到 docker run 命令, 例如 -P --pid mynamespace -p 22:22

触发以下操作:

无对等项

Batch 预提取图片并处理 按照作业的 日志政策 (logsPolicy)。

用于为某项操作屏蔽外部网络 (blockExternalNetwork) 的选项 用于针对可运行的容器屏蔽外部网络 (blockExternalNetwork) 的选项

用于阻止外部网络访问的 Cloud Life Sciences 选项 与“批处理”选项相似 为容器配置网络

Batch 还有许多其他网络选项,例如 来为作业的所有虚拟机屏蔽外部网络如需更多信息 请参阅批量网络概览

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

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

此外,Batch 使用 container 中的 volumes[] 字段。这些装载选项 会作为 docker run 命令的 --volume 标志:适用于 例如,[ "/etc:/etc", "/foo:/bar" ] 值为 已转换为 docker run --volume /etc:/etc --volume /foo:/bar 命令 容器

如需详细了解如何将存储卷用于 批处理,请参阅创建和运行使用存储卷的作业

用于为操作启用 Cloud Storage FUSE (enableFuse) 的选项 无对等项

批处理装载所有存储卷 例如您为作业指定的 Cloud Storage 存储桶 因此,您不启用任何装载工具,如 Cloud Storage FUSE ;不过,您可以视需要指定 为存储卷提供装载选项 mountOptions[] 字段

如需详细了解如何将 Cloud Storage 存储分区用于 批处理,请参阅创建和运行使用存储卷的作业

用于运行流水线请求的 Pub/Sub 主题 (pubSubTopic)

获取作业的通知配置 (notifications[]):

与 Batch 相比,使用 Batch 可以更好地自定义状态更新。 Cloud Life Sciences。例如,Batch 用户可以 出现 Pub/Sub 情况时通知我: 更改状态,或者仅在整个作业更改状态时更改。

工作流服务

如果您将工作流服务与 Cloud Life Sciences 结合使用,那么您的 迁移过程还涉及配置工作流服务 。本部分总结了 可与 Batch 搭配使用。

Batch 支持 Workflows, Google Cloud 提供的工作流服务。 如果要将 Workflows 与 Batch 搭配使用,请参阅 使用 Workflows 运行批量作业。 下表介绍了其他工作流服务。 Cloud Life Sciences 可能使用的模板 批处理。下表列出了使用各个 使用 Batch(而不是 Cloud Life Sciences)的工作流服务 以及在何处可以详细了解如何使用各项���务 。

工作流服务 主要区别 详细信息
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 搭配使用,请参阅 适用于 Batch 的 Cromwell 文档适用于 Batch 的 Cromwell 教程
dsub

为 Cloud Life Sciences 运行 dsub 流水线 请改用 Batch,并进行以下更改:

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

要使用 Nextflow 配置文件 Cloud Life Sciences 与 Batch, 进行以下更改:

  1. 对于 executor 字段,将 google-lifesciences 替换为 google-batch
  2. 对于任何 config 前缀,请将 google.lifeScience 替换为 google.batch
如需详细了解如何将 Batch 与 Nextflow 搭配使用,请参阅 批量教程Nextflow 教程 有关配置选项的详细信息,请参阅 Nextflow 文档
Snakemake

为 v2beta Cloud Life Sciences API 使用 Snakemake 流水线 改为使用 Batch API,请执行以下操作: 更改:

  1. 确保您使用的是 Snakemake 8 或更高版本。如需了解详情,请参阅 在 Snakemake 版本之间迁移
  2. snakemake 命令进行以下更改:

    • --google-lifesciences 标志替换为 --executor googlebatch 标志。
    • 替换任何带有 --google-lifesciences- 前缀使用 --googlebatch- 前缀。
如需详细了解如何将 Batch 与 Snakemake 搭配使用, 请参阅 Batch 的 Snakemake 文档。

后续步骤

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