從問 AI 到用 Agent · 🟠 工程

地端硬體怎麼看

VRAM、頻寬,以及 GPU 為什麼不夠用

▶ 看影片 🎓 L4 工程 🎬 14 個段落 🀄 投影片 + 逐字稿
本集開場

很多人下定決心要在自己家裡跑 AI,買了機器才發現跑不動 —— 不是根本開不起來,就是慢到想哭。問題常常不是「算力不夠」,而是卡在別的地方。接下來我先講清楚 AI 在運算的時候到底在做什麼,你就會知道該看哪兩個數字,以及為什麼現在 GPU 到處都不夠用。

1

先破一個誤會:它不是資料庫

逐字稿

先破一個很多人有的誤會:語言模型不是一個資料庫。它不是把全世界的答案存起來,你問它就去查一筆給你。它其實是一大堆數字 —— 我們叫它權重或參數 —— 分成很多很多層。你問它問題,它是拿你的問題,一層一層跟這些數字做運算,「算」出一個答案來。是算,不是查。這個差別決定了它為什麼這麼吃硬體。

2

算一個字,就要跑完整台模型

🔢
逐字稿

我們把它算一個字的過程拆開來看。你的文字會先被轉成一串數字,然後一層一層跟權重做矩陣乘法,最後算出「下一個字最可能是什麼」的機率,從裡面挑一個出來。重點來了:這樣跑完一整趟,只產出一個字。

3

一個字接一個字,重跑好幾百次

🔄
逐字稿

挑出來的那個字,會被接回輸入的最後面,然後整個模型再從頭跑一次,算出再下一個字。一個接一個,像這樣一路接下去,這個機制叫做自迴歸。所以當它回你一段兩三百字的答案,意思是它把整台模型從頭跑了兩三百次。你就知道為什麼它這麼吃資源了。

4

所以第一個關卡:裝不裝得下

📦
逐字稿

從剛剛那個機制,直接推出第一個關卡:VRAM,也就是 GPU 記憶體。因為每算一個字都要用到全部的權重,所以模型必須整個搬進 GPU 記憶體裡待著。VRAM 不夠會怎樣?模型會被迫拆一部分放到一般記憶體去跑,結果就是**慢到不能用** —— 不是完全開不起來,是開了你不會想用。另外提一下:有些機器是 CPU 跟 GPU 共用同一池記憶體,規格表上不會單獨寫 VRAM,那種要看的是整台的記憶體大小跟它的頻寬,判斷邏輯一樣,只是欄位名稱不同。還有一件很重要、但幾乎沒人一開始就講的事:**VRAM 不是只被權重佔走**。模型算過的內容會被快取起來,免得每次重算 —— 你餵進去的資料越長、對話拉越久,這塊快取就越大。所以估記憶體不能只算模型本身,還要留一塊給「你打算一次餵多長的東西」。很多人是模型明明裝得下,結果一丟長文件進去就爆掉,原因就在這裡。

5

模型多大?看參數量,裝不下可以壓

🎚️
逐字稿

那模型多大怎麼看?看參數量。參數你可以想成模型腦袋裡的旋鈕,越多通常越聰明,但也越佔記憶體。給你一個可以自己算的方式:**把參數量乘上「每個參數佔幾個位元組」,就是權重大概要多少記憶體**。沒壓縮過的通常是一個參數兩個位元組。如果裝不下怎麼辦?有個方法叫量化,原理是**降低每個參數的儲存精度** —— 本來每個參數用比較多位元存,現在用比較少的位元存,整包模型就縮小了,常見的檔次大概能壓到四分之一。而且好處不只是省空間:因為每吐一個字都要把整包權重讀一遍,**模型變小,搬的量也變小,連速度都會一起變快**。代價是品質會折損,但壓到常見的那幾檔通常不太感覺得出來;**壓過頭就會開始變笨**,不要為了硬塞進去一直往下壓。

6

第二個關卡:頻寬決定跑多快

🚰
逐字稿

第二個關卡是記憶體頻寬,這是最多人忽略、也最容易踩到的死穴。回想剛剛:每吐一個字,都要把權重讀出來算一遍。如果頻寬不夠,GPU 就會一直在等資料搬過來,卡的不是「算」,是「搬」。很多人買了一張帳面算力很漂亮的卡,結果慢到想哭,原因就在這裡。這個也可以自己粗估:**用這張卡的記憶體頻寬,除以你這包模型的大小,大概就是它每秒能吐幾個字的上限**。算出來的是天花板,實際只會更低 —— 但如果連天花板都低到你不能接受,那就不用買了。不過要補一個分別,不然你會誤會算力沒用。推論其實有兩段:**第一段是把你送進去的東西整份讀完**,這段可以一次平行處理,**吃的是算力**;**第二段才是一個字一個字吐出來**,這段吃的是頻寬。所以你的體感也會分兩種:「按下去要等很久才開始講話」通常是算力不夠,「開始講之後一直慢慢吐」才是頻寬不夠。你如果常常整份文件丟進去,第一段就會很有感。

7

比喻:水塔和水管

💧
逐字稿

