AWS Batch 功能

使用 AWS Batch,您只需使用 AWS 管理主控台、CLI 或軟體開發套件封裝批次任務的程式碼、指定其相依性,然後提交批次任務。AWS Batch 可讓您指定執行參數和任務相依性,促進各種熱門批次運算工作流程引擎和語言的整合 (Pegasus WMS、Luigi、Nextflow、Metaflow、Apache Airflow 和 AWS Step Functions)。AWS Batch 可以高效、動態地佈建和擴展 Amazon ECSAmazon EKSAWS Fargate 運算資源,並且可選擇根據您的任務要求善於 Spot 執行個體。 AWS Batch 提供預設任務佇列和運算環境定義,協助您快速上手。

AWS Batch on Amazon Elastic Kubernetes Service (EKS)

AWS Batch on EKS 會管理 Kubernetes 節點的擴展和節點內 Pod 的置放。這樣做的同時可保留 Amazon EKS 針對其他工作負載和服務提供的管理和協同運作。AWS Batch 可在您現有的 EKS 叢集中安全地作為 Kubernetes Pod 執行任務;您需要做的就是指定容器所需的 vCPU、記憶體和任何 GPU 要求,將其提交到連接至啟用 EKS 叢集的運算環境的佇列中。AWS Batch 會管理任務佇列中的佇列排入、相依項追蹤、重試、確定優先順序和 Pod 提交。此外,它還可以管理 EKS 環境中的運算資源佈建,無論您使用的是 EC2 還是 EC2 Spot 運算資源。AWS Batch 在不同的命名空間與您的 EKS 叢集整合,這意味著您無需擔心 AWS Batch 任務會干擾您現有的程序。AWS Batch 可為您管理容量,包括維護節點熱集區、在一定數量的 vCPU 上限制容量、擴展節點和跨多個不同叢集執行任務的能力,或者只是在單一叢集中執行所有任務。AWS Batch 支援將獨立的 Pod 作為核心工作單元,但也可透過陣列來彙總排程您的任務。

動態佈建和擴展運算資源

將 Fargate 或 Fargate Spot 與 Batch 搭配使用時,您僅需在 Batch 中設定一些概念 (CE、任務佇列和任務定義),即可擁有完整的佇列、排程器和運算架構,而不需要管理某一部分的運算架構。

對於需要 EC2 執行個體的人員,AWS Batch 提供受管運算環境,可根據提交任務的數量和資源需求,動態地佈建和擴展運算資源。您可以依照下列需求設定 AWS Batch 受管運算環境:EC2 執行個體類別、VPC 子網路設定、所有執行個體最低/最高/所需的 vCPU 數量,以及您願意為 Spot 執行個體支付的金額,佔隨需執行個體價格的 %。

或者,如果 EC2 執行個體要使用的組態與 AWS Batch 受管運算環境所提供的組態不同 (例如,較大的 EBS 磁碟區或其他作業系統),可在 AWS Batch 未受管運算環境內佈建和管理自己的運算資源。您只需佈建包含 Amazon ECS 代理器的 EC2 執行個體並執行支援的 Linux 和 Docker 版本。然後 AWS Batch 會在您佈建的 EC2 執行個體上執行批次任務。

AWS Batch with Fargate

AWS Batch with Fargate 可讓您為批次任務建立完全無伺服器的架構。藉助 Fargate,每個任務都會收到其請求的確切 CPU 和記憶體量 (在 Fargate SKU 允許的範圍內),因此不會浪費資源,也不必等待 EC2 執行個體啟動。

如果您目前是 Batch 使用者,Fargate 可提供與 EC2 執行個體分離的額外一層隔離。無需管理或修補 AMI。將與 Fargate 相容的任務提交至 Batch 時,如果您不僅有在 EC2 上執行的工作負載,還有在 Fargate 上執行的其他工作負載,則不必擔心維護兩種不同的服務。

AWS 提供帶有受管佇列的雲端原生排程器,同時可讓您指定優先級、重試次數、相依項、逾時等。Batch 管理提交至 Fargate 的內容以及任務的生命週期,因此您無需為此煩神。

Fargate 還提供無需額外付出的安全優勢 (例如 SOX、PCI 合規),並且可以為每個任務隔離運算資源。

支援緊密搭配的 HPC 工作負載

