📌 30 秒摘要

一份把 LLM 從零到上線拆成三條學習路徑的地圖:LLM Fundamentals(數學/Python/神經網路/NLP,可跳過)、The LLM Scientist(架構、預訓練、後訓練資料、SFT、偏好對齊、評估、量化、新趨勢)、The LLM Engineer(跑模型、向量儲存、RAG、進階 RAG、Agent、推論最佳化、部署、安全)。24 個理論主題 + 23 本 Colab notebook + 150 多個外部參考,本身不含可執行程式碼,定位是導航中樞

🗺 心智圖(Canvas)

LLM Course 課程文件

🎯 什麼情境該想到我

當你已經確定「提示工程與 RAG 都不夠,這次真的要微調」(那個判斷見 工具-微調與RAG的取捨),接下來要決定用哪種微調方式、吃多少 VRAM、用哪個框架的時候。

⚙️ 怎麼用(步驟 / 公式)

  1. 先確認 SFT 能不能解你的問題:SFT 教的是「怎麼回答」——結構化輸出、遵循指令、對話格式。它只能重新喚起預訓練already有的知識,無法憑空教會模型新的語言或領域能力。要灌新知識請走 RAG。

  2. 資料優先於超參數:高品質的指令—回應配對,效果勝過在爛資料上狂調參數。先把資料集做對。

  3. 依 VRAM 選訓練方式

    方式做法代價
    Full Fine-Tuning更新全部參數VRAM 隨模型大小暴增,彈性最大,產出全新 checkpoint
    LoRA凍結原權重,在注意力層加上低秩矩陣 W' = W + BA可訓練參數大幅減少
    QLoRA基礎模型存成 4-bit NormalFloat + LoRA adapter 用 FP16/BF16 訓練單張 48GB GPU 就能微調 65B,品質相對 LoRA 掉很少
  4. 設定 LoRA 關鍵參數

    • r(秩):分解的維度,常用 16–128
    • alpha(縮放):通常設 rank 的 1–2 倍
    • target_modules:要掛 adapter 的層,常見 q_projv_projk_projo_proj
  5. 選框架TRL(Hugging Face 官方,SFTTrainer 自動處理資料格式,同一套還能接 DPO/PPO)、Axolotl(設定檔驅動)、Unsloth(速度與記憶體優化)。

🧪 我實際套用的紀錄

  • 2026-08-01:從 LLM Course 收錄,尚未實際跑過。

⚠️ 注意 / 什麼時候不適用

  • SFT 只是表層適配。期待它教會模型全新領域知識會失望——那是預訓練或 RAG 的工作。
  • 微調完必須有評估集才知道有沒有變好,否則只是換個貴的方式瞎調(見 工具-AI系統評估)。
  • QLoRA 省 VRAM 但訓練較慢;資源夠的話 LoRA 品質與速度較平衡。

🔗 相關工具

🎯 什麼情境該想到我

當你的模型已經做完 SFT、會照指令回答了,但回答的語氣、有用程度、安全性還不到位,想用人類偏好把它調到位的時候。

⚙️ 怎麼用(步驟 / 公式)

  1. 確認位置:偏好對齊是後訓練的第二階段,前面必須先有 SFT 模型(見 工具-LLM微調實作路線)。它原本用來調語氣、降毒性、減幻覺,現在也被用來大幅提升推理任務表現

  2. 依算力與目標選演算法

    方法算力成本最適合需要獎勵模型
    DPO Direct Preference Optimization低—中聊天模型、一般對齊
    ORPO Odds Ratio Preference Optimization單階段對齊(SFT 與對齊合併)
    GRPO Group Relative Policy Optimization中—高推理型模型否(改用獎勵函式)
    PPO Proximal Policy Optimization複雜推理任務
  3. 算力有限就走直接最佳化路線(DPO / ORPO):訓練循環快、不必額外訓一個獎勵模型。

  4. 要衝推理品質才考慮 RL 路線(GRPO / PPO):彈性更大、天花板更高,但成本與不穩定性也高。

  5. 用拒絕採樣(Rejection Sampling)產生 on-policy 偏好資料:讓「正在訓練的那個模型」對每個 prompt 生成多個候選,再挑出好壞配對。好處是 chosen 與 rejected 都來自模型當前的分布:

    面向On-policy(拒絕採樣)Off-policy(現成資料集)
    分布吻合反映模型當前行為可能與現在的輸出對不上
    訓練穩定性較穩容易分布偏移

