LLM 到底是什麼?
LLM 本質上是一個函式:輸入文字,輸出下一個 token 的機率分布。生成就是把這個函式放進迴圈裡——取樣一個 token、附加到後面、把全部內容再餵回去、重複——直到出現停止 token 或觸發長度上限。所有建立在 LLM 上的產品,從聊天應用到寫程式的智慧代理,都只是包在這個迴圈外的編排層。
模型檔案本身只有兩樣東西:數十億個浮點數權重(即參數),以及一個把這些權重組合起來的固定計算圖(見 transformer 內部)。裡面沒有資料庫、沒有規則引擎、也沒有暫存的記憶。推論時權重是凍結的;模型在對話中「記得」的任何東西,都只是你提示詞視窗裡的文字。
核心迴圈
整個生成引擎的虛擬碼。任何廠商出品的引擎都不比這更深:
tokens = tokenize(prompt)
while not done and len(tokens) < max_context:
probs = model(tokens) # 一次前向計算
next = sample(probs, temperature)
tokens.append(next)
stream_to_user(next)
if next == stop_token:
done = True
這個迴圈中有兩個旋鈕主宰了日常行為,而且都不在權重裡:溫度(取樣的冒險程度)與最大上下文(能塞進多少對話)。兩者都是引擎套用的執行期設定(見 引擎參數)。
權重的實體樣貌
一個「7B」模型就是 7,000,000,000 個浮點參數。儲存大小只取決於精度,與聰明與否無關:
| 精度 | 每參數位元組 | 7B 模型大小 |
|---|---|---|
| FP16(原生) | 2 | ~14 GB |
| 8-bit 量化 | ~1 | ~7 GB |
| 4-bit 量化 | ~0.55 | ~4 GB |
同樣的權重、更粗的儲存——用一點點品質換取大量記憶體(見 量化)。參數量在訓練當下就固定了;使用模型永遠不會改變它。
規模階梯
參數量是一把粗糙但誠實的尺,標記了各個年代到來的東西:
| 等級 | 參數量 | 年代 | 能做到什麼 |
|---|---|---|---|
| GPT-2 | 125M–1.5B | 2019 | 通順的段落,事實容易出錯 |
| GPT-3 | 175B | 2020 | 少樣本提示開始生效 |
| 小而美(Phi-3、Qwen 3B) | 3–4B | 2024 | 真正好用的輕量助理 |
| 開源 7B(Mistral、Llama 2) | 7B | 2023 | 在單張消費級 GPU 上穩定處理對話與程式 |
| 開源 70B 級 | 70B | 2023+ | 接近前緣的推理能力;需要 2×24 GB |
| 開放前緣稠密模型(Llama 3.1) | 405B | 2024 | 前緣級開放權重,需多張 GPU |
| MoE 前緣 | 總計 100B–600B+,活躍 10–40B | 2024+ | 同級最佳輸出,服務成本合理 |
每一階大約是上一階的 10 倍,而且每一階都解鎖了較小模型根本產生不了的行為——不是「一樣但稍微好一點」。規模帶來技能;包裝讓它們可用。
跨連線沒有記憶
模型是無狀態的。狀態存在於對話中:你與它產生的、持續累積的 token 視窗。關掉分頁它就消失了;開新對話,它不知道你是誰。所有「記憶」功能都是一層包裝,把舊文字重新注入新的提示詞。
實際的後果:視窗裡留下的,就是它現在知道的全部。一旦視窗裝滿,冗長的對話會悄悄截掉自己的開頭——模型不會「察覺」少了那些文字(見 token 與分詞器)。
流暢不等於正確
訓練目標是合理的接續,而不是事實。幾個尖銳的面向:
- 模型會產生自信、格式漂亮的錯誤內容。幻覺是下一個 token 預測的固有特性,不是有人忘了修的 bug。
- 流暢度是很差的真實訊號:錯誤答案讀起來跟正確答案一樣好。
- 校準很不穩。問它「你有多少把握?」常常得到一個編出來的數字。
- 常見事實是可靠的——它們在訓練中出現過數百萬次。長尾事實則平滑地退化成自信的虛構。
- 模型偏向迎合:反駁一個正確答案,它可能就讓步。正確與自信是不同的軸。
- 強制可驗證的輸出(要填欄位的 JSON、選擇題)勝過要求模型自我反省。
知識在訓練時就凍結了
模型知道的一切都在訓練時就烤進權重裡了;知識有截止日,聊再多也不會更新權重。要新的資訊,得把文字餵進上下文(檢索)或重新訓練(見 訓練流程)。模型也無法引用某個事實的出處——它沒有語料庫的索引,只有語料庫在權重中的回聲。
能力的到來並不均勻
規模不是平滑地增加技能:
- 3B 以下:自動補全、抽取、分類還不錯;多步推理大多失敗。
- 7–9B:可靠的指令遵循、像樣的程式碼;算術與長鏈推理仍不穩。
- 30B 以上:規劃、細膩度、更難的程式——來得晚而且有點突然。
- MoE 讓階梯變複雜:以活躍參數判斷,而不是總參數。
所以「越大越好」平均而言成立、細節上卻誤導:有些任務很早就到高原,有些很晚才開竅。用你自己的任務做基準測試,而不是憑感覺(見 如何選模型)。
產品就是包裝過的迴圈
當你使用任何 LLM 產品時,大致發生以下過程:
- 你的文字被切分為 token。
- 系統提示詞、工具定義、檢索到的文件與對話歷史被串接成一個提示詞。
- 模型執行上述迴圈並串流輸出 token。
- 外包裝程式碼解析輸出、呼叫工具、把結果餵回去、重新提示。
- UI 渲染 markdown,然後把這稱為對話。
步驟 1、2、4、5 都不是模型。一旦你把「模型是一個有固定視窗、無狀態、文字進文字出的函式」內化,本指南其餘部分就只是記帳:視窗有多大(token 與分詞器)、迴圈跑多快(預填與解碼)、在哪裡跑(硬體總覽)、以及怎麼引導它(提示詞)。
相關章節: token 與分詞器 · transformer 內部 · 參數量 · 訓練流程