AWS Batch 支援多節點平行工作,可讓您執行跨越多個 EC2 執行個體的單一工作。這項功能讓您能使用 AWS Batch 輕鬆並有效率地執行工作負載,例如較大規模緊密搭配的高效能運算 (HPC) 應用程式或分散式 GPU 模型訓練。AWS Batch 還支援 Elastic Fabric Adapter,這是一項能讓您在 AWS 中大規模執行需要大量節點間通訊之應用程式的網路界面。 

精細任務定義與建立簡單任務相依性模型

AWS Batch 可讓您指定資源需求 (如 vCPU 和記憶體)、AWS Identity and Access Management (IAM) 角色、磁碟區掛載點、容器屬性及環境變數,以定義任務的執行方式。AWS Batch 執行任務的方式如同容器化應用程式在 Amazon ECS 上執行。Batch 還可讓您定義不同任務之間的相依性。例如,根據不同的資源需要,批次任務可包含三個不同的處理階段。對於相依性,您可以建立三個具有不同資源需求的任務,每個連續的任務都取決於前一個任務。

基於優先順序的任務排程

AWS Batch 讓您設定具有不同優先順序的多個佇列。批次任務會存放在佇列中,直到有可用的運算資源執行任務。AWS Batch 排程器會按照提交到佇列的每個任務的資源需求,評估執行任務的時間、位置及方式。排程器會評估每個佇列的優先順序,只要這些任務沒有待決的相依性,它就會依優先順序在最佳的運算資源 (例如,記憶體與 CPU 最佳化相比) 上執行任務。

支援 GPU 排程

GPU 排程可讓您將任務所需的加速器數量和類型指定為 AWS Batch 中的任務定義輸入變數。AWS Batch 將根據所需的 GPU 數量擴展適合任務的執行個體,並根據每個任務的需要隔離加速器,僅讓適當的容器存取這些加速器。

AWS Batch 可與商用和開放原始碼工作流程引擎及語言 (如 Pegasus WMS、Luigi、Nextflow、Metaflow、Apache Airflow 和 AWS Step Functions) 整合,讓您使用熟悉的工作流程語言來建立批次運算管道的模型。

與 EC2 啟動範本整合

AWS Batch 現在支援 EC2 啟動範本,能夠讓您建立運算資源的自訂範本,並讓 Batch 依據這些需求擴展執行個體。您可以在 EC2 啟動範本指定新增儲存磁碟區、指定網路界面或設定許可等功能。EC2 啟動範本透過在一個資源內擷取啟動參數,來減少設定 Batch 環境所需的步驟。

彈性分配策略

AWS Batch 可讓客戶選擇三種分配運算資源的方法。這些策略可讓客戶在決定 AWS Batch 應如何代表他們擴展執行個體時,考慮輸送量和價格。

最適合:AWS Batch 可選取一種最適合任務需求的執行個體類型,並優先考慮成本最低的執行個體類型。如果所選執行個體類型的其他執行個體不可用,AWS Batch 將等待其他執行個體變得可用。如果可用的執行個體不足,或者如果使用者達到 Amazon EC2 服務限制,則在目前執行的任務完成之前,將無法執行其他任務。此分配策略可確保較低成本,但是會限制擴展。

最適合漸進式:AWS Batch 將選取足夠大可滿足佇列中任務需求的其他執行個體類型,並優先考慮每單位 vCPU 成本更低的執行個體類型。如果之前選取的執行個體類型的其他執行個體不可用,AWS Batch 將選取新的執行個體類型。

Spot 容量最佳化:AWS Batch 將選取足夠大可滿足佇列中任務需求的一個或多個執行個體類型,並優先考慮不會被中斷的執行個體類型。此分配策略僅可用於 Spot 執行個體運算資源。

整合式監控和記錄

AWS Batch 會在 AWS 管理主控台顯示批次任務的關鍵操作指標。您可查看與運算容量相關的指標,以及執行中、待處理和已完成的任務。您可以在 AWS 管理主控台中找到任務的日誌 (如 STDERR 和 STDOUT),這些日誌也會寫入 Amazon CloudWatch Logs。

更精細的存取控制權

AWS Batch 使用 IAM 來控制和監控任務可以存取的 AWS 資源,例如 Amazon DynamoDB 表。您也可以使用 IAM 為組織中的不同使用者定義政策。例如,授與管理員所有 AWS Batch API 操作的完整存取許可、開發人員能夠擁有與設定運算環境和註冊任務相關的有限許可,而最終使用者則限制為只能擁有提交和刪除任務所需的許可。

深入了解 AWS Batch 定價

瀏覽定價頁面
準備好開始建立?
開始使用 AWS Batch
還有其他問題嗎?
聯絡我們