🧪 我實際套用的紀錄

  • 2026-08-01:從 LLM Course 收錄,尚未實際跑過。

⚠️ 注意 / 什麼時候不適用

  • 順序不能顛倒:沒做過 SFT 就直接對齊,等於在還不會聽指令的模型上調語氣。
  • PPO 需要另外訓練並維護獎勵模型,工程複雜度是 DPO 的數倍,沒有明確理由不要一開始就選它。
  • 偏好資料的品質決定上限,配對標得含糊,演算法再高級也救不回來。

🔗 相關工具

🧑‍🔬 訓練與調校

🎯 什麼情境該想到我

當你想把一個大模型塞進手上的硬體——降精度換記憶體,卻不知道該降到幾位元、選哪種格式、品質會掉多少的時候。

⚙️ 怎麼用(步驟 / 公式)

  1. 先算記憶體帳。以 70B 模型為例:

    格式每參數位元需要記憶體目標硬體品質損失
    FP3232~280 GB多卡叢集基準
    FP1616~140 GB高階 GPU幾乎無 (~0%)
    INT88~70 GB中階 GPU低 (~1–2%)
    INT4 (GPTQ)4~35 GB消費級 GPU中等 (~3–5%)
    Q4_K_M (GGUF)~4.5~40 GB消費級硬體中等 (~3–5%)
    INT22~17 GB受限裝置高 (~10–15%)
  2. 沒有獨顯、要在 CPU 上跑 → 選 GGUF + llama.cpp。GGUF 的特點:單一檔案就含模型/tokenizer/詞表/metadata、支援 mmap 快速載入、可對不同層用不同精度。

  3. 看懂 GGUF 代號Q<位元>_<變體>):

    型別每權重位元用途
    Q2_K~2.5極限壓縮,品質最差
    Q4_K_M~4.5品質/體積最佳平衡,預設首選
    Q5_K_M~5.5品質優於 Q4
    Q6_K6.0接近 FP16 品質
    Q8_08.0品質損失極小
  4. 有 GPU 要跑推論服務 → 走 GPTQ / AWQ / EXL2 這類 GPU 導向格式。

  5. 理解底層兩種基本做法absmax(對稱,scale = max(abs(tensor))/127,簡單快速但怕離群值)與 zero-point(非對稱,把完整值域映射到整數範圍,偏斜分布時精度較好)。

🧪 我實際套用的紀錄

  • 2026-08-01:從 LLM Course 收錄,尚未實際跑過。

⚠️ 注意 / 什麼時候不適用

  • 表中的品質損失是量級參考而非保證值,實際掉多少要用自己的評估集量(見 工具-AI系統評估)。
  • 別一路壓到 2-bit 省記憶體,10–15% 的品質損失通常讓模型變得不堪用。
  • 量化縮的是模型體積,不會讓生成速度自動變快——那是推論最佳化的工作。

🔗 相關工具

🎯 什麼情境該想到我

當模型品質已經夠用,但回應太慢、長輸入就爆記憶體、每次呼叫太貴——問題出在推論階段而不是模型本身的時候。

⚙️ 怎麼用(步驟 / 公式)

  1. 先分辨瓶頸屬於哪一類:注意力運算(隨序列長度平方成長)/重複計算(每生成一個 token 就重算前面所有 token)/逐字生成(自迴歸天生序列化)。三種瓶頸各有對應解法,別亂套。
  2. 注意力吃記憶體 → Flash Attention。標準注意力要具體化整個 N×N 矩陣,記憶體 O(N²);Flash Attention 用三招繞開:
    • Tiling:把 Q/K/V 切成小塊放進 GPU 的 SRAM 分塊算,不寫回完整矩陣
    • Recomputation:反向傳播時重算而不是存下中間結果,用算力換記憶體
    • Kernel Fusion:把多個運算融成單一 kernel,減少記憶體來回搬運
  3. 重複計算 → KV Cache。把已生成 token 的 key/value 存起來,下一步只算新 token。代價是快取本身佔記憶體,且會隨序列長度成長,需要管理策略。
  4. 逐字生成太慢 → Speculative Decoding。用一個小的 draft 模型一次猜好幾個 token,再讓大模型平行驗證:猜對就一次收好幾個,猜錯就退回。品質不變,速度變快。
  5. 這三者可以疊加,也可以再疊上量化(見 工具-模型量化格式選擇)——量化省記憶體,這裡省時間。

