一般資訊

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

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

問:批次運算有哪些優點?
  • 當某個時段有較大或較便宜的可用容量時,會將任務處理的時間移轉到該時段。
  • 這樣可避免出現閒置的運算資源,以及頻繁的手動干預和監管。
  • 它可透過較高的運算資源使用率以提升效率。
  • 同時允許排列任務的優先順序,以針對業務目標調整資源的分配。
 
問:何時應在 Fargate 中執行任務,何時又應在 EC2 中執行任務?
如果希望由 AWS Batch 處理完全從 EC2 架構擷取的運算佈建,則應在 Fargate 上執行您的任務。如果需要存取特定執行個體組態 (特定的處理器、GPU 或架構) 或非常大規模的工作負載,則應在 EC2 上執行您的任務。
 
使用 EC2 或 Fargate 均可能更快速地開始您的任務,具體取決於您的使用案例。如果最初執行擴展工作,則 Fargate 任務可更快速地開始,因為無需等待 EC2 執行個體啟動。然而,對於較大的工作負載,EC2 執行個體可能會更快,因為 Batch 會重複使用執行個體和容器映像來執行後續任務。
 
問:我可以將任務處理從 Fargate CE 流出至 Fargate Spot CE 嗎,反之亦可以嗎?
可以。可以將 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 Batch 可處理任務執行和運算資源管理,讓您專心開發應用程式或分析結果,不用分心設定和管理基礎設施。如果您考慮在 AWS 上執行批次工作負載或將其移到 AWS,則應該考慮使用 AWS Batch。

問:AWS Batch 針對哪些使用案例進行優化?
AWS Batch 針對透過平行執行多個任務而擴展的批次運算和應用程式進行優化。深度學習、基因體分析、金融風險模型、蒙地卡羅模擬法、動畫繪製、媒體轉碼、影像處理及工程模擬,都是批次運算應用程式的絕佳範例。

功能

問:AWS Batch 的主要特色是什麼?
AWS Batch 可管理運算環境和任務佇列,讓您使用 Amazon EC2、EC2 Spot 執行個體AWS Fargate 輕鬆執行任何規模的數十萬個任務。您只需定義批次任務並將它提交到佇列即可。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 如何讓使用 EC2 競價型執行個體變得更容易?
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% 的節省。

問:我可以搭配 AWS Batch 使用哪些加速器?
您目前可以在 P 和 G 加速的執行個體上使用 GPU。
 
問:我可以如何將需要加速執行個體的任務提交至 Batch?
您可以在任務定義中指定加速器數目和類型。您可以透過描述您的任務所需的加速器類型 (例如,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 將在這些執行個體上執行任務,而不論其加速器需求為何。

問:Batch 如何使用 ECS GPU 最佳化的 AMI?
從現在開始,P 類型的執行個體預設將透過 ECS GPU 最佳化的 AMI 啟動。此 AMI 包含執行基於 GPU 的應用程式所需的程式庫和執行時間。建立 CE 時,您可以根據需要始終指向自訂 AMI。

入門

問:如何開始使用?
請依照我們文件中的入門指南開始使用。

問:需要佈建什麼才能開始使用?
您不需要手動啟動自己的運算資源即可開始使用。AWS Batch Web 主控台將引導您完成建立第一個運算環境和任務佇列的程序,這樣您就可以提交第一個任務。當有更多任務準備好可以執行時,運算環境內的資源就會隨著擴展,而當可執行任務的數量減少時則會隨著縮小。

了解使用 AWS Batch 的時機

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