從問 AI 到用 Agent · 架構補充

GPU 為什麼不夠用:產出 Model vs 使用 Model

很多人有個誤會:「我又不訓練模型,只是用它,為什麼還缺 GPU?」關鍵在一個架構的翻轉——以前 GPU 是拿來「產出」模型的(訓練完就還),現在光是「使用」模型,就把 GPU 一直佔住、還不掉。這才是 GPU 荒的根本。

🔀 兩個時代:GPU 被什麼吃掉

運算 / 步驟 模型 / 權重(參數集) GPU / VRAM 常駐 終態

🕰️ 過去 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 是被「推論」這個永不停止的工作吃掉,只要有人在用,它就一直被佔著。

📊 更大的差異:固定批次 vs 動態爆發

訓練再大也是「一批」——就算開 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 一起跑出一個字

模型不是資料庫,是「一大堆數字(權重)」。推論不是查表,是拿這些權重做大量矩陣運算——這正是 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
1模型 = 一大堆權重,分很多層不是查資料
訓練好的模型就是幾十億到上千億個數字(參數),排成很多層。它不「儲存答案」,而是用這些權重去算出答案。
2算一個字 = 跑一次 forward pass矩陣乘法
你的文字轉成向量,一層一層跟權重做矩陣乘法,最後算出「下一個字」的機率分布,挑一個字。GPU 最擅長這種大量平行的矩陣運算,所以推論交給它跑。
3逐字生成:接回去再跑一次autoregressive
挑出的字接回輸入,整個模型再跑一次算下一個字,一個一個接下去。回一段長答案 = 幾百次 forward pass——這就是為什麼「使用」是持續在燒 GPU。
4GPU 的兩個角色吃 VRAM + 吃頻寬
① 用 VRAM 一直裝著全部權重(所以吃 VRAM 容量);② 每個字都要把全部權重讀一遍做矩陣乘法(所以吃記憶體頻寬與算力)。這兩件事,就是「使用」永遠佔住 GPU 的原因。

🕰️ 為什麼以前租得到、用得起

1GPU 只在「訓練」時要一次性工作
過去 GPU 的重活是「產出一個模型」——訓練。訓練是有頭有尾的工作:租一批 GPU、跑幾小時到幾天、拿到模型,就把 GPU 還掉。用完即還,所以租得到。
2產出的模型小,用起來便宜間歇、輕量
傳統機器學習模型通常很小,訓練好之後拿去「使用」(推論),用 CPU 或一張普通卡就跑得動,而且是有需要才算一下、間歇性的。使用這一端幾乎不吃 GPU。

🔥 為什麼現在「只是使用」也不夠

1模型巨大,必須常駐 VRAM占著不放
LLM 動輒幾十億到上千億參數,要跑得動,整個模型得常駐在 GPU 記憶體(VRAM)裡。光是「把模型放著等人用」,就已經把整張 GPU 佔住了,即使沒人問也還不掉。
2每個字都要一次 GPU 運算持續運算
LLM 是一個字一個字吐的,每吐一個 token 就是一次完整的模型運算。回一段長答案 = 幾百次 GPU 運算。推論不再是「算一下就結束」,而是持續在燒算力。
3很多人同時用、要 24 小時開著還要複製很多台
一個服務要同時應付很多人、全天候不關,就得把模型複製到很多張 GPU 上、一直開著待命。使用者越多,綁住的 GPU 越多,而且不會像訓練那樣「跑完就還」。
4訓練沒消失,現在兩頭一起吃需求爆炸
別忘了:那些巨大模型還是有人在訓練,產出端照樣狂吃 GPU;現在又多了全世界的「使用端」也一起吃。以前只有產出吃,現在產出 + 使用兩頭同時吃,GPU 當然不夠。

💡 關鍵反直覺(很多人不知道的那一步)

🎯用 LLM ≠ 用以前的小模型
「我只是叫個 API、又沒訓練,為什麼也缺 GPU?」因為用 LLM 這件事本身,就是把一顆巨大模型常駐在 GPU 上、不停替你算。在 LLM 時代,「使用」才是那個永遠還不掉的 GPU 工作,不是只有「產出」才吃。這一步想通了,才看得懂為什麼地端、雲端到處都在搶 GPU。

🧱 這也是為什麼地端最卡的是 VRAM 與頻寬

既然「使用」要把整個模型常駐 GPU、還要一直算,那地端的瓶頸就很具體:VRAM 容量——模型放不進去就跑不動;記憶體頻寬——頻寬不夠,吐字就慢。這正是挑地端機器時真正該看的兩個數字,詳見「地端硬體限制」那頁。

📺 對應單集:GPU 為什麼不夠用:產出 Model vs 使用 Model  |  📚 回課綱總表 →