AWS Batch 常见问题

一般信息

AWS Batch 是一系列批处理管理功能,能够让开发人员、科学家和工程师轻松高效地在 AWS 上运行成千上万个批处理计算作业。AWS Batch 可根据提交的批处理作业的卷和特定资源需求动态预置最佳的计算资源(如 CPU 或内存优化计算资源)数量和类型。借助 AWS Batch,您无需安装和管理批处理计算软件或服务器集群,从而使您能够集中精力分析结果和解决问题。AWS Batch 使用 Amazon ECSAmazon EKSAWS Fargate 计划、安排和执行您的批处理计算工作负载,并可选择使用竞价型实例。

批处理计算是指在一台或多台计算机上无需人工干预而执行一系列程序(“作业”)的流程。输入参数可通过脚本、命令行参数、控制文件或作业控制语言进行预定义。给定的批处理任务可能会取决于先前任务的完成情况或特定输入的可用性,从而使多项任务的排序和排程变得至关重要,并且与交互式处理不兼容。

  • 可将处理任务的时间转换到有更大或更加实惠的可用容量的时段。
  • 可避免计算资源闲置,而且无需频繁地进行人工干预和监管。
  • 可提高计算资源的使用率,从而提高效率。
  • 支持按优先级对任务排序,从而使资源分配与业务目标保持一致。

如果您希望 AWS Batch 处理来自 ECS 基础设施的完全抽象化的计算预置时,则应在 Fargate 上运行作业。如果您需要访问特定的实例配置(特定的处理器、GPU 或架构)或非常大的工作负载,则应在 ECS 上运行作业。如果您选择 Kubernetes 作为您的容器编排技术,则可以使用与 EKS 的批处理集成来标准化您的批处理工作负载。

根据您的用例,目前,Fargate 作业在初始扩展工作时能够更快启动,因为无需等待 EC2 实例或容器组启动。但是,对于较大的工作负载,EKS 或 ECS 实例可能更快,因为 Batch 会重用实例和容器镜像来运行后续作业。

当您希望 AWS Batch 处理来自 EC2 基础设施的完全抽象化的计算预置时,应在 Fargate 上运行作业。如果您需要访问特定的实例配置(特定的处理器、GPU 或架构)或非常大的工作负载,则应在 EC2 上运行作业。

根据您的用例,使用 EC2 或 Fargate 可能会更快地开始作业。Fargate 作业在初始扩展工作时能够更快地开始,因为无需等待 EC2 实例启动。但是,对于较大的工作负载,EC2 实例可能更快,因为 Batch 会重用实例和容器镜像来运行后续作业。

符合。您可以将 Fargate CE 设置为具有最大 vCPU,这是该 CE 中当前运行的所有作业的 vCPU 总量。当 vCPU 数量达到 CE 中的最大 vCPU 数量时,Batch 将开始在下一个 Fargate CE 上按附加到队列的顺序安排作业(如果有)。如果您想将 Fargate CE 设置为某个最低业务要求,然后在 Fargate Spot 上运行其余工作负载,则这种方法很有用。

如果将 Fargate Spot CE 设置为第一个,将 Fargate CE 设置为第二个,那么仅当作业使用的 vCPU 大于该 CE 的最大 vCPU 时,Batch 才会溢出到 Fargate 中。如果收回了 Fargate Spot,则将无法满足最大 vCPU,并且 Batch 将不会在后续的 CE 中请求 Fargate 资源来运行您的作业。

不允许将 AWS Batch 作业队列连接到 Fargate/Fargate Spot CE 和 EC2 或 Spot CE。

为什么选择 AWS Batch

AWS Batch 可执行作业和管理计算资源,从而让您能够集中精力开发应用程序或分析结果,而不是设置和管理基础设施。如果您正在考虑运行批处理工作负载或将其迁移到 AWS,则应该考虑使用 AWS Batch。

AWS Batch 针对能够通过并行执行多项作业来进行扩展的批处理计算和应用程序进行了优化。深度学习、基因组学分析、金融风险模型、蒙地卡罗模拟、动画渲染、媒体转码、图像处理和工程模拟都是批处理计算应用程序的出色示例。

多容器任务

如果想要将 AWS Batch 工作负载建模为一组逻辑各异的要素,例如模拟环境和待测系统(SUT)、主要应用程序或遥测 Sidecar,則您应使用多容器作业功能。利用此项功能,您将可以简化您的操作,更便捷地遵循最佳架构实践,并使您的模拟与生产体系的多容器架构保持一致。无论您想为 SUT 和模拟环境运行独立的容器,或者需要添加辅助 Sidecar,都无需再将所有工作负载要素集成到整体式容器当中,然后在每次代码更改后进行重建。这样一来,您能够简化 DevOps,保持容器的轻量化并且可快速下载,同时方便工作作业的并行处理。

