原來整理 GPU,也是在做裝箱演算法

最近在研究本地 AI 推理環境時,遇到一個非常有趣的問題。

我的測試主機配置了三張 RTX 3060 12GB 顯示卡。其中兩張透過 PCIe x16 運作,另一張則作為亮機卡使用,只連接 PCIe x4。

乍看之下,總共有 36GB VRAM 可供運用。然而在實際部署大型語言模型時,事情遠比想像中複雜。

有些模型可以獨立運行於單張 GPU;有些模型則需要跨兩張 GPU 分攤權重;還有些模型雖然容量不大,卻需要與其他服務共同分享有限的記憶體空間。

這讓我開始思考一個問題:

如何讓有限的 GPU 資源,發揮最大的模型部署效益?

Bin Packing:經典的裝箱問題

深入研究之後,我發現自己面對的其實是一個經典的電腦科學問題:Bin Packing(裝箱問題)。

所謂裝箱問題,可以用生活中的行李打包來理解。

  • 每張 GPU 就像一個行李箱。
  • 每個 AI 模型就是一件行李。
  • GPU VRAM 就是行李箱容量。
  • 模型大小則是行李體積。

目標是在不超過容量限制的前提下,把所有行李放進有限的箱子裡,並盡可能提高空間利用率。

這看似簡單,實際上卻是著名的 NP-Hard 問題之一。

真實世界比數學題更複雜

如果只是比較模型大小與 VRAM 容量,問題其實不難。

然而在實際部署環境中,還會出現許多額外限制:

  • 某些模型禁止部署於亮機卡。
  • 某些模型必須跨兩張 GPU 運行。
  • 不同 PCIe 插槽具有不同頻寬。
  • 部分服務需要優先啟動。
  • 部分服務適合共享同一張 GPU。

例如 Embedding 模型通常較小且負載穩定,因此適合配置於亮機卡。

而大型推理模型則更適合使用完整 PCIe x16 頻寬的 GPU,甚至同時使用兩張顯示卡共同承載。

從 AI 模型部署到 GPU Scheduler

隨著需求增加,我開始設計一套簡化版 GPU Scheduler。

它會根據模型大小、GPU 容量與部署限制,自動完成以下工作:

  • 分析模型需求。
  • 計算最佳 GPU 配置。
  • 自動產生服務啟動順序。
  • 避免 VRAM 超額配置。
  • 輸出完整部署計畫。

從某種角度來看,這其實已經與 Kubernetes、Nomad 或雲端資源調度系統有幾分類似。

只不過被調度的對象不再是伺服器節點,而是 GPU。

工程的樂趣就在這裡

很多時候,我們以為自己正在研究某個特定技術。

但當持續深入之後,往往會接觸到更底層的原理。

原本只是想讓大型語言模型順利運行。

最後卻一路接觸到演算法、排程理論、資源管理與系統架構設計。

這也是工程工作最吸引人的地方。

每個真實世界的問題背後,都藏著值得探索的知識體系。

而每一次優化,都是一次理解世界運作方式的機會。


延伸思考:

當我們談論 AI 時,許多人關注的是模型本身。

但在實務環境中,如何有效配置 GPU、安排推理服務與管理系統資源,往往同樣重要。

畢竟,再強大的模型,也需要一個好的資源調度策略,才能真正發揮價值。

Last modified: 2026-06-08

Author

Comments

Write a Reply or Comment

Your email address will not be published.