本地跑模型的玩家幾乎都遇過這個落差:社群上一片好評的模型,自己載進來卻答非所問、邏輯斷裂、連簡單指令都會漏。多數情況下,模型沒有問題,問題出在你和它之間的設定層。這篇把「本地 LLM 變笨」的常見原因整理成七個檢查點,按從最可能到最少見的順序排,照著走一遍,八成能找出兇手。

一、量化等級壓得太低

為了塞進顯存而選太激進的量化(例如把 27B 模型壓到 Q2),是最常見的「變笨」來源。量化會犧牲模型的精細判斷力,最先受影響的就是長鏈推理、數學和複雜指令遵循。排查方式很直接:把同一組測試 prompt 換到高一檔的量化(Q4 → Q6 或 Q8)跑一遍,如果答案品質明顯回升,就是量化在作怪。顯存不夠時,寧可換小一號的模型配高量化,也不要讓大模型在極低量化下硬撐。

二、context 長度設錯

第二個高發原因是 context window。很多推理框架的預設 context 遠小於模型的實際能力(例如預設 2048 或 4096 token),超出的部分會被靜靜截斷——模型不是變笨,是根本沒看到你貼的完整資料。症狀很典型:短對話正常,一貼長文件或長程式碼就開始胡說。檢查框架的 context 設定,把它拉到模型支援的長度,同時留意 KV cache 佔的顯存會隨 context 等比放大。

三、chat template 或提示格式不對

每個指令微調模型都有自己的對話格式(chat template):特殊 token、角色標記、system prompt 的位置。格式不對,模型收到的就是一段語意混亂的文字,輸出品質自然崩塌。如果你用自架伺服器或自行串接 API,請對照模型官方文件的 template,確認框架有正確套用。判斷方式:用框架內建的聊天介面測一次,再改用 raw completion 模式手動組 template 測一次,兩者品質差距大,問題就在這層。

四、採樣參數把模型「調笨」了

temperature、top-p、top-k、repetition penalty 這些採樣參數,對輸出品質的影響比多數人想像大。temperature 太高會讓推理發散、前後矛盾;太低又可能在長回答裡繞圈重複。不同模型家族有不同的建議組合,官方模型卡通常會給推薦值。排查原則:先回到官方建議或框架預設,確認品質基線,再逐步微調,不要同時動多個參數。

五、system prompt 與預設行為互相打架

很多前端工具會自動注入自己的 system prompt(角色設定、格式要求、安全提醒),疊加在你寫的指令之上。兩層指令互相衝突時,模型會用你想不到的方式「折衷」,看起來就像變笨或不聽話。把實際送出的完整 prompt 印出來看一遍——包括框架幫你加的部分——往往能解開「為什麼它一直不照我說的做」的謎團。

六、記憶體或顯存不足導致降速卸載

當模型層被部分卸載到系統記憶體(CPU offload),除了變慢,有些配置下還會影響可用的 context 與批次處理。用工作管理員或框架的狀態輸出確認:模型有多少層真的在 GPU 上?KV cache 放在哪?如果發現大量層被卸載,降一檔模型規模或量化,通常比硬撐大模型划算。

七、你比較的基準本身就不公平

最後一個原因在觀測端:你拿本地模型的表現,去比雲端模型的「最佳展示案例」。雲端服務背後可能是更大的模型、更長的 context、額外的檢索或工具鏈。本地模型的公平比較方式,是固定同一組你自己的測試 prompt,在調整設定的前後做 A/B,而不是追別人截圖裡的神奇表現。

建議的排查順序

把七個檢查點濃縮成一張順序表,照著走最省時間:

  • 第一步:確認 chat template 與框架預設正確套用(成本最低、命中率最高)。
  • 第二步:把 context 長度拉到模型規格上限附近,重測長輸入場景。
  • 第三步:採樣參數回到官方建議值,建立品質基線。
  • 第四步:換高一檔量化重測,確認是否量化損失。
  • 第五步:檢查 GPU 層卸載與 KV cache 位置,評估是否該降模型規模。
  • 第六步:印出完整送出的 prompt,揪出框架偷偷注入的內容。
  • 第七步:建立自己的固定測試集,之後每次調整都用它驗收。

常見問題

預算有限的台灣玩家,顯存該怎麼取捨?

與其追求「能跑的最大模型」,不如追求「在合理量化下跑得好的模型」。實務上,中等規模模型配 Q6/Q8 的實際體感,經常勝過大模型配 Q2/Q3。先把 context 和 template 調對,再來談模型大小。

同一個 GGUF 檔,換框架跑會有差嗎?

會。不同框架的預設 template、採樣參數、context 設定都可能不同,同一份模型權重也會跑出不同品質。跨框架比較時,先把這三項對齊,否則你比的是設定不是框架。

模型突然變笨,是更新造成的嗎?

有可能。框架更新可能改預設值,模型檔也可能換版本。養成記錄「模型檔版本+框架版本+關鍵設定」的習慣,出問題時才能快速對照差異。

結論

本地 LLM「變笨」很少是模型本身的問題,更多是量化、context、template、採樣參數這些設定層在拖後腿。把七個檢查點做成自己的排查清單,每次覺得模型不對勁就照順序走一遍——多數情況下,二十分鐘內就能把「笨模型」救回它本來的水準。