AWS Batch 中的運算環境:如何設定
當您需要透過批次工作在大規模環境中執行訓練模型和複雜分析時,AWS Batch 將是理想的解決方案。AWS 提供了一項專門服務,能有效執行大量運算作業,且無需額外管理開銷。這篇部落格文章將介紹 AWS Batch 的架構,以及批次處理的配置原則。
什麼是 AWS Batch?
AWS Batch 是由 Amazon Web Services (AWS) 提供的一項雲端服務,旨在讓開發人員、工程師和科學家能夠在 AWS 雲端上輕鬆且高效地執行數千個批次運算工作。批次運算是一種透過將工作拆分為可同時處理的小單位,來處理大量資料的方法。
AWS Batch 簡化了批次運算工作負載的部署、管理與縮放流程。它會自動配置運算資源,並優化這些資源的分配,以低成本提供高吞吐量。透過 AWS Batch,您無需安裝或管理傳統上用於處理這些任務的批次運算軟體或伺服器叢集,從而更輕鬆地大規模執行複雜的運算工作負載。
AWS Batch 提供以下關鍵特點:
Dynamic resource allocation. AWS Batch 會根據提交的批次工作負載的規模及特定資源需求,動態配置資源,包括最佳數量與類型的運算資源(CPU 或記憶體最佳化執行個體)。Managedcompute environments. 您可以為工作指定運算資源,AWS Batch 將負責管理底層基礎架構,並根據需求進行縮放,以盡可能高效地執行工作。Job scheduling. AWS Batch 會將工作與計畫排入佇列,並根據可用的運算資源以及批次工作的優先級來排程其執行。它確保優先級較高的工作優先完成,並管理工作之間的執行依賴關係(如有)。Container support. AWS Batch 與 Amazon Elastic Container Service (ECS) 整合,並支援 Docker,讓您能將工作封裝至容器中。這確保了您的運算環境既相互隔離又保持一致,使其更安全且更易於管理。Integration with AWS services. AWS Batch 可輕鬆與其他 AWS 服務(例如 Amazon S3、Amazon DynamoDB、Amazon RDS、AWS Lambda 等)整合,讓您能夠建置複雜且具擴展性的批次處理架構。
AWS Batch 的組成部分
為了更深入了解 AWS Batch 服務,了解其主要組件至關重要。AWS Batch 的主要組件包括:
Job definitions. 這些是描述工作執行方式的範本。工作定義會指定與該工作相關的各項設定,例如要使用的 Docker 映像檔、vCPU 和記憶體需求、要執行的指令、環境變數、重試策略以及資料卷等配置。您可以針對計劃執行的不同類型工作,建立多個工作定義。Job queues. 工作佇列是工作在被排程至運算環境執行前的暫存位置。您可以建立多個工作佇列,分別對應不同的優先級(例如:高、中、低)或不同類型的任務。佇列中的工作會根據其優先級,以及運算環境分配給該工作佇列的順序來進行排程。Compute environments. AWS Batch 運算環境是由用於執行批次工作的運算資源所組成的集合。運算環境可分為受管型與非受管型。Jobs. 工作是提交至 AWS Batch 的個別工作單元。每個工作都會執行一個 Docker 容器映像,您可以為每個工作指定 vCPU、記憶體及其他需求。工作之間可能存在依賴關係,這意味著某個工作在執行前,可能需要先有另一個或多個工作成功完成。Scheduling. AWS Batch 排程是決定如何將工作指派給運算資源的流程。排程器會評估工作佇列、優先級以及運算資源的可用性,以高效地執行工作。AWS Batch 排程器既能優化運算資源的使用率,也能縮短工作完成時間。Lambda functions (optionally). 雖然 AWS Lambda 並非核心組件,但可與 AWS Batch 配合使用以達成多種目的,例如根據事件觸發工作、處理工作結果,或動態修改工作佇列或運算環境。
了解運算環境
AWS Batch 中的運算環境代表執行批次工作的運算基礎架構。它們本質上是運算資源所在的環境。您可以將運算環境視為 AWS Batch 內的一組運算資源,由該服務進行管理與縮放,以執行已提交的批次工作。這些環境可配置為特定類型的運算資源(由執行個體類型定義),或針對特定運算任務進行優化。
AWS Batch 中有兩種類型的運算環境:
1. 託管運算環境
在此類設定中,AWS 會代您管理運算環境。AWS Batch 會根據工作需求,自動管理運算資源的縮放與配置。 您只需指定所需的執行個體類型(或範圍)、最小、目標及最大 vCPU 數量,以及分配策略等其他詳細設定。AWS Batch 將負責處理其餘任務,包括根據工作負載決定是否縮放規模,並在無需人工干預的情況下,依據工作負載自動調整運算資源的數量。
此環境支援兩種類型的執行個體: 隨選實例 以及 按次計費型號,並可選擇將其結合以優化成本並提升容量。
託管運算環境的優勢包括:
Automatic scaling. AWS Batch 可根據工作佇列的需求自動縮放資源,有助於優化成本與資源利用率。Easy setup. 由於 AWS 會管理底層基礎架構(包括執行個體和縮放政策),因此您需要進行的設定較少。Cost-effectiveness. 您可以善用 按次計費型號 在……之內 受管理 運算環境s 以節省批次工作的成本。
2. 非受管運算環境
在非託管運算環境中,您需自行管理運算資源。這意味著您負責設定及縮放將用於執行批次工作的 Amazon EC2 執行個體或 Spot Instance 叢集。此選項可讓您更精細地控制運算環境,但需要您投入更多設定與管理的心力。此方案適用於涉及特定設定、自訂 AMI(Amazon 機器映像)或特殊資源需求的狀況。
運算環境的主要特性包括:
Compute resource types. 您可以指定環境將使用的執行個體類型。這可以是"最佳化"(由 AWS Batch 自動選擇資源類型)、特定的執行個體類型,或是符合您工作需求的多種組合。Scaling policies. 對於受管環境,AWS Batch 會根據工作提交與完成的模式,動態地縮放運算資源,以確保最佳的成本效益與效能。Launch template support. 您可以為運算環境指定 EC2 啟動範本,藉此在受管運算環境中自訂 EC2 執行個體。Spot integration. AWS Batch 支援在受管與非受管運算環境中使用 EC2 競價型執行個體,為彈性工作負載提供成本節省方案。
此類運算環境的優勢包括:
Complete control. 您可完全掌控運算環境,包括執行個體類型及詳細設定。Customization. 這對於受管運算環境無法滿足的特定需求而言是理想選擇,能在執行個體類型、配置及縮放策略方面提供更大的靈活性。Integration with Existing Infrastructure. 如果您已經配置了環境,或對安全性、合規性或預留實例的使用有特定需求,非託管環境可能是您的最佳選擇。
AWS Batch 的使用情境
AWS Batch 適用於多種情境。以下列出 AWS Batch 能提供高效能與可擴展性的最常見使用情境,展現其在不同產業與應用場景中的多功能性。
Large-scale data processing and analysis. 處理大量資料的組織,例如基因組學、財務分析或環境建模等領域的機構,可利用 AWS Batch 來處理大型資料集。此服務能有效率地管理並行分析大量資料所需的運算資源,將資料處理與分析所需的時間大幅縮短,從數小時或數天縮短至數分鐘。Machine learning model training and inference. 資料科學家和機器學習工程師可以運用 AWS Batch 對大型資料集進行機器學習模型的訓練。AWS Batch 能夠動態縮放運算資源,以滿足各種訓練工作的需求,從小規模的模型微調,到橫跨多張 GPU 的大規模深度學習模型訓練皆可。同樣地,它也能處理批次推論任務,高效處理大量批次推論請求。Image or video processing媒體公司、內容供應商,甚至科研機構,往往需要處理大量圖像或影片,無論是為了渲染、轉碼,還是分析(例如用於環境監測的衛星影像分析)。AWS Batch 能夠縮放,以同時處理數千個檔案,從而大幅加快工作流程。Simulation and modeling workloads對於從事模擬運算的產業(例如製藥、汽車、航太等),這些產業可能需要執行數千次模擬來建模複雜的物理現象或測試各種情境,AWS Batch 能協助高效執行這些運算密集型任務。它確保每項模擬都能獲得所需的運算資源,進而將取得結果所需的時間從數週縮短至數天甚至數小時。Financial risk modeling. 金融機構可利用 AWS Batch 在大型資料集上執行複雜的風險模型。透過動態縮放運算資源,AWS Batch 確保需要分析大量歷史財務資料的風險評估能夠迅速完成,從而協助快速決策。Software build and test pipelines軟體開發團隊可利用 AWS Batch 來自動化其建置與測試流程。對於擁有龐大測試套件或需要在多個平台上進行建置的專案,AWS Batch 透過並行執行測試並進行縮放以因應尖峰需求,能大幅縮短完成時間。
逐步設定指南
讓我們來了解如何設定 AWS 批次工作、運算環境以及其他必要元件。
準備步驟
準備用於 AWS 批次工作的 AWS 角色:
- 前往 IAM 控制台。開啟
AWS Management Console,搜尋IAM service,然後打開它。 - 建立 AWSBatchServiceRole:
- 在 IAM 儀表板中,請選取
Roles然後點擊Create role. - 選擇一個 AWS 服務作為受信任實體,選擇
Batch,然後點擊Next: Permissions. - 將
AWSBatchServiceRole政策。若您找不到,請在搜尋欄中進行搜尋。 - 點擊
Next, 為角色命名(例如, AWSBatchServiceRole),並建立該角色。
- 在 IAM 儀表板中,請選取
- 建立 EC2 執行個體角色:
- 請重複角色建立流程,但這次請選擇
EC2作為受信實體。 - 將
AmazonEC2ContainerServiceforEC2Role該政策,或您使用情境所需的任何其他政策。 - 為角色命名(例如,
ecsInstanceRole) 並建立它。
- 請重複角色建立流程,但這次請選擇
存取 AWS Batch
類型 batch 在 AWS 服務搜尋欄中輸入,並在顯示此項目時點選 AWS Batch。