🧪 我實際套用的紀錄

  • 2026-08-01:從 LLM Course 收錄,尚未實際套用。

⚠️ 注意 / 什麼時候不適用

  • 沒量過就別優化。先確認慢在注意力、在快取、還是在逐字生成,否則做白工。
  • Speculative Decoding 的收益取決於 draft 模型猜中率,猜太爛時反而多花一次驗證。
  • KV Cache 是拿記憶體換速度,長上下文情境下它自己就可能變成新的記憶體瓶頸。

🔗 相關工具

⚙️ 跑得動、跑得快

🎯 什麼情境該想到我

當 LLM 功能要接觸到你無法控制的輸入——外部使用者、爬來的網頁、RAG 檢索到的文件——上線前需要盤點攻擊面的時候。

⚙️ 怎麼用(步驟 / 公式)

  1. 盤點提示注入的四種形態

    • 直接注入:使用者在輸入裡直接下指令覆蓋系統提示
    • 間接注入:惡意指令藏在被檢索或被讀入的文件裡(RAG 情境最危險,因為輸入不是使用者打的)
    • 分隔符攻擊:偽造分隔記號讓模型誤判哪裡是指令、哪裡是資料
    • 角色混淆:誘導模型切換身分或人格,繞過原本的約束
  2. 盤點外洩向量

    向量洩漏什麼
    系統提示外洩你的 prompt 設計與內部規則
    訓練資料萃取訓練語料裡的敏感內容
    上下文外洩同一對話中其他來源的資料
    設定曝光模型參數、工具清單、後端結構
  3. 區分越獄與注入:越獄針對的是安全護欄(誘導產生有害內容),提示注入針對的是指令優先權(讓模型聽攻擊者而不是你)。防法不同,不要混為一談。

  4. 別忘了訓練期攻擊:資料下毒與後門,是在模型還沒上線前就被埋進去的。

  5. 用縱深防禦,不要押單一措施:輸入驗證與淨化 → 系統提示加固 → 輸出過濾 → 上線前對抗性測試(red teaming)→ 上線後監控異常模式。

🧪 我實際套用的紀錄

  • 2026-08-01:從 LLM Course 收錄,尚未實際套用。

⚠️ 注意 / 什麼時候不適用

  • 沒有任何單一防護能擋下所有注入,把安全押在「我的系統提示寫得很嚴」上是最常見的誤判。
  • 純內部、輸入完全可控的場景,做到基本輸出檢查即可,不必上全套。
  • 過度過濾會犧牲可用性,防護強度要對應實際暴露面。

🔗 相關工具

🛡 上線安全

🎯 什麼情境該想到我

當提示工程與 RAG 都試過還不夠,開始考慮「要不要微調一個模型」時。

⚙️ 怎麼用(先分清問題屬於哪一類)

  • 缺「知識/事實」 → 用 RAG(換文件即可更新,別微調)。
  • 缺「行為/風格/格式」(要固定語氣、特定輸出樣式、遵循領域慣例)→ 微調較合適。
  • 順序:提示工程 → RAG → 微調。越後面越貴、越慢、越難維護。
  • 微調前提:要有足量、高品質的標註資料 + 可靠的 工具-AI系統評估 來證明它真的更好。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 微調不會「教模型新事實」得可靠(仍會幻覺);事實類需求優先 RAG。微調也會綁死模型版本、增加維運負擔。

🔗 相關工具

  • 工具-提示工程 —— 三段順序的第一段,成本最低;多數「模型不聽話」的問題到這裡就解決了,不必走到微調
  • 工具-RAG檢索增強生成 —— 判定屬於「缺知識/事實」時的正解:換文件就能更新,別為了灌事實去微調
  • 工具-AI系統評估 —— 微調的硬前提,沒有可靠評估集就無法證明微調後真的比較好,只是換個貴的方式瞎調
  • 工具-LLM微調實作路線 —— 判定「該微調」之後的下一步:Full/LoRA/QLoRA 怎麼選、要多少顯存

🎯 什麼情境該想到我

