Stanford CS336 導讀:講義是跑得起來的 Python,作業從第二份開始要自己付 GPU 的錢
CS336 的十七堂正課裡,只有九堂是可以執行的 Python 程式,另外八堂是 PDF 投影片——分界線剛好是兩位授課者。第一份作業的講義有八個「低資源提示」教你怎麼在筆電上做完,第二到第五份一個都沒有。課程頁自己列了 B200 的每小時單價,作業講義自己列了每題要幾個 B200 小時。
逐講讀 Stanford CS336:從 tokenizer、資料與 scaling,到訓練、平行化、評估與 alignment,拆開語言模型的完整製作流程。
CS336 的十七堂正課裡,只有九堂是可以執行的 Python 程式,另外八堂是 PDF 投影片——分界線剛好是兩位授課者。第一份作業的講義有八個「低資源提示」教你怎麼在筆電上做完,第二到第五份一個都沒有。課程頁自己列了 B200 的每小時單價,作業講義自己列了每題要幾個 B200 小時。
CS336 第一講不把「從零打造語言模型」理解成重做所有舊技術,而是先區分 mechanics、mindset 與 intuitions,再用 BPE 示範如何把原始位元組轉成可訓練的 token。
第二講把模型訓練還原成 tensor、FLOPs、bytes 與時間:用 einops 管維度,以 arithmetic intensity 和 roofline 判斷瓶頸,再用 gradient accumulation 與 activation checkpointing 交換運算和記憶體。
第三講比較大量現代 LLM 後得到的不是一張最佳架構配方,而是一組保守共識:pre-norm、RMSNorm、無 bias、SwiGLU、RoPE,以及少數值得偏離預設的推論與穩定性設計。
第四講沿著兩種稀疏化拆解現代 LLM:linear/recurrent attention 減少序列維度成本,MoE 讓每個 token 只啟用部分參數;兩者都把理論省下的 FLOPs 換成 routing、平衡與通訊問題。
第五講從 SM、warp 與記憶體階層解釋 GPU,再用低精度、fusion、recomputation、coalescing 與 tiling 統一常見優化;FlashAttention 正是這些原則在 attention 上的組合。
第六講把 GPU 原理落到 kernel:benchmark 看不同尺寸如何縮放,profiler 看實際呼叫與時間,再以 Triton 實作 GeLU、softmax、reduction 與 tiled matmul;快的前提是先量對。
第七講不從 FSDP API 開始,而是用 broadcast、all-reduce、all-gather、reduce-scatter 與 all-to-all 建立通訊語言,再親手組出 data、tensor 與 pipeline parallelism。
第八講把平行化從原語提升到系統設計:ZeRO 逐階切 optimizer、gradient 與 parameter,TP/PP/SP/EP 再分別切 width、depth、sequence 與 experts;組合順序必須服從網路拓撲與動態 activation memory。
第九講從資料量與 error 的 log-log 線性關係出發,說明 scaling law 如何比較架構、optimizer、batch 與模型資料配置;Chinchilla 爭議也示範擬合方法、資料範圍與部署目標會改變答案。
第十講把 prefill 與 decode 分開:前者能平行、常受算力限制,後者逐 token 且常受記憶體頻寬限制;GQA/MLA、量化、speculative decoding、continuous batching 與 PagedAttention 都在改寫這條成本。
第十一講從 MiniCPM、DeepSeek、Qwen 與 Llama 3 的公開 recipe 拆解 scaling 實務:先固定大多數架構比例,再用小規模 sweep 找 learning rate、batch 與 IsoFLOPs 配置;μP 有用,但會被 normalization、optimizer 與 weight decay 破壞。
第十二講從 perplexity 走到考試、聊天偏好、agent、推理與安全評測;每次換 benchmark 都同時換了能力定義、scaffold、judge 與污染風險,因此評分前必須先說清楚到底在比較 method、model 還是完整 system。
第十三講沿著 Common Crawl、Wikipedia、GitHub、arXiv、書籍與歷代開放資料集追溯語料來源;抓得到不等於可合法使用,raw data 也不等於 training data,來源 provenance 必須先於清理與混合。
第十四講把 raw documents 經語言辨識、品質與安全 filtering、exact/near dedup、source mixing 送進訓練;每一步都會改變模型分布,而 synthetic instruction 與 agent trajectories 又把資料管線延伸到可執行環境。
第十五講把 post-training 拆成 imitation 與 optimization:SFT 從 instruction-response data 抽出預訓練已有能力,RLHF 用 pairwise feedback 跨過人類示範與偏好之間的落差;PPO 與 DPO 都逃不掉資料偏差、reward overoptimization 和 mode collapse。
第十六講從 PPO 走到 GRPO 與 RLVR:數學、程式碼和環境結果提供可規模化 reward,避開一般偏好模型的部分 overoptimization;但 group-normalized advantage 會引入難度與長度偏差,rollout infrastructure 也成為主要成本。
第十七講把 CLIP/SigLIP、LLaVA、Qwen-VL 與 Chameleon 排成三條路:對比式 encoder 學語意、vision encoder+projector+LM 做理解、離散 image tokens 做生成;解析度、token budget 與 modality balance 是共同瓶頸。