AWS Batch 儀表板頁面現在應該會開啟。
建立運算環境
運算環境包含您的工作將在其中執行的 Amazon ECS 容器執行個體。
點擊 Compute environments 在 AWS Batch 儀表板頁面上,然後按下 Create 以建立一個新的電腦環境。

該 建立運算環境 精靈視窗開啟。
Compute environment configuration.- 選擇一個運算平台,例如,
Amazon Elastic Compute Cloud(Amazon EC2). - 請選擇
Managed以及Unmanaged. 受管環境由 AWS 負責管理,而非受管環境則由您自行管理。 - 請根據您的需求填寫此表單。為您的運算環境輸入名稱(env01test (如本範例所示)。請在必要時指定於準備步驟中建立的角色。若您尚未建立該角色,亦可在此畫面建立新角色。每個欄位均提供實用提示,協助您設定最佳值。

- 選擇一個運算平台,例如,
Instance configuration. 設定所需的 vCPU(虛擬中央處理器)參數。選擇執行個體類型。您可以選擇競價型執行個體或隨選型執行個體。請注意,如果 最低 vCPU 數量 若將參數設定為 0,則在無工作可執行時,AWS 資源便不會被浪費(此為建議值)。
Network. 您可以保留預設設定。若需自訂網路設定,您可以選取現有的 VPC ID 和子網,或建立新的。Review. 檢查設定並儲存您的運算環境。按下Createcompute environment.
建立工作佇列
工作佇列用於存放工作——每個工作皆位於一個專屬的工作佇列中。工作佇列會與運算環境相關聯。
- 建立工作佇列。在 AWS Batch 儀表板中,按一下
Job queues,然後按下Create.
- 選擇編排類型,例如
Amazon EC2(Fargate 和 EKS 也是可用的選項)。
- 請在工作佇列設定區段中,輸入工作佇列的名稱及優先級(數字越大,優先級越高;預設值為 1)。
- 將您的工作佇列連結至上一步驟所建立的運算環境(env01test)。
- 點擊
Create以完成工作佇列。
建立工作定義
工作定義用於指定工作的執行方式。其中包含要使用的 Docker 映像檔、虛擬 CPU(vCPU)、記憶體需求等。執行工作時,可以覆寫工作定義的參數。
導航至 Job definitions 在 AWS Batch 儀表板上,然後按一下 Create.

Job definition configuration. 指定該工作是否將在Amazon EC2、Fargate 或 Elastic Kubernetes Service。定義一個工作定義名稱。
- 設定容器屬性,包括映像檔、虛擬 CPU、記憶體、指令(如有)以及環境變數。
- 在"執行"角色下,請指定一個具備拉取 Docker 映像檔權限的 IAM 角色,如有需要,還需具備將日誌記錄至 CloudWatch 的權限。
- 請在每個畫面點選"下一步"以繼續。

Container configuration. 選擇命令語法(bash 或 JSON)。請依照指定的語法,在命令欄位中輸入所需的命令。您可以選擇環境設定(例如 vCPU 數量和記憶體),並新增環境變數。Linux and logging settings. 您可以設定 Linux 及記錄設定,包括使用者資訊、檔案系統設定、記錄設定等。Job definition review. 請檢查您的設定。您可以檢視工作定義的設定,並複製設定文字(腳本)。點擊Create job definition.
提交工作
現在一切都已設定完成,您可以提交工作,這是一項由 AWS Batch 執行的作業單元。
- 前往
Jobs該區段並點擊Submit new job.
- 設定工作配置。輸入工作名稱。選擇您先前建立的工作定義和工作佇列。如有需要,請設定其他附加參數。
- 設定工作覆寫設定(可選)。
- 檢視工作設定並點擊
Create job最後。
該工作應在幾秒內觸發,並進入執行狀態。
管理運算環境
您可以在 AWS Batch 儀表板中的 Jobs 章節 (Jobs > 選擇工作 > Details). AWS Batch 讓您能夠查看即時日誌、工作狀態,以及工作所產生的任何輸出。

您可以使用以下 AWS 工具來監控和管理運算環境:
Amazon CloudWatch. 使用此工具來監控批次工作及運算環境的指標與日誌。這對於了解工作執行效能及排除問題至關重要。AWS CloudTrail. 記錄並監控對 AWS Batch 及其他 AWS 服務的 API 呼叫。這有助於稽核及追蹤運算環境的變更。AWS Cost Explorer. 運用此功能來監控與管理您的運算環境相關的成本,協助找出優化機會。
請遵循監控的建議做法:
- 請定期檢視 CloudWatch 中的 AWS Batch 指標與日誌,以找出效能瓶頸或未充分利用的資源。
- 根據效能數據,持續優化工作定義與運算環境。
- 建議將 AWS Lambda 與 AWS Batch 結合使用,以實現事件驅動的批次處理。
- 隨時掌握 AWS Batch 及相關服務的最新特點與最佳實踐。
在 AWS Batch 中,運算環境的管理與優化是一項持續進行的過程,其中包含監控效能、控制成本,並根據不斷變化的需求及 AWS 的新功能來調整策略。
結論
AWS Batch 適用於各種應用場景,從資料處理和渲染,到機器學習模型訓練和財務建模。這是一項完全託管的 AWS 服務。AWS Batch 能夠處理複雜且運算密集的批次工作,同時無需管理底層基礎架構,因此對於希望利用雲端滿足高吞吐量運算需求的組織而言,這是一項強大的工具。請務必為您的 Amazon EC2 執行個體設定備份,以保護資料安全。 NAKIVO Backup & Replication 可協助您有效保護 EC2 資料。