一個新嘅排程功能,唔係一個新產品

AWS Batch 早喺先前就支援 Amazon SageMaker Training jobs,俾用户用 managed 嘅方式 queue、schedule 同 retry 機械學習(machine learning,ML)訓練工作負載,唔使自己建基礎設施。呢篇 blog 重點係喺頭先嗰個底座上面,加咗一個新嘅排程功能:quota management(配額管理)。

官方話,呢個係聽住客户聲聲入面最集中嘅一個請求。當 AI/ML 團隊越拓越多,協調共享 GPU 容量嘅溝通、協調同配置負擔就會越嚟越重:要設獨立 queue、要調整容量上限、要人工把對嘅工作負載排去對嘅資源。客户嘅要求好直接:畀我哋按團隊或項目定義分配、自動共享閒置容量、優先任務排頭。呢個功能就係為咗呢句説話而建。

點分配、點借出、點收返

管理員可以為每個團隊或項目定義一個 quota share(配額份)。每個 share 有兩樣嘢:

  • Compute quotas:容量上限,即個 share 最多可以用幾多計算資源。
  • Resource-sharing strategies:決定閒置算力點處理。有三個策略:
    • RESERVE:留低候用,唔畀人借
    • LEND:閒置時自動借出俾有工作嘅其他 share
    • LEND_AND_BORROW:閒置時借出,自己有工作時都可向其他 share 借

Quota share 運作上係一個 nested 喺 job queue 入面嘅 virtual queue。排程時 AWS Batch 會優先安排未達容量上限嘅 share。

兩個關鍵機制:

Cross-share preemption(跨 share 搶佔):當有 job 進入一個已經將容量借出嘅 lending share,AWS Batch 會自動收回嗰份資源,唔使管理員逐個 hunt 落嗰個借走容量嘅 job 再手動 terminate。

In-share preemption(share 內搶佔):開啟後,更高優先級嘅 job 可以搶佔同一 share 內處於 SCHEDULED、STARTING 或 RUNNING 狀態嘅低優先級 job,確保頭先排嘅高優先級任務能夠跑。

點開始用

官方指會透過 SageMaker Python SDK 配置。文內示範如何設定 lending/borrowing 策略同 in-share preemption。

阿調搞兩下

呢個功能解決嘅問題好實際:GPU 貴、稀缺、多團隊共用時最痛。以前係人工協調,而家係規則排程。LEND_AND_BORROW 呢個策略最值得留意——佢假設每個 share 嘅工作負載有高低峰差異,閒置時資源唔應該空轉。呢個思路本身值得參考,同企業內部算力調度嘅一般做法一致。

值得留意嘅係,呢個係排程層嘅功能,唔會改變 GPU 本身嘅容量或成本。佢令現有容量用得更密,唔係畀人免費加卡。對用雲嘅企業而家嘅實際價值,取決於佢哋現有 GPU 利用率高唔高、多團隊協作嘅痛點有冇真實存在。若只係單團隊、低併發嘅環境,呢個功能嘅意義會細好多。