作业创建和执行概览

本文档介绍了作业的执行过程和创建选项。 借助批量作业,您可以在 Google Cloud 控制台上运行批处理工作负载 Google Cloud了解作业的组成部分和 使用 Batch 的前提条件,请参阅 Batch 使用入门

作业创建和执行的工作原理

要使用 Batch,您需要创建一个作业,指定 您的工作负载及其要求 并自动运行

详细介绍了作业创建和执行的工作原理 :

作业生命周期

本部分介绍作业的生命周期及其从创建开始所执行的任务 删除。

对于要在 Batch 上运行的每个工作负载,您需要完成 以下基本流程:

  1. 创建作业:通过指定 作业的可运行对象、任务和任何其他要求有关 创建作业的步骤 本文档中的作业创建选项部分。
  2. 对作业进行监控和问题排查:完成作业创建后, 自动排队、安排时间,并在指定的 资源。您可以查看已创建作业或其任何任务的详细信息, 查看当前状态。在作业运行或完成后,您还可以 使用日志监控和分析作业。如果作业失败,您可以 使用任何错误消息、状态事件或日志来诊断问题 然后再重新创建作业
  3. 删除或导出作业:系统会自动创建作业的日志 根据 Cloud Logging 保留政策保留和删除。 作业的其他信息仍可在 Batch 中使用。 直至您或 Google Cloud 将其删除 Google Cloud 会在作业运行完成 60 天后自动删除作业。 在此之前,您可以根据需要自行删除作业,或者 并在删除作业前将其导出。

创建作业后,它将经历以下状态:

  1. 已加入队列 (QUEUED):作业请求已被接受并正在等待 在队列中。该作业将保留在队列中,直到所需的资源为止 且之前的作业已经过评估。
  2. 已安排 (SCHEDULED):已从队列中选择作业 开始运行,系统正在分配资源。
  3. 正在运行 (RUNNING):已为作业创建资源 其任务就可以开始运行了

    作业运行时,会逐步完成 以下状态:

    1. 待处理 (PENDING):任务正在等待虚拟机在其上运行。
    2. 已分配 (ASSIGNED):已为任务分配一个虚拟机以在其上运行。
    3. 正在运行 (RUNNING):任务正在虚拟机上运行。
    4. 任务完成时处于以下状态之一: <ph type="x-smartling-placeholder">
        </ph>
      • 成功 (SUCCEEDED):任务之所以成功,是因为其 成功运行(返回一个 退出代码为零) 或使用 忽略退出状态 (ignoreExitStatus) 字段
      • 失败 (FAILED):任务失败,因为至少有一项 关键可运行对象失败(返回非零退出代码)。
  4. 作业会在以下状态之一完成:

    • 成功 (SUCCEEDED):此作业的所有任务 成功。
    • 失败 (FAILED):该作业中至少有一个任务失败。

如需了解详情,请参阅 作业状态任务状态

作业排队和调度

一般来说,如果存在此类任务, 且只需要一些通用资源。对于示例作业 通常非常小 并使用最少的资源 几分钟。

具体而言,作业完成排队和调度所需的时间各有不同 在不同时间、不同工作岗位,具体取决于以下因素:

  • 作业资源可用性: 在允许的 位置。

    首先,如果您恰好指定了任何资源 那么作业将失败,并且 可用区可用性错误

    其次,如果作业存在任何延迟, 与当前需求相比,所需的资源容量偏低 资源可用性错误。 因此,如果您所需的资源较少,则您的作业可能会更快运行。 不会限制运行作业 同一区域的多个可用区中

    有关作业资源的更多信息,请参阅 Job execution(作业执行): 本文档。如需详细了解 可以为 Batch 作业及其资源指定的值,请参阅 地点页面。

  • 作业优先级:作业相对于 项目中的其他作业。

    您可以视需要指定作业的优先级,方法是将 gcloud CLI 的 --priority 标志priority JSON 字段。 您可以将作业的优先级定义为 0(最低优先级)和 99(最高优先级)。将较高值 优先级有助于让作业早于项目中优先级较低的作业运行。

    如果不配置作业的优先级,则默认使用 优先级最低,0。如果两个已加入队列的作业具有相同的优先级,则该作业 最先创建的提案具有较高的优先级

  • 配额和限制:您的项目拥有的阈值 Google Cloud 资源和请求。

    如果作业超出上限或项目配额,便无法运行 所需的资源或请求出现这种情况时 Batch 可能会延迟作业并在稍后重试,或者 失败并显示相关错误。

    为防止作业出现延迟和错误,您可以创建 遵守所有相关限制,并确保您的项目具有足够的 相关配额如需了解详情,请参阅 批量配额和限制

