

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EKS 上管理 AI/ML 工作負載的加速運算
<a name="ml-compute-management"></a>

**提示**  
 [註冊](https://events.eksworkshop.com/workshops/genai/)即將舉行的 Amazon EKS AI/ML 研討會。

本節說明如何使用 Amazon EKS 購買和佈建適用於 AI/ML 訓練和推論工作負載的 EC2 加速運算執行個體。無論您是訓練大規模模型、執行即時推論，還是部署生成式 AI 應用程式，使用正確的 NVIDIA GPU 或 AWS Trainium 容量都是工作負載效能的基礎。

## 從 EC2 執行個體類型中選擇
<a name="choose-ec2-instances"></a>

如需可用 [Amazon EC2 加速運算執行個體的詳細資訊，請參閱 Amazon EC2 加速運算執行個體的規格](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html)。 Amazon EC2 其中包括來自 P 系列和 G 系列，以及 Trainium 和 Inferentia AWS設計加速器的 NVIDIA GPU 執行個體。

## 了解 EC2 購買選項
<a name="understand-ec2-purchase-options"></a>

了解工作負載所需的加速執行個體後，下一步是了解可用於取得這些加速執行個體類型的購買選項。 AWS 提供四種運算容量購買選項：隨需執行個體、Spot 執行個體、ML 的容量區塊，以及隨需容量保留 ODCRs)。每個選項都提供不同的工作負載模式、成本設定檔和可用性需求。[Amazon EC2 執行個體購買選項文件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html)說明每個選項的運作方式、定價模式，以及使用時機。
+  **隨需執行個體**：容量存在時，以秒為單位付款，無需承諾且立即可用。最適合用於開發、原型設計、無法預測的推論擴展，以及需要立即運算而不會造成中斷風險的任何工作負載。
+  **Spot 執行個體**：使用備用 EC2 容量，與隨需相比可節省高達 90%，並提供 2 分鐘的中斷通知。最適合用於對持久儲存進行檢查點的容錯工作負載：超參數調校、具有定期檢查點的分散式訓練、批次和離線推論，以及資料預先處理管道。
+  **ML 的容量區塊**：預留 P-family 和 Trainium 執行個體固定時段 (24 小時，最長 6 個月），最多可提前 8 週預訂。將容量區塊用於規劃的大規模訓練執行、有時間限制的微調實驗，以及具有已知時間軸且需要可預測 GPU 叢集存取權的研究專案。
+  **隨需容量保留 (ODCRs)**：在沒有長期承諾的情況下，將加速容量保留在特定可用區域中，無論是否使用容量，都會以標準隨需費率計費。最適合用於生產推論、SLA 繫結服務，以及無法接受排程延遲或容量無法使用的業務關鍵應用程式。與容量區塊不同，ODCRs 支援 P 系列和 G 系列執行個體。

## 將購買選項與工作負載需求配對
<a name="match-purchase-option-with-workload"></a>

現在您已了解加速執行個體類型和購買選項，下一步是將正確的購買選項與您的工作負載特定需求配對。跨執行個體類型、區域和時間具有更大彈性的工作負載符合更多購買選項和更低定價的資格。

根據下列因素做出決策：
+ 策略重要性和 SLA 承諾
+ 需求可預測性和排程彈性
+ 願意預先承諾預留容量
+ 執行個體類型、區域和時間的彈性
+ 可容忍中斷與節省成本

實際上，團隊採用混合方法，結合多個購買選項，以平衡其工作負載產品組合的成本、可用性和可靠性。文章[如何在 上取得 GPU 容量 AWS](https://builder.aws.com/content/3B88fT4nDiNkg5Wrya4WV5zroSS/how-to-get-gpu-capacity-on-aws)，提供決策樹、定價比較，以及為不同類型的工作負載選擇正確購買選項的真實範例。

## 驗證您的 EC2 服務配額
<a name="verify-service-quotas"></a>

在 EKS 叢集上實作任何容量購買選項之前，請確認 AWS 您的帳戶有足夠的 vCPU 配額可供您計劃使用的 GPU 執行個體系列使用。如果沒有足夠的配額，Karpenter NodePools、EKS Auto Mode 佈建和 EKS 節點群組將無法啟動加速運算節點，無論您選取哪個購買選項。

 AWS 會強制執行每個執行個體系列和購買模型的個別 vCPU 配額。檢閱 [Amazon EC2 執行個體類型配額](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-quotas.html)，以了解加速運算執行個體的預設配額。

這些配額是根據 vCPU 計數，而不是執行個體計數。例如，啟動 10 個 p6-b300.48xlarge 執行個體需要 1，920 vCPUs (10 × 192)。新帳戶的預設 GPU 配額通常設定為 0，因此在嘗試部署執行個體之前請求增加。

如果您在建立容量區塊保留、啟動隨需執行個體或提交 Spot 請求時遇到配額限制，請聯絡 AWS Support 或您的 AWS 客戶團隊以討論您的需求，並探索保護最符合您需求的加速運算容量的選項。

## 搭配 Amazon EKS 使用 EC2 購買選項
<a name="use-purchase-options"></a>

選取 EC2 加速運算購買選項後，請將 Amazon EKS 叢集設定為使用容量。Amazon EKS 提供三種佈建方法，每個方法都有不同的控制和自動化平衡：
+  **Amazon EKS Auto Mode**：自動佈建、擴展和修補節點的 AWS受管運算。使用內建 Karpenter 來佈建和 Bottlerocket 作業系統，其中包含 NVIDIA 驅動程式和裝置外掛程式。當您想要具有最少營運開銷的受管基礎設施時最佳。支援靜態和動態容量佈建。
+  **Karpenter （自我管理）**：您在 Amazon EKS 叢集中安裝和操作的開放原始碼上游專案。提供與 EKS Auto Mode 相同的佈建模型，您可以完全控制作業系統、AMIs、核心調校和節點生命週期。最適合要求 EKS Auto Mode 未提供out-of-the-box平台團隊。
+  **節點群組 （受管和自我管理）**：由 EC2 Auto Scaling Groups (ASG) 支援，透過 EC2 啟動範本預先定義容量。最適合具有現有 EKS 受管或自我管理節點群組的平台團隊，並使用已知的靜態加速運算足跡，以可預測的大小訓練工作負載。

以下頁面詳細說明每個佈建選項。
+  [使用 EKS Auto Mode 和 Karpenter 管理 AI/ML 工作負載的運算](ml-node-pools.md) 
+  [使用節點群組在 Amazon EKS 上管理 AI/ML 工作負載的運算](ml-node-groups.md) 

## 混合策略：合併購買選項
<a name="purchase-options-mixed-strategy"></a>

在單一 Amazon EKS 叢集中結合多個容量購買選項是很常見的。這種方法透過將不同的工作負載路由到最適當的容量來源，同時最佳化成本、可用性和可靠性。客戶使用三種 EKS 運算管理方法 (EKS Auto Mode、Karpenter 或 Node Groups) 中的任何一種實作此混合策略，或在相同的叢集中結合這些策略。

EKS Auto Mode 和 Karpenter 一律先佈建預留容量 (ODCRs和容量區塊），接著是 Spot 或隨需。您可以透過在預留容量上排定關鍵工作負載，以及在 Spot 或隨需執行個體上排定彈性工作負載，來耦合此執行個體佈建優先順序。您可以透過 Kubernetes 原生排程基本概念控制工作負載路由：`nodeSelector`鎖定特定容量類型、污點和容錯，隔離 NVIDIA GPU 或 AWS Trainium 節點，並將工作負載`topologySpreadConstraints`分散到可用區域以獲得高可用性。

精心設計的 Amazon EKS 叢集會將加速運算 NodePools 或節點群組組織成兩個類別：預留和爆量，每個類別都符合最適合容量策略的工作負載模式。範例說明如下。
+  **預留容量**：`gpu-reserved`NodePool 或節點群組會對 SLA 繫結服務和計劃運算密集型任務的預留容量 (ODCRs 和容量區塊） 執行生產推論和排定的大規模訓練。此 NodePool 或節點群組提供推論和生產工作負載：即時推論端點、生產模型服務，以及需要全年無休 GPU 可用性且效能可預測的業務關鍵應用程式。它還支援排定的運算密集型任務：規劃的分散式訓練、大規模微調實驗、有時間限制的研究專案，以及您事先知道開始時間和持續時間的任何工作負載。
+  **高載容量**：`gpu-burst`NodePool 或節點群組會處理實驗、臨機操作工作負載和批次處理。它使用 Spot 執行個體做為具有隨需備用的主要容量類型。此組合可最大限度地節省容錯工作負載的成本，並確保 Spot 無法使用時的容量。此 NodePool 或節點群組提供批次離線推論、資料預先處理管道、模型評估任務、開發和原型設計、無法預測的推論擴展、短期偵錯工作階段，以及任何可實作檢查點且可處理 Spot 中斷或不合理保留，但無法等待預留時段的工作負載。此 NodePool 或節點群組上的工作負載實作檢查點和正常關機，以在 2 分鐘 Spot 中斷時段內處理節點遺失。

使用 nodeSelector 指定工作負載所需的容量類型：`karpenter.sh/capacity-type: [spot, on-demand, reserved]`。以權重為基礎的佈建可在所有容量集區中有效率地擴展叢集。透過此架構，您可以在單一 Amazon EKS 叢集中執行各種 AI/ML 工作負載，從實驗筆記本到生產推論，同時最佳化成本。