用於 ML 工作負載的 Kubernetes
Kubernetes 是一個開源系統,可以跨機器叢集自動調度、擴展和重新啟動容器化程式。
概述
For machine learning, it lets teams pack GPU-hungry training jobs and latency-sensitive model servers onto shared hardware without babysitting individual servers.
深入探討
Kubernetes 最初是在 Google 上建置的,用於運行 Web 服務,它將您的叢集視為由 CPU、記憶體和 GPU 組成的大池,然後決定哪台機器運行每個容器。 ML 團隊之所以依賴它,是因為工作負載是突發性的且成本高昂:訓練運行可能需要 8 個 GPU 持續 6 個小時,然後什麼都不需要。 Kubernetes 將該 pod 調度到具有空閒 GPU 的節點上,當作業完成時,它會釋放硬體。它還使推理伺服器保持活動狀態,重新啟動崩潰的容器並在電腦之間傳播副本以實現彈性。 Kubeflow、Ray 和 KServe 等構建於其之上的工具添加了特定於 ML 的部分,例如分散式訓練運算符、超參數調整和自動縮放模型端點,因此資料科學家可以使用更高層級的抽象化而不是原始 YAML。
技術洞察
Kubernetes 透過裝置外掛程式分配 GPU,這些外掛程式會宣傳 nvidia.com/gpu 等資源,調度程式會根據 pod 的請求進行比對。污點和容忍度使廉價的 CPU 作業遠離昂貴的 GPU 節點,而節點選擇器和關聯規則將訓練固定到特定的硬體。對於多 GPU 訓練,操作員建立一組相互發現並執行 PyTorch DDP 或 Horovod 等框架的 Pod,使用 NCCL 在叢集網路上交換梯度。
戰略影響
成本與預算
多年來,架構決策決定著效能和營運成本。
更明確的決策
技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。
品質管控
更好的工程選擇可以減少生產中的可靠性事故。
ML 工作負載的 Kubernetes 的未來
期待更緊密的 ML 整合:群組調度會立即啟動所有分散式訓練 Pod,或完全不啟動;部分和時間切片 GPU 共享,以便多個輕量作業共享一張卡;以及尊重快速 NVLink 互連的拓撲感知佈局。 Kubernetes 上的無伺服器推理(將請求之間的端點擴展到零)正在成熟。隨著模型的膨脹,調度程式越來越多地跨多個叢集和雲端進行協調,Kueue 和 Volcano 等基於佇列的公平共享系統正在成為管理稀缺 GPU 容量的標準。
現實世界的實施
研究實驗室使用 Kubeflow Training Operator 在四個節點上啟動 32-GPU PyTorch 分散式訓練作業,然後在收斂時自動釋放 GPU。
一家電子商務公司透過 KServe 提供其推薦模型,該模型會在閃購期間自動擴展副本,並在一夜之間回落。
一家銀行以 Kubernetes CronJobs 的形式運行夜間批次評分作業,將它們在備用 CPU 節點上排隊,這樣它們就不會與白天的服務流量競爭。
一家新創公司使用 Kubernetes 上的 Ray 來運行並行超參數掃描,在現場實例上啟動數十個短期試用 Pod 以降低成本。
風險與防護欄
優化一項基準測試可以隱藏更廣泛的系統弱點。
基礎設施和維護成本常常被低估。
隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。
實施路線圖
在實施之前定義延遲、品質和成本目標。
在實際負載和資料條件下進行基準測試。
儀器監控錯誤、漂移和使用者影響。
在擴展之前準備回滾和事件回應路徑。
不斷探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Kubernetes for ML Workloads quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常見問題
What is Kubernetes for ML Workloads?
Kubernetes 是一個開源系統,可以跨機器叢集自動調度、擴展和重新啟動容器化程式。對於機器學習,它可以讓團隊將需要 GPU 的訓練作業和延遲敏感的模型伺服器打包到共享硬體上,而無需照顧單獨的伺服器。
Kubernetes 調度程式針對 ML 工作負載的主要工作是什麼?
調度程式將 Pod 的資源請求(CPU、記憶體、GPU)與可用節點進行匹配,並將 Pod 放置在適合的位置。它不涉及模型代碼或數據。
Kubernetes 通常如何為 Pod 提供 GPU 可用?
裝置外掛程式將 GPU 作為可調度資源(例如 nvidia.com/gpu)公開,讓 Pod 請求它們並讓排程器追蹤可用性。
ML 叢集中常用的污點和容忍有哪些?
污點會排斥節點上的 Pod;只有具有匹配耐受性的吊艙才能在那裡著陸。這為真正需要 GPU 的作業保留了稀缺的 GPU 節點。
哪個工具增加了 ML 特定的功能,例如在 Kubernetes 之上的分散式訓練運算子?
Kubeflow 將 ML 工作流程分層到 Kubernetes 上,包括訓練運算子、管道和調整,因此團隊可以避免手寫低階叢集配置。
為什麼 Kubernetes 非常適合突發性機器學習工作負載?
訓練過程非常激烈:短暫使用大量 GPU,然後就沒有了。 Kubernetes 在資源空閒時放置作業,並在完成後釋放它們,從而提高使用率。