一般資訊
問:什麼是 AWS Batch?
AWS Batch 是一組批次管理功能,可讓開發人員、科學家和工程師在 AWS 上輕鬆且有效率地執行數十萬個批次運算任務。AWS Batch 會根據提交的批次任務所需的數量和特定資源需求,動態佈建優化的運算資源數量和類型 (如 CPU 或記憶體優化的運算資源)。使用 AWS Batch,不需要安裝和管理批次運算軟體或伺服器叢集,讓您能夠專心地分析結果和解決問題。AWS Batch 使用 Amazon ECS、Amazon EKS 和 AWS Fargate 規劃、安排和執行您的批次運算工作負載,並可選擇使用 Spot 執行個體。
問:什麼是批次運算?
批次運算是在一或多部電腦上執行一系列程式 (「任務」),無須手動干預。輸入參數已透過指令碼、命令列引數、控制檔案或任務控制語言預先定義。指定的批次任務取決於前面任務是否完成或特定輸入是否可用,因此多個任務的排序和排程變得很重要,而且它無法與互動式處理一起使用。
- 當某個時段有較大或較便宜的可用容量時,會將任務處理的時間移轉到該時段。
- 這樣可避免出現閒置的運算資源,以及頻繁的手動干預和監管。
- 它可透過較高的運算資源使用率以提升效率。
- 同時允許排列任務的優先順序,以針對業務目標調整資源的分配。
何時應在 EKS 與Fargate 與ECS 中執行任務?
為什麼選擇 AWS Batch
問:為什麼要使用 AWS Batch?
AWS Batch 可處理任務執行和運算資源管理,讓您專心開發應用程式或分析結果,不用分心設定和管理基礎設施。如果您考慮在 AWS 上執行批次工作負載或將其移到 AWS,則應該考慮使用 AWS Batch。
問:AWS Batch 針對哪些使用案例進行優化?
AWS Batch 針對透過平行執行多個任務而擴展的批次運算和應用程式進行優化。深度學習、基因體分析、金融風險模型、蒙地卡羅模擬法、動畫繪製、媒體轉碼、影像處理及工程模擬,都是批次運算應用程式的絕佳範例。
功能
問:AWS Batch 的主要特色是什麼?
AWS Batch 會管理運算環境和任務佇列,讓您可以使用 Amazon ECS、Amazon EKS 和 AWS Fargate 輕鬆執行數千個任意規模的任務,並可選擇 Spot 或隨需資源。您只需定義批次任務並將它提交到佇列即可。AWS Batch 接著會選擇執行任務的位置,視需要啟動額外的 AWS 容量。AWS Batch 會密切地監控任務的進度。AWS Batch 將會移除不再需要的容量。AWS Batch 也能夠提交管道或工作流程中的任務,讓您提交任務時表達之間存在的相依性。
問:AWS Batch 支援哪些類型的批次任務?
AWS Batch 支援能夠以 Docker 容器形式執行的任何任務。任務會指定它們所需的記憶體和 vCPU 數目。
問:什麼是運算資源?
AWS Batch 運算資源是 EC2 執行個體或 AWS Fargate 運算資源。
問:什麼是運算環境?
AWS Batch 運算環境是執行任務的運算資源集合。AWS Batch 支援兩種類型的運算環境:由 AWS 提供和管理的受管運算環境,以及由客戶管理的未受管運算環境。未受管運算環境提供一種可利用專門資源的機制,例如專用主機、較大型的儲存組態及 Amazon EFS。
問:什麼是任務定義?
任務定義描述要執行的任務、參數、環境變數、運算要求,以及優化任務執行所需的其他資訊。提交任務之前會先定義任務定義,而且可與其他人共享。
問:什麼是 Amazon ECS 代理器,以及 AWS Batch 如何運用它?
AWS Batch 使用 Amazon ECS 來執行容器化任務,因此它需要在 AWS Batch 運算環境內的運算資源上安裝 ECS 代理器。受管運算環境中已預先安裝 ECS 代理器。
問:AWS Batch 如何更輕鬆地使用 Spot 執行個體?
AWS Batch 運算環境可包含 EC2 Spot 執行個體。建立受管運算環境時,只需指定您要使用 EC2 Spot 執行個體,並提供要支付的隨需定價百分比,AWS Batch 就會處理後續的工作。未受管運算環境也可包含您啟動的 Spot 執行個體,包括由 EC2 Spot 執行個體叢集啟動的執行個體。
定價
問:AWS Batch 的定價為何?
使用 AWS Batch 並不收取其他費用。您只需支付為存放和執行批次任務所建立的 AWS 資源 (如 EC2 執行個體或 AWS Fargate) 的費用。
GPU 排程
問:我是否可以搭配 AWS Batch 使用加速?
是,您可以使用 Batch 指定任務所需的加速器數量和類型來當作任務輸入變數,以及目前的 vCPU 和記憶體選項。AWS Batch 將根據所需加速器擴展適合任務的執行個體,並根據每個任務的需要來隔離加速器,因此只有相應的容器才能存取它們。
問:為什麼我應該搭配 AWS Batch 使用加速?
透過搭配 Batch 使用加速,您可以根據其加速器需要,動態排程和佈建您的任務,且 Batch 將確保根據您的任務保留適當數目的加速器。Batch 將根據您的需要擴展 EC2 加速的執行個體,並在您完成時縮減執行個體,讓您專注於您的應用程式。Batch 可與 EC2 Spot 原生整合,這意味著在使用加速的執行個體時,您加速的任務可利用多達 90% 的節省。
從 API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],
問:提交任務時是否可以覆寫任務定義中的加速器變數?
類似於 vCPU 和記憶體需求,提交任務時,您可以覆寫加速器數目和類型。
問:加速的執行個體是否可以用於不需要加速器的任務?
以目前的行為來看,如果可能,Batch 將避免在加速的執行個體上排定不需要加速的任務。這可避免長期執行的任務佔用加速的執行個體,而未充分利用加速器,因而增加成本。在極少數情況下,使用 Spot 定價和將加速的執行個體作為允許的類型,Batch 將判定加速的執行個體是否是執行您任務的最實惠方式,而不論加速器需求為何。
如果您將任務提交給僅可讓 Batch 啟動加速執行個體的 CE,則 Batch 將在這些執行個體上執行任務,而不論其加速器需求為何。
問:Batch 如何使用 ECS GPU 最佳化的 AMI?
從現在開始,P 類型的執行個體預設將透過 ECS GPU 最佳化的 AMI 啟動。此 AMI 包含執行基於 GPU 的應用程式所需的程式庫和執行時間。建立 CE 時,您可以根據需要始終指向自訂 AMI。
入門
問:如何開始使用?
請依照我們文件中的入門指南開始使用。
問:需要佈建什麼才能開始使用?
您不需要手動啟動自己的運算資源即可開始使用。AWS Batch Web 主控台將引導您完成建立第一個運算環境和任務佇列的程序,這樣您就可以提交第一個任務。當有更多任務準備好可以執行時,運算環境內的資源就會隨著擴展,而當可執行任務的數量減少時則會隨著縮小。
了解使用 AWS Batch 的時機