VIP 專屬 部署與推理優化 實戰

GPU 資源排程:讓訓練與推論共用叢集

訓練與推論搶卡是常見痛點。這是可運作的分時與優先權設計。

部署與推理優化教程封面

多數團隊的 GPU 都不夠用,訓練任務與線上推論會互相搶。放任不管的結果通常是:某次訓練把卡吃光,線上服務跟著掛掉。

解法有三個層次:物理隔離、時間分割、以及優先權搶佔。

層次一:物理隔離(最簡單也最可靠)

把卡分成兩池:線上池與訓練池。線上池的卡絕不給訓練用。缺點是離峰時線上池閒置,但換來的穩定性通常值得。

層次二:時間分割

# 用排程把訓練限制在離峰時段
# 0 2 * * * 只在凌晨 2 點到 6 點跑訓練
0 2 * * * /usr/local/bin/train.sh --deadline 06:00

層次三:優先權與搶佔

  • 線上推論的優先權最高,永遠不被搶佔。
  • 訓練任務可被搶佔,但必須支援檢查點續跑。
  • 批次推論介於兩者之間。
# 訓練腳本必須能優雅地被中斷
import signal

class Preemptible:
    def __init__(self): self.stop = False
    def handle(self, *_): self.stop = True

p = Preemptible()
signal.signal(signal.SIGTERM, p.handle)

for step, batch in enumerate(loader):
    train_step(batch)
    if step % 50 == 0 or p.stop:
        save_checkpoint(step)
        if p.stop:
            sys.exit(0)      # 下次從檢查點續跑

監控使用率

排程的前提是知道實際使用率。多數團隊會發現訓練池的利用率其實只有三成——問題不是卡不夠,是排程沒做好。

# 每分鐘取樣,區分「配置給誰」與「實際使用率」
nvidia-smi --query-gpu=index,utilization.gpu,memory.used,memory.total \
           --format=csv,noheader,nounits -l 60

配額與公平性

  • 每個團隊或專案有 GPU 時數配額,用完要申請。
  • 長時間佔用不釋放的互動式工作階段要自動回收(例如閒置兩小時)。
  • 排隊要透明:讓大家看得到目前佇列與預估等待時間。
互動式開發用的 Jupyter 工作階段是最大的浪費來源。人下班了、卡還佔著。務必設定閒置自動回收,並事先公告規則。
🔒

訂閱後繼續閱讀全文

本篇為訂閱者專屬內容。訂閱後可取得下列權限:

  • 解鎖全部內容權限
  • 閱讀不限篇數
  • 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6

一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。

立即訂閱

金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策