作业执行

执行作业所需的时间可能会因任务调度而异 以及作业的资源

任务调度

作业运行时,会根据 时间安排政策 (schedulingPolicy) 字段 这允许您指定以下选项之一:

  • 尽快 (AS_SOON_AS_POSSIBLE)(默认): 任务在资源可用后立即运行,并且可以并行运行。 一次运行的任务数量取决于每个虚拟机的并行任务数量 作业资源和其他配置选项所允许的 请参阅本文档的作业资源部分。
  • 顺序 (IN_ORDER):任务以递增的方式一次运行一个。 索引顺序。

作业资源

每个批量作业都在区域级代管式实例组 (MIG) 上运行, 它是指由一个或多个 Compute Engine 虚拟机 (VM) 实例,分别位于 包含的区域每个虚拟机都有专用硬件 CPU 核心(具体是指虚拟 CPU (vCPU)) 和内存,它们会影响应用的性能 以及启动磁盘,后者用于存储 系统 (OS) 映像以及运行作业的说明。

在作业运行时,Batch 会自动创建并 删除符合您的规范的资源。 创建作业时,您可以通过指定以下内容来配置其资源:

  • 您必须指定计算资源(vCPU、内存和 (如果需要)额外的启动磁盘存储空间 - 运行每项任务都需要 除非默认值足够有关详情,请参阅 每个任务的计算资源 (computeResource) 字段子字段

  • 或者,您还可以指定要使用的虚拟机类型 例如 GPU 和存储卷如果您 指定这些选项,Batch 会选择 虚拟机,不添加任何其他资源。有关详情,请参阅 虚拟机实例资源 (instances[]) 字段子字段

可同时运行的虚拟机数量和任务数量 根据任务调度和 指定的硬件要求如果指定某个作业的任务运行 IN_ORDER 时,该作业有一个虚拟机,并且一次仅运行一个任务。否则 如果作业的任务运行 AS_SOON_AS_POSSIBLE,则可以估算 虚拟机数量和同时执行的任务数量的计算公式如下:

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

此公式具有以下值:

作业创建选项

创建和运行基本作业一文介绍了 包括如何使用脚本或 以及如何配置预定义和自定义环境变量。

了解了创造就业机会的基础知识后,不妨考虑 使用以下一个或多个其他配置选项的作业:

  • 控制对作业的访问权限:

  • 为作业配置其他选项:

    • 使用 MPI 库配置任务通信 介绍了如何使用相互依赖的任务来配置作业,这些任务可以 通过消息传递接口跨不同虚拟机相互传递 (MPI) 库。MPI 的常见应用场景是紧密耦合, 高性能计算 (HPC) 工作负载。

    • 自定义运行作业的资源:

      • 使用虚拟机实例模板定义作业资源 介绍了如何指定 Compute Engine 虚拟机模板 您需要为其指定资源

      • 使用 GPU 执行作业中介绍了如何定义 使用一个或多个图形处理单元 (GPU) 的作业。常见用途 使用 GPU 的作业包括密集型数据处理或机器 机器学习 (ML) 工作负载。

      • 将存储卷用于作业说明 如何定义可以访问一个或多个外部存储卷的作业。 存储选项包括新的或现有的永久性磁盘、新的本地 SSD 和现有的网络文件系统 (NFS),例如 Filestore 文件共享。

      • 虚拟机操作系统环境概览 简要介绍何时以及如何自定义 作业的虚拟机操作系统 (OS) 环境,包括作业的 虚拟机操作系统映像和启动磁盘。

    • 优化作业的各个方面:

      • 改善监控和分析:

      • 自动重试任务 解释了在全部或 指定的失败。自动重试有助于减少 问题排查和整体运行时间 (出现临时错误的作业)。 例如,对在 Spot 虚拟机,提供大幅折扣, 并非始终可用,并且可以随时被抢占。

      • 共置虚拟机以缩短延迟时间 解释了如何通过 要求虚拟机物理上彼此靠近。 这种性能优势对于 会频繁地在虚拟机之间进行网络通信, 使用 MPI 库进行通信。

      • 使用虚拟机预留确保资源可用性 解释了如何配置一个作业, 可以在预留的虚拟机上运行使用预留 虚拟机可以帮助您最大限度地缩短作业的调度时间, 防止资源可用性错误,以及 优化成本。

      • 使用映像流式传输 解释了如何通过流式传输容器缩短作业启动时间 Artifact Registry 中的映像

  • 使用其他服务创建和运行作业:

后续步骤