用一個比喻你就記住了。記憶體容量就像水塔的大小,決定你裝不裝得下;頻寬就像水管的粗細,決定水流得快不快。水塔蓋得再大,水管如果細,水還是一滴一滴地流。而且這個比喻要再加一句才完整:**你不是裝著慢慢用,是每吐一個字,就要把整座水塔的水從水管過一遍**。所以模型越大 —— 水塔越大 —— 每個字要搬的量就越多,速度就越慢。這就是為什麼「大模型比較慢」不是感覺,是算出來的。

8

一個解法方向:MoE 架構

🧠
逐字稿

有一個解法方向值得知道,叫 MoE,混合專家架構。它的想法是:每次回答不需要動用整台模型,只喚醒其中一小部分專家就好。用到的部分少,每吐一個字要搬的資料就少,所以**速度快很多**。但這裡有個很多人搞錯的地方,而且搞錯會讓你買錯機器:**MoE 省的是頻寬跟算力,不省記憶體。**因為下一個字會用到哪幾個專家,是臨時決定的 —— 所以全部專家的權重還是得整組放在記憶體裡待命。你看到有些模型標榜「總參數很大、實際啟用只有一小部分」,**裝不裝得下要看的是總參數,跑得快不快才是看啟用的那部分**。用剛剛的比喻:水塔一樣大,只是每次只抽其中一格。

9

第三個關卡:整機,不是只看顯卡

🔩
逐字稿

第三個關卡是整機配置。除了 GPU 之外,系統記憶體、儲存速度、甚至散熱,任何一環卡住,整台機器都會被拖慢。散熱尤其容易被忽略 —— 溫度上去,晶片會自己降頻保護,你就會遇到「剛開始很快、跑一陣子變慢」的狀況。另外,如果你打算靠「插兩張卡」來湊 VRAM,要多看一件事:**模型被切到兩張卡上時,卡跟卡之間要一直傳資料**,這條通道如果慢,你加的第二張卡發揮不出應有的效果。電源瓦數也要一起算進去。還有一個影響很大、但很少人講的:**同時幾個人在用**。因為權重讀一次可以同時服務好幾個請求,所以多人一起用的時候,整台機器的總產出會比一個人用高很多,不是照人數線性變慢。反過來說,**決定你該買多大機器的不是「一天總共用多少」,是「尖峰的時候幾個人同時在用」**。

10

為什麼現在 GPU 到處都不夠

⏱️
逐字稿

順便解釋一件很多人不解的事:為什麼現在 GPU 這麼難搞到。以前 GPU 最吃力的工作是訓練,也就是產出一個模型。訓練有頭有尾 —— 大模型的訓練可能一口氣用上非常多張卡、連續跑好幾週,但**它會結束**,結束了機器就還回去。數量跟時數是可以估算、可以排隊的。現在多出來的那一塊是「使用」。模型要常駐、要二十四小時待命、每一個字都要即時算。**不是訓練變少了,是使用長出了一塊更大的、而且永遠不會結束的需求。**

11

而 Agent 讓需求更爆

💥
逐字稿

Agent 又把這件事放大了一層。以前是一個人問一句、算一次;現在一個 Agent 接到任務,會自己拆成一堆子任務、自己反覆呼叫模型好幾十次。而你可能還一次派出很多個 Agent 同時跑。所以帳面上你只交辦了一件事,底下卻是一堆 GPU 同時被啟動。這就是為什麼需求會爆得這麼快。

12

挑機器怎麼判斷?三問

🧭
逐字稿

所以要判斷一台機器適不適合,問三題就好,而且有先後順序。第一題:VRAM 夠不夠裝下你要跑的模型 —— 記得要含對話快取那一塊。裝不下,就會被逼著拆一半到一般記憶體跑,速度直接掉一個檔次。第二題:頻寬夠不夠?這決定你用起來順不順、會不會慢到不想用。第三題:整機還有沒有藏瓶頸?記憶體、儲存、散熱有沒有拖後腿。先看裝得下,再看跑得動,最後看有沒有暗樁。

13

誠實提醒:地端追不上雲端最強

🙏
逐字稿

最後講一句誠實話,免得你期待錯方向。你在家裡組的機器,能跑的模型通常還是比不上雲端最頂那幾個 —— 但我要把這個差距講準一點:**這是時間差,不是等級差**。地端能跑的,大致是雲端前一段時間的水準,而那個水準對你手上大部分的事情其實夠用。真正卡住你的不是「地端」這兩個字,是你的預算跟這台機器的記憶體大小。所以地端的價值不是「我要最強」,而是「夠用,而且資料在我自己手上」。你買的是掌控權和資料主權,不是效能冠軍。

14

帶走一句話

💡
水塔決定裝不裝得下,水管決定流得快不快 —— 兩個都要看。
逐字稿

如果今天你只帶走一句話:買地端千萬別只看算力那個數字。先看裝不裝得下,那是 VRAM;再看跑不跑得動,那是頻寬。順序不能顛倒,因為裝不下的話,頻寬再高也沒有意義。而 GPU 之所以現在到處都不夠用,是因為它已經不是被「產出模型」吃掉,而是被永不停止的「使用」吃掉的。下次看規格表,先找這兩個數字。