很多人有個誤會:「我又不訓練模型,只是用它,為什麼還缺 GPU?」關鍵在一個架構的翻轉——以前 GPU 是拿來「產出」模型的(訓練完就還),現在光是「使用」模型,就把 GPU 一直佔住、還不掉。這才是 GPU 荒的根本。
🕰️ 過去 ML:GPU 吃在「產出」,用完就還
flowchart LR O1["租一批 GPU"]:::proc --> O2["訓練
產出一個 model"]:::proc O2 --> O3(["訓練完
還掉 GPU"]):::result O2 --> O4{{"產出的小模型
一組參數"}}:::model O4 --> O5["拿去用
CPU 或輕量卡就夠
便宜 · 間歇"]:::proc classDef model fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#581c87 classDef proc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#17335e classDef result fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d
🔥 現在 LLM:GPU 吃在「使用」,永遠還不掉
flowchart LR
N1{{"巨大模型
幾十億到
上千億參數"}}:::model --> N2["必須常駐
GPU 記憶體 VRAM
不放進去跑不動"]:::infra
N2 --> N3["每吐一個字
都要一次
GPU 運算"]:::proc
N3 --> N4["很多人同時用
24 小時不停"]:::proc
N4 --> N5(["GPU 被永久佔住
還不掉"]):::result
classDef model fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#581c87
classDef proc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#17335e
classDef result fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d
classDef infra fill:#e5e9f0,stroke:#475569,stroke-width:2px,color:#1e293b
一句話:以前 GPU 是被「訓練」這個一次性工作吃掉,做完就釋放;現在 GPU 是被「推論」這個永不停止的工作吃掉,只要有人在用,它就一直被佔著。
訓練再大也是「一批」——就算開 18 台機器跑好幾天,數量和時數是固定的、排得出來、租得到。現在的 AI 不一樣:每一句話都要即時算,而一個 Agent 開一堆 task,就要一堆 GPU 同時啟動——需求是隨時爆發、沒有上限的。
📦 訓練:固定一批
flowchart LR F1["排定 N 台機器
× 固定時數"]:::proc --> F2["整批一起跑
幾小時到幾天"]:::proc F2 --> F3(["跑完就結束
用量有上限 · 可預估 · 可租"]):::result classDef proc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#17335e classDef result fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d
💥 現在:每句話都算,Agent 一開更爆
flowchart LR S1["每一句話
都即時算一次"]:::proc --> G["瞬間需要
大量分散式 GPU
同時啟動"]:::infra A(["一個 Agent"]):::result --> K["開一堆 task
並行子任務"]:::proc K --> G G --> R(["隨時爆發 · 沒有上限
永遠喊不夠"]):::result classDef proc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#17335e classDef result fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d classDef infra fill:#e5e9f0,stroke:#475569,stroke-width:2px,color:#1e293b
呼應「多 Agent 並行」那集:你一次派越多 Agent、每個 Agent 又各自開越多 task,底下要同時啟動的 GPU 運算就成倍暴衝。訓練是「一批固定的量」,Agent 時代是「隨時可能炸開的量」——這才是 GPU 永遠喊不夠的深層原因。
模型不是資料庫,是「一大堆數字(權重)」。推論不是查表,是拿這些權重做大量矩陣運算——這正是 GPU 的強項,也正是它被吃掉的地方。
flowchart LR IN["你的文字
目前為止的所有字"]:::proc subgraph GPUZONE["🖥️ GPU 推論時做兩件事"] direction TB W{{"模型權重
幾十億參數
常駐 VRAM"}}:::model MM["逐層矩陣乘法
跑一次 forward pass"]:::proc W -. 每次都要讀過全部權重 .-> MM end OUT(["算出下一個字的機率
挑一個字輸出"]):::result IN --> MM MM --> OUT OUT -. 把新字接回去 · 再跑一次 · 逐字生成 .-> IN classDef model fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#581c87 classDef proc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#17335e classDef result fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d style GPUZONE fill:#eef2ff,stroke:#a5b4fc,color:#3730a3
既然「使用」要把整個模型常駐 GPU、還要一直算,那地端的瓶頸就很具體:VRAM 容量——模型放不進去就跑不動;記憶體頻寬——頻寬不夠,吐字就慢。這正是挑地端機器時真正該看的兩個數字,詳見「地端硬體限制」那頁。
📺 對應單集:GPU 為什麼不夠用:產出 Model vs 使用 Model | 📚 回課綱總表 →