全部產品
Search
文件中心

Container Service for Kubernetes:AI負載調度

更新時間:Jun 19, 2024

本文介紹彈性資源調度、AI任務調度、異構資源調度和任務隊列調度,協助使用者提升叢集的資源使用率和作業運行效率。

彈性調度

ACK為不同彈性資源提供了混合調度的能力。

功能

描述

參考文檔

彈性調度

阿里雲提供了不同種類的彈性資源,如ECS和ECI,以及不同的付費類型如訂用帳戶、隨用隨付和搶佔執行個體等。

彈性調度提供差異化調度ECS和ECI資源的能力,支援自訂彈性資源優先順序調度策略。在應用發布或擴容過程中,按照自訂資源策略,設定應用執行個體Pod被調度到不同類型節點資源的順序。同時在縮容過程中按照原調度順序逆序縮容。

例如在擴容過程中,優先使用已有資源集區中的ECS資源,當ECS資源分派完之後,再使用ECI資源。當應用縮容時,可以優先縮容ECI節點,在提升效率的同時降低您的使用成本。

任務調度

ACK為批次運算的任務提供了Gang scheduling、Capacity Scheduling和ack-kube-queue。

功能

描述

參考文檔

Gang scheduling

All-or-Nothing作業要求所有的任務在同一時間被調度,如果只是部分任務啟動的話,啟動的任務將持續等待剩餘的任務被調度。在極端情況下,所有作業都處於掛起狀態,從而導致死結。

為瞭解決這個問題,阿里雲提供Gang Scheduling功能,保障所有相關聯的進程能夠同時啟動,防止因部分進程的異常而導致整個關聯進程組的阻塞的問題。

使用Gang scheduling

Capacity Scheduling

當叢集中有多個使用者時,通過Kubernetes原生的ResourceQuota方式進行固定資源分派,因為不同的使用者使用資源的周期和方式不同,會造成叢集的整體資源使用率較低。

ACK借鑒Yarn Capacity Scheduling的設計思路,基於Scheduling Framework的擴充機制,在調度側通過引入彈性配額組,實現Capacity Scheduling功能,在確保使用者資源分派的基礎上,通過資源共用的方式來提升叢集的整體資源使用率。

使用Capacity Scheduling

Kube Queue

調度器以Pod為單位進行調度。當叢集中任務類型的工作負載數量多時,會導致Pod對調度器的運行速率影響較大,並且不同使用者提交的作業之間存在相互影響。

任務隊列ack-kube-queue旨在管理Kubernetes中的AI/ML工作負載和批處理工作負載。允許系統管理員使用自訂隊列的作業隊列管理,以提高隊列的靈活性。結合Quota系統,ack-kube-queue自動最佳化了工作負載和資源配額管理,以便最大化利用叢集資源。

使用任務隊列ack-kube-queue

異構資源調度

ACK為CPU、GPU等異構資源提供了GPU共用調度、GPU/CPU拓撲感知調度等能力。ACK調度GPU使用的節點標籤資訊,請參見GPU節點調度屬性標籤

功能

描述

參考文檔

共用GPU調度

GPU共用調度可以降低使用GPU的經濟成本,保障程式啟動並執行穩定性。

ACK Pro版叢集支援以下GPU裝置分配策略:

  • 單Pod單GPU卡共用和隔離,常用於支援模型推理情境。

  • 單Pod多GPU卡共用和隔離,常用於支援分布式模型訓練代碼的開發。

  • 按GPU卡的Binpack和Spread分配策略,常用於提升GPU卡利用率和GPU高可用的情境。

共用GPU調度

GPU/CPU拓撲感知調度

調度器基於節點異構資源的拓撲資訊,如GPU卡之間的NVLink、PcleSwitch等通訊方式、CPU的NUMA拓撲結構等,在叢集維度進行最佳的調度選擇,為工作負載提供更好的效能。

FPGA調度

在進行FPGA計算時,通過Kubernetes叢集統一管理FPGA裝置。根據應用的需求,把資源調度到具有FPGA裝置的節點上。

調度負載至FPGA節點

任務隊列調度

ACK為AI/ML工作負載和批處理工作負載提供自訂的任務隊列調度能力。詳細資料,請參見使用任務隊列ack-kube-queue