給一般民眾 CME 章節
大型語言模型訓練
Stanford CME295 Lecture 4 - LLM Training
Key Takeaways · 重點摘要
- LLM 訓練沿用 transfer learning:先用大量資料預訓練,學到語言與程式碼的統計結構,再把預訓練權重微調到特定任務或助理行為。
- 預訓練的核心目標是 next-token prediction;資料可包含 Common Crawl、Wikipedia、Reddit、GitHub、Stack Overflow 與多語言文字。GPT-3 約用 300 billion tokens;Llama 3 約用 15 trillion tokens。
- FLOPs 是浮點運算量;FLOPS 是每秒浮點運算速度。LLM 預訓練常以約 $10^{25}$ FLOPs 量級描述,並大致受 token 數與參數數量共同影響。
- Scaling laws 顯示,更多 compute、更多資料與更大模型通常改善 next-token prediction。Chinchilla law 的經驗關係指出,訓練 token 數約為參數數量 20 倍時,compute 使用較接近最適。
- 預訓練成本高,常以數百萬至數千萬美元量級起跳,且會帶來時間與環境成本;base model 的知識只到訓練資料切斷日,形成 knowledge cutoff。
- 訓練時 GPU 記憶體需存放權重、activations、gradients、optimizer states。資料平行化、ZeRO 與模型平行化用不同方式把資料、狀態或模型計算分散到多張 GPU。
- FlashAttention 的重點不是近似 attention,而是用 tiling 把小區塊放到快速 SRAM 內完成計算,減少對 HBM 的讀寫;它也支援 backward pass 的 activation recomputation,通常同時節省記憶體與時間。
- Quantization 降低數值精度以節省記憶體並提高硬體速度;mixed precision training 通常保留 FP32 權重與權重更新,用 FP16 執行 forward/backward。
- SFT 以 input-output pair 監督模型,讓預訓練模型從「延續文字」轉成「依指令回應」。SFT 的 loss 通常從 output token 開始,不在固定 input 上計算。
- Instruction tuning 是 SFT 的子類,資料包含故事、詩、清單、解釋、數學、證明、程式碼與 safety 行為;早期多由人工撰寫,近年也常由既有 LLM 生成後再經人工或 LLM 檢查。
- SFT 資料量遠小於預訓練資料,但品質與 prompt distribution 很重要。GPT-3 instruction tuning 約 13K examples;Llama 3 約 10 million examples。
- 模型評估不能只看單一分數。MMLU、GSM8K、程式碼與推理 benchmark 可量化能力,但若模型曾被訓練在 test task 上,跨模型比較會失真。
- Chatbot Arena 以使用者兩兩偏好建立排名,但有 early comparison noise、可能被模型身分辨識干擾、使用者非專家、emoji 偏好差異與 safety refusal 被低估等問題。
- Alignment 在本課定義為 pre-training 之後的 fine tuning 與 preference tuning;mid-training 則是新近出現、介於 pre-training 與 fine tuning 之間的階段。
- LoRA 凍結預訓練權重 $W_0$,只訓練低秩矩陣 $B$ 與 $A$ 的乘積,用少量參數表達 task-specific update;rank $r$ 常很小,rank 4 是常見選擇。
- QLoRA 將凍結的 base weights 量化為 NF4,並以 BF16 訓練 LoRA 權重;NF4 假設權重近似常態分布並用 quantile 切分,課中提到可帶來約 16 倍 VRAM 節省。