AWS Batch 常見問答集

一般資訊

AWS Batch 是一組批次管理功能,可讓開發人員、科學家和工程師在 AWS 上輕鬆且有效率地執行數十萬個批次運算任務。AWS Batch 會根據提交的批次任務所需的數量和特定資源需求,動態佈建優化的運算資源數量和類型 (如 CPU 或記憶體優化的運算資源)。使用 AWS Batch,不需要安裝和管理批次運算軟體或伺服器叢集,讓您能夠專心地分析結果和解決問題。AWS Batch 使用 Amazon ECSAmazon EKSAWS Fargate 規劃、安排和執行您的批次運算工作負載,並可選擇使用 Spot 執行個體。

批次運算是在一或多部電腦上執行一系列程式 (「任務」),無須手動干預。輸入參數已透過指令碼、命令列引數、控制檔案或任務控制語言預先定義。指定的批次任務取決於前面任務是否完成或特定輸入是否可用,因此多個任務的排序和排程變得很重要,而且它無法與互動式處理一起使用。

  • 當某個時段有較大或較便宜的可用容量時,會將任務處理的時間移轉到該時段。
  • 這樣可避免出現閒置的運算資源,以及頻繁的手動干預和監管。
  • 它可透過較高的運算資源使用率以提升效率。
  • 同時允許排列任務的優先順序,以針對業務目標調整資源的分配。

如果希望由 AWS Batch 處理完全從 ECS 架構擷取的運算佈建,則應在 Fargate 上執行您的任務。如果需要存取特定執行個體組態 (特定的處理器、GPU 或架構) 或非常大規模的工作負載,則應在 ECS 上執行您的任務。如果您選擇 Kubernetes 作為您的容器協同運作技術,可以使用 Batch 與 EKS 整合,來標準化您的批次工作負載。

視您的使用案例而定,目前 Fargate 任務在初始工作橫向擴展的情況下將會啟動得更快,因為無須等待 EC2 執行個體或 Pod 啟動。然而,對於較大的工作負載,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 中的資源來執行任務。

不允許將 AWS Batch 任務佇列連接至 Fargate/Fargate Spot CE 和 EC2 或 Spot CE。

為什麼選擇 AWS Batch

AWS Batch 可處理任務執行和運算資源管理,讓您專心開發應用程式或分析結果,不用分心設定和管理基礎設施。如果您考慮在 AWS 上執行批次工作負載或將其移到 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 輕鬆執行數千個任意規模的任務,並可選擇 Spot 或隨需資源。您只需定義批次任務並將它提交到佇列即可。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 代理器。

AWS Batch 運算環境可包含 EC2 Spot 執行個體。建立受管運算環境時,只需指定您要使用 EC2 Spot 執行個體,並提供要支付的隨需定價百分比,AWS Batch 就會處理後續的工作。未受管運算環境也可包含您啟動的 Spot 執行個體,包括由 EC2 Spot 機群啟動的執行個體。

定價

使用 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 主控台將引導您完成建立第一個運算環境和任務佇列的程序,這樣您就可以提交第一個任務。當有更多任務準備好可以執行時,運算環境內的資源就會隨著擴展,而當可執行任務的數量減少時則會隨著縮小。