當你「改了 prompt/模型/RAG,卻不知道到底變好還變壞」——這是 AI 工程最核心也最被低估的能力。

⚙️ 怎麼用

  1. 先建一組評估集:代表性的輸入 + 你要的判準(正確性、相關性、格式、無害…)。
  2. 選評估方法
    • 有標準答案 → 用自動指標(精確比對、相似度)。
    • 開放式輸出LLM-as-judge(用另一個模型當評審)+ 人工抽檢校準。
  3. 每次改動都跑同一評估集,比較分數再決定要不要採用(別憑一兩個例子的感覺)。
  4. 上線後持續監控:抽樣真實流量做線上評估,抓退化。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • LLM-as-judge 本身也有偏誤,要用人工樣本校準它;沒有評估的迭代=盲調。

🔗 相關工具

🔗 銜接《AI工程》

LLM Course 課程文件

mlabonne/llm-course

Link to original

🎯 為什麼存這套文件 / 未來想拿它做什麼

  • 手上已有《AI工程》的應用層工具卡,但訓練與部署這一段是空白——這份文件正好補上 SFT/對齊/量化/推論最佳化。
  • 要決定「微調還是 RAG」之後,如果選了微調,需要一條具體可走的實作路線與框架選擇。
  • 想在自己機器上跑大模型時,用它的量化對照表估算硬體需求。
  • 上線前的安全盤點:它的攻擊面分類比我原本零散的印象完整。

🧰 這份文件給我的工具(連到 tools/)

🗂 文件涵蓋範圍(已收錄 32 頁,皆可點入原文)

總覽

🧩 LLM Fundamentals(選修,有底子可跳過)

🧑‍🔬 The LLM Scientist(核心 8 題)

👷 The LLM Engineer(核心 8 題)

🧰 Practical Resources

✨ 關鍵重點

  • SFT 只是「重新啟用」預訓練裡已有的知識,教不了模型全新的領域——想灌新知識該走預訓練或 RAG。這句話直接改寫了我對微調的期待值。
  • 資料品質勝過超參數調整:微調成敗的主要變數在資料集,不在 learning rate。
  • 後訓練是有順序的兩段:先 SFT 讓模型會聽指令,再做偏好對齊調語氣與品質;順序顛倒沒有意義。
  • 偏好對齊的四個選項按成本排列:ORPO(低)→ DPO(低—中)→ GRPO(中—高)→ PPO(高,需獎勵模型)。算力有限就走 DPO/ORPO。
  • 量化的品質損失有量級可循:INT8 約 1–2%、INT4 約 3–5%、INT2 就掉到 10–15%——2-bit 通常已不堪用。
  • 推論慢有三種不同的病因(注意力平方成長/重複計算/逐字生成),分別對應 Flash Attention/KV Cache/Speculative Decoding,不能亂套。
  • 提示注入最危險的形態是「間接注入」——惡意指令藏在 RAG 檢索到的文件裡,使用者根本沒打那句話。
  • 這個倉庫刻意不放可執行程式碼,價值在於把散落的外部資源組織成有相依關係的學習路徑。

💬 原文摘錄

  • 「Fine-tuning reactivates knowledge already present in the base model rather than teaching entirely new domains.」
  • Data quality matters more than hyperparameter tuning for successful fine-tuning.」
  • 「QLoRA reduces memory usage by up to 33% compared to LoRA, making it particularly useful when GPU memory is constrained.」
  • 「Q4_K_M … offers the best quality/size balance for most use cases.」
  • 「Indirect injection: malicious instructions embedded in retrieved documents.」
  • 「Standard attention mechanisms require O(N²) memory relative to sequence length.」

🔗 相關

  • 工具-微調與RAG的取捨(《AI工程》)——這份文件接在那個決策的「選了微調」分支之後,補上具體怎麼做
  • 工具-AI系統評估(《AI工程》)——微調/對齊/量化每一步的成效都得靠評估集驗收,是貫穿全程的驗收關卡
  • 工具-RAG檢索增強生成(《AI工程》)——文件的 Engineer 路徑同樣以 RAG 為核心,兩邊可互相對照補完
  • MCP 官方文件——同屬 LLM 應用層的外部文件,MCP 管「怎麼安全接工具」,這份管「模型本身怎麼練與怎麼跑」