AWS Batch 支持在所有作业类型中运行多个容器,包括单节点常规作业、阵列作业和多节点并行(MNP)作业。

您可以在所有 AWS Batch 计算环境中运行多容器作业,包括 Amazon ECS、Amazon EC2、AWS Fargate 和 Amazon EKS。

功能

AWS Batch 可以管理计算环境和作业队列,从而使您能够使用 Amazon ECSAmazon EKSAWS Fargate 轻松运行数千个任意规模的作业,并可选择竞价型或按需资源。您只需定义批处理作业并将其提交到队列中即可。在作出响应时,AWS Batch 可选择在何处运行作业,从而在需要时启动其他 AWS 容量。AWS Batch 会严密监控您的作业进度。当不再需要容量时,AWS Batch 会将其删除。借助 AWS Batch,您还可以提交属于管道或工作流一部分的任务,从而使您能够在提交任务时说明各项任务之间存在的任何相互依赖关系。

AWS Batch 支持可作为 Docker 容器执行的任何作业。作业会指定其内存要求和 vCPU 数量。 

AWS Batch 计算资源是一种 EC2 实例或 AWS Fargate 计算资源。

AWS Batch 计算环境是一个计算资源集合,作业将在这些资源上执行。AWS Batch 支持两类计算环境:由 AWS 预置和管理的托管计算环境和由客户管理的非托管计算环境。非托管计算环境可提供一个便于利用专用资源(如专属主机、更大的存储配置和 Amazon EFS)的机制。

任务定义描述了需要执行的任务、参数、环境变量、计算要求以及用于优化任务执行的其他信息。任务定义是在提交任务之前定义的,并且您可以与他人共享该定义。

AWS Batch 使用 Amazon ECS 来执行容器化作业,因此要求您的 AWS Batch 计算环境中的计算资源上必须安装有 ECS 代理。托管计算环境中预安装了 ECS Agent。

AWS Batch 计算环境由 EC2 Spot 实例组成。在创建托管计算环境时,只需指定您想使用 EC2 Spot 实例,并提供您愿意支付的按需定价百分比,AWS Batch 将负责其余工作。非托管计算环境还可以包含您启动的竞价型实例,其中包括 EC2 竞价型实例集启动的实例。

定价

AWS Batch 无需额外付费。您只需为存储和运行您的批处理作业而创建的 AWS 资源(如 EC2 实例或 AWS Fargate)付费。

GPU 安排

是的,您可以使用 Batch 指定作业所需的加速器的数量和类型,作为作业定义输入变量,以及当前的 vCPU 和内存选项。AWS Batch 将根据所需的加速器扩展适合您的作业实例,并根据每个作业的需要隔离加速器,因此只有合适的容器才能访问它们。

通过将加速器与 Batch 配合使用,您可以根据加速器需求动态安排和预置作业,Batch 将确保为您的作业保留适当数量的加速器。Batch 将在您需要时扩展您的 EC2 加速实例,并在完成后缩减它们,使您可以专注于您的应用程序。Batch 与 EC2 Spot 进行原生集成,这意味着使用加速实例时,加速作业可以节省高达 90% 的成本。

您目前可以在 P 和 G 加速实例上使用 GPU。

您可以在“作业定义”中指定加速器的数量和类型。您可以通过描述加速器类型(例如,GPU – 目前唯一支持的加速器)以及您的作业所需类型的数量来指定加速器。指定的加速器类型必须存在于计算环境中指定的某个实例类型上。例如,如果您的作业需要 2 个 GPU,还要确保在计算环境中指定了 P 系列实例。

来自 API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

与 vCPU 和内存要求类似,您可以在提交作业时覆盖加速器的数量和类型。

考虑今天的行为,在可能的情况下,Batch 将避免安排不需要加速实例加速的作业。这是为了避免长时间运行的作业占用加速实例而不利用加速器,从而增加成本。在极少数情况下,使用 Spot 定价并将加速实例作为允许类型时,Batch 可能会确定加速实例是运行作业的最便宜方式,无论加速器需求如何。

如果您将作业提交给仅允许 Batch 启动加速实例的 CE,则 Batch 将在这些实例上运行作业,而不管其加速器需求如何。

从现在开始, p 类型实例将默认启动经过 ECS GPU 优化的 AMI。此 AMI 包含运行基于 GPU 的应用程序所需的库和运行时。创建 CE 时,您始终可以根据需要指向自定义 AMI。

入门

请遵循我们文档中的入门指南开始使用。

您无需手动启动自己的计算资源即可开始使用。AWS Batch Web 控制台将指导您完成首个计算环境和作业队列的创建流程,以便您可以提交第一项作业。计算环境中的资源将在其他任务可随时运行时进行扩展,并随着可运行任务数量的减少而缩减。